@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator

Add ApplicaionTransactions and a mutable view policy to Slowvote

Summary: Schema changes to modernize this app.

Test Plan: Ran schema changes, created a new slowvote. No real effects yet.

Reviewers: btrahan

Reviewed By: btrahan

CC: aran

Differential Revision: https://secure.phabricator.com/D6453

+102 -1
+49
resources/sql/patches/20130714.votexactions.sql
··· 1 + CREATE TABLE {$NAMESPACE}_slowvote.slowvote_transaction ( 2 + id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, 3 + phid VARCHAR(64) NOT NULL COLLATE utf8_bin, 4 + authorPHID VARCHAR(64) NOT NULL COLLATE utf8_bin, 5 + objectPHID VARCHAR(64) NOT NULL COLLATE utf8_bin, 6 + viewPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin, 7 + editPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin, 8 + commentPHID VARCHAR(64) COLLATE utf8_bin, 9 + commentVersion INT UNSIGNED NOT NULL, 10 + transactionType VARCHAR(32) NOT NULL COLLATE utf8_bin, 11 + oldValue LONGTEXT NOT NULL COLLATE utf8_bin, 12 + newValue LONGTEXT NOT NULL COLLATE utf8_bin, 13 + contentSource LONGTEXT NOT NULL COLLATE utf8_bin, 14 + metadata LONGTEXT NOT NULL COLLATE utf8_bin, 15 + dateCreated INT UNSIGNED NOT NULL, 16 + dateModified INT UNSIGNED NOT NULL, 17 + 18 + UNIQUE KEY `key_phid` (phid), 19 + KEY `key_object` (objectPHID) 20 + 21 + ) ENGINE=InnoDB, COLLATE utf8_general_ci; 22 + 23 + CREATE TABLE {$NAMESPACE}_slowvote.slowvote_transaction_comment ( 24 + id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, 25 + phid VARCHAR(64) NOT NULL COLLATE utf8_bin, 26 + transactionPHID VARCHAR(64) COLLATE utf8_bin, 27 + authorPHID VARCHAR(64) NOT NULL COLLATE utf8_bin, 28 + viewPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin, 29 + editPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin, 30 + commentVersion INT UNSIGNED NOT NULL, 31 + content LONGTEXT NOT NULL COLLATE utf8_bin, 32 + contentSource LONGTEXT NOT NULL COLLATE utf8_bin, 33 + isDeleted BOOL NOT NULL, 34 + dateCreated INT UNSIGNED NOT NULL, 35 + dateModified INT UNSIGNED NOT NULL, 36 + 37 + UNIQUE KEY `key_phid` (phid), 38 + UNIQUE KEY `key_version` (transactionPHID, commentVersion) 39 + 40 + ) ENGINE=InnoDB, COLLATE utf8_general_ci; 41 + 42 + ALTER TABLE {$NAMESPACE}_slowvote.slowvote_poll 43 + ADD description LONGTEXT NOT NULL COLLATE utf8_general_ci; 44 + 45 + ALTER TABLE {$NAMESPACE}_slowvote.slowvote_poll 46 + ADD viewPolicy VARCHAR(64) NOT NULL COLLATE utf8_bin; 47 + 48 + UPDATE {$NAMESPACE}_slowvote.slowvote_poll 49 + SET viewPolicy = 'users' WHERE viewPolicy = '';
+3
src/applications/slowvote/controller/PhabricatorSlowvoteCreateController.php
··· 26 26 $poll->setShuffle((int)$request->getBool('shuffle', false)); 27 27 $poll->setMethod($request->getInt('method')); 28 28 29 + $poll->setDescription(''); 30 + $poll->setViewPolicy(PhabricatorPolicies::POLICY_USER); 31 + 29 32 if (!strlen($poll->getQuestion())) { 30 33 $e_question = pht('Required'); 31 34 $errors[] = pht('You must ask a poll question.');
+8 -1
src/applications/slowvote/storage/PhabricatorSlowvotePoll.php
··· 14 14 const METHOD_APPROVAL = 1; 15 15 16 16 protected $question; 17 + protected $description; 17 18 protected $authorPHID; 18 19 protected $responseVisibility; 19 20 protected $shuffle; 20 21 protected $method; 22 + protected $viewPolicy; 21 23 22 24 public function getConfiguration() { 23 25 return array( ··· 42 44 } 43 45 44 46 public function getPolicy($capability) { 45 - return PhabricatorPolicies::POLICY_USER; 47 + switch ($capability) { 48 + case PhabricatorPolicyCapability::CAN_VIEW: 49 + return $this->viewPolicy; 50 + case PhabricatorPolicyCapability::CAN_EDIT: 51 + return PhabricatorPolicies::POLICY_NOONE; 52 + } 46 53 } 47 54 48 55 public function hasAutomaticCapability($capability, PhabricatorUser $viewer) {
+27
src/applications/slowvote/storage/PhabricatorSlowvoteTransaction.php
··· 1 + <?php 2 + 3 + final class PhabricatorSlowvoteTransaction 4 + extends PhabricatorApplicationTransaction { 5 + 6 + const TYPE_NAME = 'vote:name'; 7 + const TYPE_DESCRIPTION = 'vote:description'; 8 + const TYPE_OPTION = 'vote:option'; 9 + 10 + public function getApplicationName() { 11 + return 'slowvote'; 12 + } 13 + 14 + public function getApplicationTransactionType() { 15 + return PhabricatorPHIDConstants::PHID_TYPE_POLL; 16 + } 17 + 18 + public function getApplicationTransactionCommentObject() { 19 + return new PhabricatorMacroTransactionComment(); 20 + } 21 + 22 + public function getApplicationObjectTypeName() { 23 + return pht('vote'); 24 + } 25 + 26 + } 27 +
+11
src/applications/slowvote/storage/PhabricatorSlowvoteTransactionComment.php
··· 1 + <?php 2 + 3 + final class PhabricatorSlowvoteTransactionComment 4 + extends PhabricatorApplicationTransactionComment { 5 + 6 + public function getApplicationTransactionObject() { 7 + return new PhabricatorSlowvoteTransaction(); 8 + } 9 + 10 + } 11 +
+4
src/infrastructure/storage/patch/PhabricatorBuiltinPatchList.php
··· 1442 1442 'type' => 'php', 1443 1443 'name' => $this->getPatchPath('20130711.trimrealnames.php'), 1444 1444 ), 1445 + '20130714.votexactions.sql' => array( 1446 + 'type' => 'sql', 1447 + 'name' => $this->getPatchPath('20130714.votexactions.sql'), 1448 + ), 1445 1449 ); 1446 1450 } 1447 1451 }