@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 initial infrastructure for adding ModularTransaction support to Application config changes

Summary: Part of the groundwork for T11476.

Test Plan: ran `./bin/storage upgrade` and observed expected DB tables

Reviewers: epriestley

Reviewed By: epriestley

Subscribers: Korvin

Maniphest Tasks: T11476

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

+106 -1
+19
resources/sql/autopatches/20170418.1.application.01.xaction.sql
··· 1 + CREATE TABLE {$NAMESPACE}_application.application_applicationtransaction ( 2 + id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 3 + phid VARBINARY(64) NOT NULL, 4 + authorPHID VARBINARY(64) NOT NULL, 5 + objectPHID VARBINARY(64) NOT NULL, 6 + viewPolicy VARBINARY(64) NOT NULL, 7 + editPolicy VARBINARY(64) NOT NULL, 8 + commentPHID VARBINARY(64) DEFAULT NULL, 9 + commentVersion INT UNSIGNED NOT NULL, 10 + transactionType VARCHAR(32) COLLATE {$COLLATE_TEXT} NOT NULL, 11 + oldValue LONGTEXT COLLATE {$COLLATE_TEXT} NOT NULL, 12 + newValue LONGTEXT COLLATE {$COLLATE_TEXT} NOT NULL, 13 + contentSource LONGTEXT COLLATE {$COLLATE_TEXT} NOT NULL, 14 + metadata LONGTEXT COLLATE {$COLLATE_TEXT} NOT NULL, 15 + dateCreated INT UNSIGNED NOT NULL, 16 + dateModified INT UNSIGNED NOT NULL, 17 + UNIQUE KEY `key_phid` (`phid`), 18 + KEY `key_object` (`objectPHID`) 19 + ) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT};
+16
resources/sql/autopatches/20170418.1.application.02.edge.sql
··· 1 + CREATE TABLE {$NAMESPACE}_application.edge ( 2 + src VARBINARY(64) NOT NULL, 3 + type INT UNSIGNED NOT NULL, 4 + dst VARBINARY(64) NOT NULL, 5 + dateCreated INT UNSIGNED NOT NULL, 6 + seq INT UNSIGNED NOT NULL, 7 + dataID INT UNSIGNED, 8 + PRIMARY KEY (src, type, dst), 9 + KEY `src` (src, type, dateCreated, seq), 10 + UNIQUE KEY `key_dst` (dst, type, src) 11 + ) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT}; 12 + 13 + CREATE TABLE {$NAMESPACE}_application.edgedata ( 14 + id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, 15 + data LONGTEXT NOT NULL COLLATE {$COLLATE_TEXT} 16 + ) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT};
+24 -1
src/applications/base/PhabricatorApplication.php
··· 10 10 */ 11 11 abstract class PhabricatorApplication 12 12 extends Phobject 13 - implements PhabricatorPolicyInterface { 13 + implements 14 + PhabricatorPolicyInterface, 15 + PhabricatorApplicationTransactionInterface { 14 16 15 17 const GROUP_CORE = 'core'; 16 18 const GROUP_UTILITIES = 'util'; ··· 613 615 ); 614 616 } 615 617 618 + /* -( PhabricatorApplicationTransactionInterface )------------------------- */ 619 + 620 + 621 + public function getApplicationTransactionEditor() { 622 + return new PhabricatorApplicationEditor(); 623 + } 624 + 625 + public function getApplicationTransactionObject() { 626 + return $this; 627 + } 628 + 629 + public function getApplicationTransactionTemplate() { 630 + return new PhabricatorApplicationApplicationTransaction(); 631 + } 632 + 633 + public function willRenderTimeline( 634 + PhabricatorApplicationTransactionView $timeline, 635 + AphrontRequest $request) { 636 + 637 + return $timeline; 638 + } 616 639 }
+10
src/applications/meta/query/PhabricatorApplicationApplicationTransactionQuery.php
··· 1 + <?php 2 + 3 + final class PhabricatorApplicationApplicationTransactionQuery 4 + extends PhabricatorApplicationTransactionQuery { 5 + 6 + public function getTemplateApplicationTransaction() { 7 + return new PhabricatorApplicationApplicationTransaction(); 8 + } 9 + 10 + }
+10
src/applications/meta/storage/PhabricatorApplicationApplicationTransactionComment.php
··· 1 + <?php 2 + 3 + final class PhabricatorApplicationApplicationTransactionComment 4 + extends PhabricatorApplicationTransactionComment { 5 + 6 + public function getApplicationTransactionObject() { 7 + return new PhabricatorApplicationApplicationTransaction(); 8 + } 9 + 10 + }
+22
src/applications/meta/xactions/PhabricatorApplicationApplicationTransaction.php
··· 1 + <?php 2 + 3 + final class PhabricatorApplicationApplicationTransaction 4 + extends PhabricatorModularTransaction { 5 + 6 + public function getApplicationName() { 7 + return 'application'; 8 + } 9 + 10 + public function getApplicationTransactionType() { 11 + return PhabricatorApplicationApplicationPHIDType::TYPECONST; 12 + } 13 + 14 + public function getApplicationTransactionCommentObject() { 15 + return new PhabricatorApplicationTransactionComment(); 16 + } 17 + 18 + public function getBaseTransactionClass() { 19 + return 'PhabricatorApplicationTransactionType'; 20 + } 21 + 22 + }
+4
src/applications/meta/xactions/PhabricatorApplicationTransactionType.php
··· 1 + <?php 2 + 3 + abstract class PhabricatorApplicationTransactionType 4 + extends PhabricatorModularTransactionType {}
+1
src/infrastructure/storage/patch/PhabricatorBuiltinPatchList.php
··· 112 112 'db.phurl' => array(), 113 113 'db.badges' => array(), 114 114 'db.packages' => array(), 115 + 'db.application' => array(), 115 116 '0000.legacy.sql' => array( 116 117 'legacy' => 0, 117 118 ),