diff --git a/resources/sql/autopatches/20170418.1.application.01.xaction.sql b/resources/sql/autopatches/20170418.1.application.01.xaction.sql new file mode 100644 --- /dev/null +++ b/resources/sql/autopatches/20170418.1.application.01.xaction.sql @@ -0,0 +1,19 @@ +CREATE TABLE {$NAMESPACE}_application.application_applicationtransaction ( + id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, + phid VARBINARY(64) NOT NULL, + authorPHID VARBINARY(64) NOT NULL, + objectPHID VARBINARY(64) NOT NULL, + viewPolicy VARBINARY(64) NOT NULL, + editPolicy VARBINARY(64) NOT NULL, + commentPHID VARBINARY(64) DEFAULT NULL, + commentVersion INT UNSIGNED NOT NULL, + transactionType VARCHAR(32) COLLATE {$COLLATE_TEXT} NOT NULL, + oldValue LONGTEXT COLLATE {$COLLATE_TEXT} NOT NULL, + newValue LONGTEXT COLLATE {$COLLATE_TEXT} NOT NULL, + contentSource LONGTEXT COLLATE {$COLLATE_TEXT} NOT NULL, + metadata LONGTEXT COLLATE {$COLLATE_TEXT} NOT NULL, + dateCreated INT UNSIGNED NOT NULL, + dateModified INT UNSIGNED NOT NULL, + UNIQUE KEY `key_phid` (`phid`), + KEY `key_object` (`objectPHID`) +) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT}; diff --git a/resources/sql/autopatches/20170418.1.application.02.edge.sql b/resources/sql/autopatches/20170418.1.application.02.edge.sql new file mode 100644 --- /dev/null +++ b/resources/sql/autopatches/20170418.1.application.02.edge.sql @@ -0,0 +1,16 @@ +CREATE TABLE {$NAMESPACE}_application.edge ( + src VARBINARY(64) NOT NULL, + type INT UNSIGNED NOT NULL, + dst VARBINARY(64) NOT NULL, + dateCreated INT UNSIGNED NOT NULL, + seq INT UNSIGNED NOT NULL, + dataID INT UNSIGNED, + PRIMARY KEY (src, type, dst), + KEY `src` (src, type, dateCreated, seq), + UNIQUE KEY `key_dst` (dst, type, src) +) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT}; + +CREATE TABLE {$NAMESPACE}_application.edgedata ( + id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, + data LONGTEXT NOT NULL COLLATE {$COLLATE_TEXT} +) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT}; diff --git a/src/applications/base/PhabricatorApplication.php b/src/applications/base/PhabricatorApplication.php --- a/src/applications/base/PhabricatorApplication.php +++ b/src/applications/base/PhabricatorApplication.php @@ -10,7 +10,9 @@ */ abstract class PhabricatorApplication extends Phobject - implements PhabricatorPolicyInterface { + implements + PhabricatorPolicyInterface, + PhabricatorApplicationTransactionInterface { const GROUP_CORE = 'core'; const GROUP_UTILITIES = 'util'; @@ -613,4 +615,25 @@ ); } +/* -( PhabricatorApplicationTransactionInterface )------------------------- */ + + + public function getApplicationTransactionEditor() { + return new PhabricatorApplicationEditor(); + } + + public function getApplicationTransactionObject() { + return $this; + } + + public function getApplicationTransactionTemplate() { + return new PhabricatorApplicationApplicationTransaction(); + } + + public function willRenderTimeline( + PhabricatorApplicationTransactionView $timeline, + AphrontRequest $request) { + + return $timeline; + } } diff --git a/src/applications/meta/query/PhabricatorApplicationApplicationTransactionQuery.php b/src/applications/meta/query/PhabricatorApplicationApplicationTransactionQuery.php new file mode 100644 --- /dev/null +++ b/src/applications/meta/query/PhabricatorApplicationApplicationTransactionQuery.php @@ -0,0 +1,10 @@ +<?php + +final class PhabricatorApplicationApplicationTransactionQuery + extends PhabricatorApplicationTransactionQuery { + + public function getTemplateApplicationTransaction() { + return new PhabricatorApplicationApplicationTransaction(); + } + +} diff --git a/src/applications/meta/storage/PhabricatorApplicationApplicationTransactionComment.php b/src/applications/meta/storage/PhabricatorApplicationApplicationTransactionComment.php new file mode 100644 --- /dev/null +++ b/src/applications/meta/storage/PhabricatorApplicationApplicationTransactionComment.php @@ -0,0 +1,10 @@ +<?php + +final class PhabricatorApplicationApplicationTransactionComment + extends PhabricatorApplicationTransactionComment { + + public function getApplicationTransactionObject() { + return new PhabricatorApplicationApplicationTransaction(); + } + +} diff --git a/src/applications/meta/xactions/PhabricatorApplicationApplicationTransaction.php b/src/applications/meta/xactions/PhabricatorApplicationApplicationTransaction.php new file mode 100644 --- /dev/null +++ b/src/applications/meta/xactions/PhabricatorApplicationApplicationTransaction.php @@ -0,0 +1,22 @@ +<?php + +final class PhabricatorApplicationApplicationTransaction + extends PhabricatorModularTransaction { + + public function getApplicationName() { + return 'application'; + } + + public function getApplicationTransactionType() { + return PhabricatorApplicationApplicationPHIDType::TYPECONST; + } + + public function getApplicationTransactionCommentObject() { + return new PhabricatorApplicationTransactionComment(); + } + + public function getBaseTransactionClass() { + return 'PhabricatorApplicationTransactionType'; + } + +} diff --git a/src/applications/meta/xactions/PhabricatorApplicationTransactionType.php b/src/applications/meta/xactions/PhabricatorApplicationTransactionType.php new file mode 100644 --- /dev/null +++ b/src/applications/meta/xactions/PhabricatorApplicationTransactionType.php @@ -0,0 +1,4 @@ +<?php + +abstract class PhabricatorApplicationTransactionType + extends PhabricatorModularTransactionType {} diff --git a/src/infrastructure/storage/patch/PhabricatorBuiltinPatchList.php b/src/infrastructure/storage/patch/PhabricatorBuiltinPatchList.php --- a/src/infrastructure/storage/patch/PhabricatorBuiltinPatchList.php +++ b/src/infrastructure/storage/patch/PhabricatorBuiltinPatchList.php @@ -112,6 +112,7 @@ 'db.phurl' => array(), 'db.badges' => array(), 'db.packages' => array(), + 'db.application' => array(), '0000.legacy.sql' => array( 'legacy' => 0, ),