Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F18858044
D13601.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
49 KB
Referenced Files
None
Subscribers
None
D13601.diff
View Options
diff --git a/resources/sql/autopatches/20150708.herald.3.sql b/resources/sql/autopatches/20150708.herald.3.sql
new file mode 100644
--- /dev/null
+++ b/resources/sql/autopatches/20150708.herald.3.sql
@@ -0,0 +1,146 @@
+UPDATE {$NAMESPACE}_herald.herald_condition c
+ JOIN {$NAMESPACE}_herald.herald_rule r
+ ON c.ruleID = r.id
+ SET c.fieldName = 'diffusion.pre.commit.message'
+ WHERE r.contentType = 'HeraldPreCommitContentAdapter'
+ AND c.fieldName = 'body';
+
+UPDATE {$NAMESPACE}_herald.herald_condition c
+ JOIN {$NAMESPACE}_herald.herald_rule r
+ ON c.ruleID = r.id
+ SET c.fieldName = 'diffusion.pre.commit.author'
+ WHERE r.contentType = 'HeraldPreCommitContentAdapter'
+ AND c.fieldName = 'author';
+
+UPDATE {$NAMESPACE}_herald.herald_condition c
+ JOIN {$NAMESPACE}_herald.herald_rule r
+ ON c.ruleID = r.id
+ SET c.fieldName = 'diffusion.pre.commit.author.raw'
+ WHERE r.contentType = 'HeraldPreCommitContentAdapter'
+ AND c.fieldName = 'author-raw';
+
+UPDATE {$NAMESPACE}_herald.herald_condition c
+ JOIN {$NAMESPACE}_herald.herald_rule r
+ ON c.ruleID = r.id
+ SET c.fieldName = 'diffusion.pre.commit.committer'
+ WHERE r.contentType = 'HeraldPreCommitContentAdapter'
+ AND c.fieldName = 'committer';
+
+UPDATE {$NAMESPACE}_herald.herald_condition c
+ JOIN {$NAMESPACE}_herald.herald_rule r
+ ON c.ruleID = r.id
+ SET c.fieldName = 'diffusion.pre.commit.committer.raw'
+ WHERE r.contentType = 'HeraldPreCommitContentAdapter'
+ AND c.fieldName = 'committer-raw';
+
+UPDATE {$NAMESPACE}_herald.herald_condition c
+ JOIN {$NAMESPACE}_herald.herald_rule r
+ ON c.ruleID = r.id
+ SET c.fieldName = 'diffusion.pre.commit.branches'
+ WHERE r.contentType = 'HeraldPreCommitContentAdapter'
+ AND c.fieldName = 'branches';
+
+UPDATE {$NAMESPACE}_herald.herald_condition c
+ JOIN {$NAMESPACE}_herald.herald_rule r
+ ON c.ruleID = r.id
+ SET c.fieldName = 'diffusion.pre.content.pusher'
+ WHERE r.contentType = 'HeraldPreCommitContentAdapter'
+ AND c.fieldName = 'pusher';
+
+UPDATE {$NAMESPACE}_herald.herald_condition c
+ JOIN {$NAMESPACE}_herald.herald_rule r
+ ON c.ruleID = r.id
+ SET c.fieldName = 'diffusion.pre.content.pusher.projects'
+ WHERE r.contentType = 'HeraldPreCommitContentAdapter'
+ AND c.fieldName = 'pusher-projects';
+
+UPDATE {$NAMESPACE}_herald.herald_condition c
+ JOIN {$NAMESPACE}_herald.herald_rule r
+ ON c.ruleID = r.id
+ SET c.fieldName = 'diffusion.pre.content.repository'
+ WHERE r.contentType = 'HeraldPreCommitContentAdapter'
+ AND c.fieldName = 'repository';
+
+UPDATE {$NAMESPACE}_herald.herald_condition c
+ JOIN {$NAMESPACE}_herald.herald_rule r
+ ON c.ruleID = r.id
+ SET c.fieldName = 'diffusion.pre.content.repository.projects'
+ WHERE r.contentType = 'HeraldPreCommitContentAdapter'
+ AND c.fieldName = 'repository-projects';
+
+UPDATE {$NAMESPACE}_herald.herald_condition c
+ JOIN {$NAMESPACE}_herald.herald_rule r
+ ON c.ruleID = r.id
+ SET c.fieldName = 'diffusion.pre.content.pusher.is-committer'
+ WHERE r.contentType = 'HeraldPreCommitContentAdapter'
+ AND c.fieldName = 'pusher-is-committer';
+
+UPDATE {$NAMESPACE}_herald.herald_condition c
+ JOIN {$NAMESPACE}_herald.herald_rule r
+ ON c.ruleID = r.id
+ SET c.fieldName = 'diffusion.pre.content.revision'
+ WHERE r.contentType = 'HeraldPreCommitContentAdapter'
+ AND c.fieldName = 'differential-revision';
+
+UPDATE {$NAMESPACE}_herald.herald_condition c
+ JOIN {$NAMESPACE}_herald.herald_rule r
+ ON c.ruleID = r.id
+ SET c.fieldName = 'diffusion.pre.content.revision.accepted'
+ WHERE r.contentType = 'HeraldPreCommitContentAdapter'
+ AND c.fieldName = 'differential-accepted';
+
+UPDATE {$NAMESPACE}_herald.herald_condition c
+ JOIN {$NAMESPACE}_herald.herald_rule r
+ ON c.ruleID = r.id
+ SET c.fieldName = 'diffusion.pre.content.revision.reviewers'
+ WHERE r.contentType = 'HeraldPreCommitContentAdapter'
+ AND c.fieldName = 'differential-reviewers';
+
+UPDATE {$NAMESPACE}_herald.herald_condition c
+ JOIN {$NAMESPACE}_herald.herald_rule r
+ ON c.ruleID = r.id
+ SET c.fieldName = 'diffusion.pre.content.revision.subscribers'
+ WHERE r.contentType = 'HeraldPreCommitContentAdapter'
+ AND c.fieldName = 'differential-ccs';
+
+UPDATE {$NAMESPACE}_herald.herald_condition c
+ JOIN {$NAMESPACE}_herald.herald_rule r
+ ON c.ruleID = r.id
+ SET c.fieldName = 'diffusion.pre.content.diff.enormous'
+ WHERE r.contentType = 'HeraldPreCommitContentAdapter'
+ AND c.fieldName = 'diff-enormous';
+
+UPDATE {$NAMESPACE}_herald.herald_condition c
+ JOIN {$NAMESPACE}_herald.herald_rule r
+ ON c.ruleID = r.id
+ SET c.fieldName = 'diffusion.pre.commit.affected'
+ WHERE r.contentType = 'HeraldPreCommitContentAdapter'
+ AND c.fieldName = 'diff-file';
+
+UPDATE {$NAMESPACE}_herald.herald_condition c
+ JOIN {$NAMESPACE}_herald.herald_rule r
+ ON c.ruleID = r.id
+ SET c.fieldName = 'diffusion.pre.commit.diff.content'
+ WHERE r.contentType = 'HeraldPreCommitContentAdapter'
+ AND c.fieldName = 'diff-content';
+
+UPDATE {$NAMESPACE}_herald.herald_condition c
+ JOIN {$NAMESPACE}_herald.herald_rule r
+ ON c.ruleID = r.id
+ SET c.fieldName = 'diffusion.pre.commit.diff.new'
+ WHERE r.contentType = 'HeraldPreCommitContentAdapter'
+ AND c.fieldName = 'diff-added-content';
+
+UPDATE {$NAMESPACE}_herald.herald_condition c
+ JOIN {$NAMESPACE}_herald.herald_rule r
+ ON c.ruleID = r.id
+ SET c.fieldName = 'diffusion.pre.commit.diff.old'
+ WHERE r.contentType = 'HeraldPreCommitContentAdapter'
+ AND c.fieldName = 'diff-removed-content';
+
+UPDATE {$NAMESPACE}_herald.herald_condition c
+ JOIN {$NAMESPACE}_herald.herald_rule r
+ ON c.ruleID = r.id
+ SET c.fieldName = 'diffusion.pre.content.merge'
+ WHERE r.contentType = 'HeraldPreCommitContentAdapter'
+ AND c.fieldName = 'is-merge-commit';
diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -616,6 +616,28 @@
'DiffusionPathTreeController' => 'applications/diffusion/controller/DiffusionPathTreeController.php',
'DiffusionPathValidateController' => 'applications/diffusion/controller/DiffusionPathValidateController.php',
'DiffusionPhpExternalSymbolsSource' => 'applications/diffusion/symbol/DiffusionPhpExternalSymbolsSource.php',
+ 'DiffusionPreCommitContentAffectedFilesHeraldField' => 'applications/diffusion/herald/DiffusionPreCommitContentAffectedFilesHeraldField.php',
+ 'DiffusionPreCommitContentAuthorHeraldField' => 'applications/diffusion/herald/DiffusionPreCommitContentAuthorHeraldField.php',
+ 'DiffusionPreCommitContentAuthorRawHeraldField' => 'applications/diffusion/herald/DiffusionPreCommitContentAuthorRawHeraldField.php',
+ 'DiffusionPreCommitContentBranchesHeraldField' => 'applications/diffusion/herald/DiffusionPreCommitContentBranchesHeraldField.php',
+ 'DiffusionPreCommitContentCommitterHeraldField' => 'applications/diffusion/herald/DiffusionPreCommitContentCommitterHeraldField.php',
+ 'DiffusionPreCommitContentCommitterRawHeraldField' => 'applications/diffusion/herald/DiffusionPreCommitContentCommitterRawHeraldField.php',
+ 'DiffusionPreCommitContentDiffContentAddedHeraldField' => 'applications/diffusion/herald/DiffusionPreCommitContentDiffContentAddedHeraldField.php',
+ 'DiffusionPreCommitContentDiffContentHeraldField' => 'applications/diffusion/herald/DiffusionPreCommitContentDiffContentHeraldField.php',
+ 'DiffusionPreCommitContentDiffContentRemovedHeraldField' => 'applications/diffusion/herald/DiffusionPreCommitContentDiffContentRemovedHeraldField.php',
+ 'DiffusionPreCommitContentDiffEnormousHeraldField' => 'applications/diffusion/herald/DiffusionPreCommitContentDiffEnormousHeraldField.php',
+ 'DiffusionPreCommitContentHeraldField' => 'applications/diffusion/herald/DiffusionPreCommitContentHeraldField.php',
+ 'DiffusionPreCommitContentMergeHeraldField' => 'applications/diffusion/herald/DiffusionPreCommitContentMergeHeraldField.php',
+ 'DiffusionPreCommitContentMessageHeraldField' => 'applications/diffusion/herald/DiffusionPreCommitContentMessageHeraldField.php',
+ 'DiffusionPreCommitContentPusherHeraldField' => 'applications/diffusion/herald/DiffusionPreCommitContentPusherHeraldField.php',
+ 'DiffusionPreCommitContentPusherIsCommitterHeraldField' => 'applications/diffusion/herald/DiffusionPreCommitContentPusherIsCommitterHeraldField.php',
+ 'DiffusionPreCommitContentPusherProjectsHeraldField' => 'applications/diffusion/herald/DiffusionPreCommitContentPusherProjectsHeraldField.php',
+ 'DiffusionPreCommitContentRepositoryHeraldField' => 'applications/diffusion/herald/DiffusionPreCommitContentRepositoryHeraldField.php',
+ 'DiffusionPreCommitContentRepositoryProjectsHeraldField' => 'applications/diffusion/herald/DiffusionPreCommitContentRepositoryProjectsHeraldField.php',
+ 'DiffusionPreCommitContentRevisionAcceptedHeraldField' => 'applications/diffusion/herald/DiffusionPreCommitContentRevisionAcceptedHeraldField.php',
+ 'DiffusionPreCommitContentRevisionHeraldField' => 'applications/diffusion/herald/DiffusionPreCommitContentRevisionHeraldField.php',
+ 'DiffusionPreCommitContentRevisionReviewersHeraldField' => 'applications/diffusion/herald/DiffusionPreCommitContentRevisionReviewersHeraldField.php',
+ 'DiffusionPreCommitContentRevisionSubscribersHeraldField' => 'applications/diffusion/herald/DiffusionPreCommitContentRevisionSubscribersHeraldField.php',
'DiffusionPreCommitRefChangeHeraldField' => 'applications/diffusion/herald/DiffusionPreCommitRefChangeHeraldField.php',
'DiffusionPreCommitRefHeraldField' => 'applications/diffusion/herald/DiffusionPreCommitRefHeraldField.php',
'DiffusionPreCommitRefNameHeraldField' => 'applications/diffusion/herald/DiffusionPreCommitRefNameHeraldField.php',
@@ -4107,6 +4129,28 @@
'DiffusionPathTreeController' => 'DiffusionController',
'DiffusionPathValidateController' => 'DiffusionController',
'DiffusionPhpExternalSymbolsSource' => 'DiffusionExternalSymbolsSource',
+ 'DiffusionPreCommitContentAffectedFilesHeraldField' => 'DiffusionPreCommitContentHeraldField',
+ 'DiffusionPreCommitContentAuthorHeraldField' => 'DiffusionPreCommitContentHeraldField',
+ 'DiffusionPreCommitContentAuthorRawHeraldField' => 'DiffusionPreCommitContentHeraldField',
+ 'DiffusionPreCommitContentBranchesHeraldField' => 'DiffusionPreCommitContentHeraldField',
+ 'DiffusionPreCommitContentCommitterHeraldField' => 'DiffusionPreCommitContentHeraldField',
+ 'DiffusionPreCommitContentCommitterRawHeraldField' => 'DiffusionPreCommitContentHeraldField',
+ 'DiffusionPreCommitContentDiffContentAddedHeraldField' => 'DiffusionPreCommitContentHeraldField',
+ 'DiffusionPreCommitContentDiffContentHeraldField' => 'DiffusionPreCommitContentHeraldField',
+ 'DiffusionPreCommitContentDiffContentRemovedHeraldField' => 'DiffusionPreCommitContentHeraldField',
+ 'DiffusionPreCommitContentDiffEnormousHeraldField' => 'DiffusionPreCommitContentHeraldField',
+ 'DiffusionPreCommitContentHeraldField' => 'HeraldField',
+ 'DiffusionPreCommitContentMergeHeraldField' => 'DiffusionPreCommitContentHeraldField',
+ 'DiffusionPreCommitContentMessageHeraldField' => 'DiffusionPreCommitContentHeraldField',
+ 'DiffusionPreCommitContentPusherHeraldField' => 'DiffusionPreCommitContentHeraldField',
+ 'DiffusionPreCommitContentPusherIsCommitterHeraldField' => 'DiffusionPreCommitContentHeraldField',
+ 'DiffusionPreCommitContentPusherProjectsHeraldField' => 'DiffusionPreCommitContentHeraldField',
+ 'DiffusionPreCommitContentRepositoryHeraldField' => 'DiffusionPreCommitContentHeraldField',
+ 'DiffusionPreCommitContentRepositoryProjectsHeraldField' => 'DiffusionPreCommitContentHeraldField',
+ 'DiffusionPreCommitContentRevisionAcceptedHeraldField' => 'DiffusionPreCommitContentHeraldField',
+ 'DiffusionPreCommitContentRevisionHeraldField' => 'DiffusionPreCommitContentHeraldField',
+ 'DiffusionPreCommitContentRevisionReviewersHeraldField' => 'DiffusionPreCommitContentHeraldField',
+ 'DiffusionPreCommitContentRevisionSubscribersHeraldField' => 'DiffusionPreCommitContentHeraldField',
'DiffusionPreCommitRefChangeHeraldField' => 'DiffusionPreCommitRefHeraldField',
'DiffusionPreCommitRefHeraldField' => 'HeraldField',
'DiffusionPreCommitRefNameHeraldField' => 'DiffusionPreCommitRefHeraldField',
diff --git a/src/applications/diffusion/herald/DiffusionPreCommitContentAffectedFilesHeraldField.php b/src/applications/diffusion/herald/DiffusionPreCommitContentAffectedFilesHeraldField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/herald/DiffusionPreCommitContentAffectedFilesHeraldField.php
@@ -0,0 +1,24 @@
+<?php
+
+final class DiffusionPreCommitContentAffectedFilesHeraldField
+ extends DiffusionPreCommitContentHeraldField {
+
+ const FIELDCONST = 'diffusion.pre.commit.affected';
+
+ public function getHeraldFieldName() {
+ return pht('Affected files');
+ }
+
+ public function getHeraldFieldValue($object) {
+ return $this->getAdapter()->getDiffContent('name');
+ }
+
+ protected function getHeraldFieldStandardConditions() {
+ return self::STANDARD_TEXT_LIST;
+ }
+
+ public function getHeraldFieldValueType($condition) {
+ return HeraldAdapter::VALUE_TEXT;
+ }
+
+}
diff --git a/src/applications/diffusion/herald/DiffusionPreCommitContentAuthorHeraldField.php b/src/applications/diffusion/herald/DiffusionPreCommitContentAuthorHeraldField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/herald/DiffusionPreCommitContentAuthorHeraldField.php
@@ -0,0 +1,30 @@
+<?php
+
+final class DiffusionPreCommitContentAuthorHeraldField
+ extends DiffusionPreCommitContentHeraldField {
+
+ const FIELDCONST = 'diffusion.pre.commit.author';
+
+ public function getHeraldFieldName() {
+ return pht('Author');
+ }
+
+ public function getHeraldFieldValue($object) {
+ return $this->getAdapter()->getAuthorPHID();
+ }
+
+ protected function getHeraldFieldStandardConditions() {
+ return self::STANDARD_PHID_NULLABLE;
+ }
+
+ public function getHeraldFieldValueType($condition) {
+ switch ($condition) {
+ case HeraldAdapter::CONDITION_EXISTS:
+ case HeraldAdapter::CONDITION_NOT_EXISTS:
+ return HeraldAdapter::VALUE_NONE;
+ default:
+ return HeraldAdapter::VALUE_USER;
+ }
+ }
+
+}
diff --git a/src/applications/diffusion/herald/DiffusionPreCommitContentAuthorRawHeraldField.php b/src/applications/diffusion/herald/DiffusionPreCommitContentAuthorRawHeraldField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/herald/DiffusionPreCommitContentAuthorRawHeraldField.php
@@ -0,0 +1,24 @@
+<?php
+
+final class DiffusionPreCommitContentAuthorRawHeraldField
+ extends DiffusionPreCommitContentHeraldField {
+
+ const FIELDCONST = 'diffusion.pre.commit.author.raw';
+
+ public function getHeraldFieldName() {
+ return pht('Raw Author');
+ }
+
+ public function getHeraldFieldValue($object) {
+ return $this->getAdapter()->getAuthorRaw();
+ }
+
+ protected function getHeraldFieldStandardConditions() {
+ return self::STANDARD_TEXT;
+ }
+
+ public function getHeraldFieldValueType($condition) {
+ return HeraldAdapter::VALUE_TEXT;
+ }
+
+}
diff --git a/src/applications/diffusion/herald/DiffusionPreCommitContentBranchesHeraldField.php b/src/applications/diffusion/herald/DiffusionPreCommitContentBranchesHeraldField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/herald/DiffusionPreCommitContentBranchesHeraldField.php
@@ -0,0 +1,24 @@
+<?php
+
+final class DiffusionPreCommitContentBranchesHeraldField
+ extends DiffusionPreCommitContentHeraldField {
+
+ const FIELDCONST = 'diffusion.pre.commit.branches';
+
+ public function getHeraldFieldName() {
+ return pht('Branches');
+ }
+
+ public function getHeraldFieldValue($object) {
+ return $this->getAdapter()->getBranches();
+ }
+
+ protected function getHeraldFieldStandardConditions() {
+ return self::STANDARD_TEXT_LIST;
+ }
+
+ public function getHeraldFieldValueType($condition) {
+ return HeraldAdapter::VALUE_TEXT;
+ }
+
+}
diff --git a/src/applications/diffusion/herald/DiffusionPreCommitContentCommitterHeraldField.php b/src/applications/diffusion/herald/DiffusionPreCommitContentCommitterHeraldField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/herald/DiffusionPreCommitContentCommitterHeraldField.php
@@ -0,0 +1,30 @@
+<?php
+
+final class DiffusionPreCommitContentCommitterHeraldField
+ extends DiffusionPreCommitContentHeraldField {
+
+ const FIELDCONST = 'diffusion.pre.commit.committer';
+
+ public function getHeraldFieldName() {
+ return pht('Committer');
+ }
+
+ public function getHeraldFieldValue($object) {
+ return $this->getAdapter()->getCommitterPHID();
+ }
+
+ protected function getHeraldFieldStandardConditions() {
+ return self::STANDARD_PHID_NULLABLE;
+ }
+
+ public function getHeraldFieldValueType($condition) {
+ switch ($condition) {
+ case HeraldAdapter::CONDITION_EXISTS:
+ case HeraldAdapter::CONDITION_NOT_EXISTS:
+ return HeraldAdapter::VALUE_NONE;
+ default:
+ return HeraldAdapter::VALUE_USER;
+ }
+ }
+
+}
diff --git a/src/applications/diffusion/herald/DiffusionPreCommitContentCommitterRawHeraldField.php b/src/applications/diffusion/herald/DiffusionPreCommitContentCommitterRawHeraldField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/herald/DiffusionPreCommitContentCommitterRawHeraldField.php
@@ -0,0 +1,24 @@
+<?php
+
+final class DiffusionPreCommitContentCommitterRawHeraldField
+ extends DiffusionPreCommitContentHeraldField {
+
+ const FIELDCONST = 'diffusion.pre.commit.committer.raw';
+
+ public function getHeraldFieldName() {
+ return pht('Raw Committer');
+ }
+
+ public function getHeraldFieldValue($object) {
+ return $this->getAdapter()->getCommitterRaw();
+ }
+
+ protected function getHeraldFieldStandardConditions() {
+ return self::STANDARD_TEXT;
+ }
+
+ public function getHeraldFieldValueType($condition) {
+ return HeraldAdapter::VALUE_TEXT;
+ }
+
+}
diff --git a/src/applications/diffusion/herald/DiffusionPreCommitContentDiffContentAddedHeraldField.php b/src/applications/diffusion/herald/DiffusionPreCommitContentDiffContentAddedHeraldField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/herald/DiffusionPreCommitContentDiffContentAddedHeraldField.php
@@ -0,0 +1,24 @@
+<?php
+
+final class DiffusionPreCommitContentDiffContentAddedHeraldField
+ extends DiffusionPreCommitContentHeraldField {
+
+ const FIELDCONST = 'diffusion.pre.commit.diff.new';
+
+ public function getHeraldFieldName() {
+ return pht('Added diff content');
+ }
+
+ public function getHeraldFieldValue($object) {
+ return $this->getAdapter()->getDiffContent('+');
+ }
+
+ protected function getHeraldFieldStandardConditions() {
+ return self::STANDARD_TEXT_MAP;
+ }
+
+ public function getHeraldFieldValueType($condition) {
+ return HeraldAdapter::VALUE_TEXT;
+ }
+
+}
diff --git a/src/applications/diffusion/herald/DiffusionPreCommitContentDiffContentHeraldField.php b/src/applications/diffusion/herald/DiffusionPreCommitContentDiffContentHeraldField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/herald/DiffusionPreCommitContentDiffContentHeraldField.php
@@ -0,0 +1,24 @@
+<?php
+
+final class DiffusionPreCommitContentDiffContentHeraldField
+ extends DiffusionPreCommitContentHeraldField {
+
+ const FIELDCONST = 'diffusion.pre.commit.diff.content';
+
+ public function getHeraldFieldName() {
+ return pht('Diff content');
+ }
+
+ public function getHeraldFieldValue($object) {
+ return $this->getAdapter()->getDiffContent('*');
+ }
+
+ protected function getHeraldFieldStandardConditions() {
+ return self::STANDARD_TEXT_MAP;
+ }
+
+ public function getHeraldFieldValueType($condition) {
+ return HeraldAdapter::VALUE_TEXT;
+ }
+
+}
diff --git a/src/applications/diffusion/herald/DiffusionPreCommitContentDiffContentRemovedHeraldField.php b/src/applications/diffusion/herald/DiffusionPreCommitContentDiffContentRemovedHeraldField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/herald/DiffusionPreCommitContentDiffContentRemovedHeraldField.php
@@ -0,0 +1,24 @@
+<?php
+
+final class DiffusionPreCommitContentDiffContentRemovedHeraldField
+ extends DiffusionPreCommitContentHeraldField {
+
+ const FIELDCONST = 'diffusion.pre.commit.diff.old';
+
+ public function getHeraldFieldName() {
+ return pht('Removed diff content');
+ }
+
+ public function getHeraldFieldValue($object) {
+ return $this->getAdapter()->getDiffContent('-');
+ }
+
+ protected function getHeraldFieldStandardConditions() {
+ return self::STANDARD_TEXT_MAP;
+ }
+
+ public function getHeraldFieldValueType($condition) {
+ return HeraldAdapter::VALUE_TEXT;
+ }
+
+}
diff --git a/src/applications/diffusion/herald/DiffusionPreCommitContentDiffEnormousHeraldField.php b/src/applications/diffusion/herald/DiffusionPreCommitContentDiffEnormousHeraldField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/herald/DiffusionPreCommitContentDiffEnormousHeraldField.php
@@ -0,0 +1,24 @@
+<?php
+
+final class DiffusionPreCommitContentDiffEnormousHeraldField
+ extends DiffusionPreCommitContentHeraldField {
+
+ const FIELDCONST = 'diffusion.pre.content.diff.enormous';
+
+ public function getHeraldFieldName() {
+ return pht('Diff is enormous');
+ }
+
+ public function getHeraldFieldValue($object) {
+ return $this->getAdapter()->isDiffEnormous();
+ }
+
+ protected function getHeraldFieldStandardConditions() {
+ return HeraldField::STANDARD_BOOL;
+ }
+
+ public function getHeraldFieldValueType($condition) {
+ return HeraldAdapter::VALUE_NONE;
+ }
+
+}
diff --git a/src/applications/diffusion/herald/DiffusionPreCommitContentHeraldField.php b/src/applications/diffusion/herald/DiffusionPreCommitContentHeraldField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/herald/DiffusionPreCommitContentHeraldField.php
@@ -0,0 +1,17 @@
+<?php
+
+abstract class DiffusionPreCommitContentHeraldField extends HeraldField {
+
+ public function supportsObject($object) {
+ if (!($object instanceof PhabricatorRepositoryPushLog)) {
+ return false;
+ }
+
+ if ($this->getAdapter()->isPreCommitRefAdapter()) {
+ return false;
+ }
+
+ return true;
+ }
+
+}
diff --git a/src/applications/diffusion/herald/DiffusionPreCommitContentMergeHeraldField.php b/src/applications/diffusion/herald/DiffusionPreCommitContentMergeHeraldField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/herald/DiffusionPreCommitContentMergeHeraldField.php
@@ -0,0 +1,24 @@
+<?php
+
+final class DiffusionPreCommitContentMergeHeraldField
+ extends DiffusionPreCommitContentHeraldField {
+
+ const FIELDCONST = 'diffusion.pre.content.merge';
+
+ public function getHeraldFieldName() {
+ return pht('Is merge commit');
+ }
+
+ public function getHeraldFieldValue($object) {
+ return $this->getAdapter()->getIsMergeCommit();
+ }
+
+ protected function getHeraldFieldStandardConditions() {
+ return HeraldField::STANDARD_BOOL;
+ }
+
+ public function getHeraldFieldValueType($condition) {
+ return HeraldAdapter::VALUE_NONE;
+ }
+
+}
diff --git a/src/applications/diffusion/herald/DiffusionPreCommitContentMessageHeraldField.php b/src/applications/diffusion/herald/DiffusionPreCommitContentMessageHeraldField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/herald/DiffusionPreCommitContentMessageHeraldField.php
@@ -0,0 +1,24 @@
+<?php
+
+final class DiffusionPreCommitContentMessageHeraldField
+ extends DiffusionPreCommitContentHeraldField {
+
+ const FIELDCONST = 'diffusion.pre.commit.message';
+
+ public function getHeraldFieldName() {
+ return pht('Commit message');
+ }
+
+ public function getHeraldFieldValue($object) {
+ return $this->getAdapter()->getCommitRef()->getMessage();
+ }
+
+ protected function getHeraldFieldStandardConditions() {
+ return self::STANDARD_TEXT;
+ }
+
+ public function getHeraldFieldValueType($condition) {
+ return HeraldAdapter::VALUE_TEXT;
+ }
+
+}
diff --git a/src/applications/diffusion/herald/DiffusionPreCommitContentPusherHeraldField.php b/src/applications/diffusion/herald/DiffusionPreCommitContentPusherHeraldField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/herald/DiffusionPreCommitContentPusherHeraldField.php
@@ -0,0 +1,24 @@
+<?php
+
+final class DiffusionPreCommitContentPusherHeraldField
+ extends DiffusionPreCommitContentHeraldField {
+
+ const FIELDCONST = 'diffusion.pre.content.pusher';
+
+ public function getHeraldFieldName() {
+ return pht('Pusher');
+ }
+
+ public function getHeraldFieldValue($object) {
+ return $this->getAdapter()->getHookEngine()->getViewer()->getPHID();
+ }
+
+ protected function getHeraldFieldStandardConditions() {
+ return HeraldField::STANDARD_PHID;
+ }
+
+ public function getHeraldFieldValueType($condition) {
+ return HeraldAdapter::VALUE_USER;
+ }
+
+}
diff --git a/src/applications/diffusion/herald/DiffusionPreCommitContentPusherIsCommitterHeraldField.php b/src/applications/diffusion/herald/DiffusionPreCommitContentPusherIsCommitterHeraldField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/herald/DiffusionPreCommitContentPusherIsCommitterHeraldField.php
@@ -0,0 +1,27 @@
+<?php
+
+final class DiffusionPreCommitContentPusherIsCommitterHeraldField
+ extends DiffusionPreCommitContentHeraldField {
+
+ const FIELDCONST = 'diffusion.pre.content.pusher.is-committer';
+
+ public function getHeraldFieldName() {
+ return pht('Pusher is committer');
+ }
+
+ public function getHeraldFieldValue($object) {
+ $pusher = $this->getAdapter()->getHookEngine()->getViewer()->getPHID();
+ $committer = $this->getAdapter()->getCommitterPHID();
+
+ return ($pusher === $committer);
+ }
+
+ protected function getHeraldFieldStandardConditions() {
+ return HeraldField::STANDARD_BOOL;
+ }
+
+ public function getHeraldFieldValueType($condition) {
+ return HeraldAdapter::VALUE_NONE;
+ }
+
+}
diff --git a/src/applications/diffusion/herald/DiffusionPreCommitContentPusherProjectsHeraldField.php b/src/applications/diffusion/herald/DiffusionPreCommitContentPusherProjectsHeraldField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/herald/DiffusionPreCommitContentPusherProjectsHeraldField.php
@@ -0,0 +1,31 @@
+<?php
+
+final class DiffusionPreCommitContentPusherProjectsHeraldField
+ extends DiffusionPreCommitContentHeraldField {
+
+ const FIELDCONST = 'diffusion.pre.content.pusher.projects';
+
+ public function getHeraldFieldName() {
+ return pht('Pusher projects');
+ }
+
+ public function getHeraldFieldValue($object) {
+ return $this->getAdapter()
+ ->getHookEngine()
+ ->loadViewerProjectPHIDsForHerald();
+ }
+
+ protected function getHeraldFieldStandardConditions() {
+ return HeraldField::STANDARD_LIST;
+ }
+
+ public function getHeraldFieldValueType($condition) {
+ switch ($condition) {
+ case HeraldAdapter::CONDITION_EXISTS:
+ case HeraldAdapter::CONDITION_NOT_EXISTS:
+ return HeraldAdapter::VALUE_NONE;
+ default:
+ return HeraldAdapter::VALUE_PROJECT;
+ }
+ }
+}
diff --git a/src/applications/diffusion/herald/DiffusionPreCommitContentRepositoryHeraldField.php b/src/applications/diffusion/herald/DiffusionPreCommitContentRepositoryHeraldField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/herald/DiffusionPreCommitContentRepositoryHeraldField.php
@@ -0,0 +1,24 @@
+<?php
+
+final class DiffusionPreCommitContentRepositoryHeraldField
+ extends DiffusionPreCommitContentHeraldField {
+
+ const FIELDCONST = 'diffusion.pre.content.repository';
+
+ public function getHeraldFieldName() {
+ return pht('Repository');
+ }
+
+ public function getHeraldFieldValue($object) {
+ return $this->getAdapter()->getHookEngine()->getRepository()->getPHID();
+ }
+
+ protected function getHeraldFieldStandardConditions() {
+ return HeraldField::STANDARD_PHID;
+ }
+
+ public function getHeraldFieldValueType($condition) {
+ return HeraldAdapter::VALUE_REPOSITORY;
+ }
+
+}
diff --git a/src/applications/diffusion/herald/DiffusionPreCommitContentRepositoryProjectsHeraldField.php b/src/applications/diffusion/herald/DiffusionPreCommitContentRepositoryProjectsHeraldField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/herald/DiffusionPreCommitContentRepositoryProjectsHeraldField.php
@@ -0,0 +1,32 @@
+<?php
+
+final class DiffusionPreCommitContentRepositoryProjectsHeraldField
+ extends DiffusionPreCommitContentHeraldField {
+
+ const FIELDCONST = 'diffusion.pre.content.repository.projects';
+
+ public function getHeraldFieldName() {
+ return pht('Repository projects');
+ }
+
+ public function getHeraldFieldValue($object) {
+ return PhabricatorEdgeQuery::loadDestinationPHIDs(
+ $this->getAdapter()->getHookEngine()->getRepository()->getPHID(),
+ PhabricatorProjectObjectHasProjectEdgeType::EDGECONST);
+ }
+
+ protected function getHeraldFieldStandardConditions() {
+ return HeraldField::STANDARD_LIST;
+ }
+
+ public function getHeraldFieldValueType($condition) {
+ switch ($condition) {
+ case HeraldAdapter::CONDITION_EXISTS:
+ case HeraldAdapter::CONDITION_NOT_EXISTS:
+ return HeraldAdapter::VALUE_NONE;
+ default:
+ return HeraldAdapter::VALUE_PROJECT;
+ }
+ }
+
+}
diff --git a/src/applications/diffusion/herald/DiffusionPreCommitContentRevisionAcceptedHeraldField.php b/src/applications/diffusion/herald/DiffusionPreCommitContentRevisionAcceptedHeraldField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/herald/DiffusionPreCommitContentRevisionAcceptedHeraldField.php
@@ -0,0 +1,35 @@
+<?php
+
+final class DiffusionPreCommitContentRevisionAcceptedHeraldField
+ extends DiffusionPreCommitContentHeraldField {
+
+ const FIELDCONST = 'diffusion.pre.content.revision.accepted';
+
+ public function getHeraldFieldName() {
+ return pht('Accepted Differential revision');
+ }
+
+ public function getHeraldFieldValue($object) {
+ $revision = $this->getAdapter()->getRevision();
+
+ if (!$revision) {
+ return null;
+ }
+
+ $status_accepted = ArcanistDifferentialRevisionStatus::ACCEPTED;
+ if ($revision->getStatus() != $status_accepted) {
+ return null;
+ }
+
+ return $revision->getPHID();
+ }
+
+ protected function getHeraldFieldStandardConditions() {
+ return self::STANDARD_PHID_BOOL;
+ }
+
+ public function getHeraldFieldValueType($condition) {
+ return HeraldAdapter::VALUE_NONE;
+ }
+
+}
diff --git a/src/applications/diffusion/herald/DiffusionPreCommitContentRevisionHeraldField.php b/src/applications/diffusion/herald/DiffusionPreCommitContentRevisionHeraldField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/herald/DiffusionPreCommitContentRevisionHeraldField.php
@@ -0,0 +1,30 @@
+<?php
+
+final class DiffusionPreCommitContentRevisionHeraldField
+ extends DiffusionPreCommitContentHeraldField {
+
+ const FIELDCONST = 'diffusion.pre.content.revision';
+
+ public function getHeraldFieldName() {
+ return pht('Differential revision');
+ }
+
+ public function getHeraldFieldValue($object) {
+ $revision = $this->getAdapter()->getRevision();
+
+ if (!$revision) {
+ return null;
+ }
+
+ return $revision->getPHID();
+ }
+
+ protected function getHeraldFieldStandardConditions() {
+ return self::STANDARD_PHID_BOOL;
+ }
+
+ public function getHeraldFieldValueType($condition) {
+ return HeraldAdapter::VALUE_NONE;
+ }
+
+}
diff --git a/src/applications/diffusion/herald/DiffusionPreCommitContentRevisionReviewersHeraldField.php b/src/applications/diffusion/herald/DiffusionPreCommitContentRevisionReviewersHeraldField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/herald/DiffusionPreCommitContentRevisionReviewersHeraldField.php
@@ -0,0 +1,36 @@
+<?php
+
+final class DiffusionPreCommitContentRevisionReviewersHeraldField
+ extends DiffusionPreCommitContentHeraldField {
+
+ const FIELDCONST = 'diffusion.pre.content.revision.reviewers';
+
+ public function getHeraldFieldName() {
+ return pht('Differential reviewers');
+ }
+
+ public function getHeraldFieldValue($object) {
+ $revision = $this->getAdapter()->getRevision();
+
+ if (!$revision) {
+ return array();
+ }
+
+ return $revision->getReviewers();
+ }
+
+ protected function getHeraldFieldStandardConditions() {
+ return self::STANDARD_LIST;
+ }
+
+ public function getHeraldFieldValueType($condition) {
+ switch ($condition) {
+ case HeraldAdapter::CONDITION_EXISTS:
+ case HeraldAdapter::CONDITION_NOT_EXISTS:
+ return HeraldAdapter::VALUE_NONE;
+ default:
+ return HeraldAdapter::VALUE_USER_OR_PROJECT;
+ }
+ }
+
+}
diff --git a/src/applications/diffusion/herald/DiffusionPreCommitContentRevisionSubscribersHeraldField.php b/src/applications/diffusion/herald/DiffusionPreCommitContentRevisionSubscribersHeraldField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/herald/DiffusionPreCommitContentRevisionSubscribersHeraldField.php
@@ -0,0 +1,37 @@
+<?php
+
+final class DiffusionPreCommitContentRevisionSubscribersHeraldField
+ extends DiffusionPreCommitContentHeraldField {
+
+ const FIELDCONST = 'diffusion.pre.content.revision.subscribers';
+
+ public function getHeraldFieldName() {
+ return pht('Differential subscribers');
+ }
+
+ public function getHeraldFieldValue($object) {
+ $revision = $this->getAdapter()->getRevision();
+
+ if (!$revision) {
+ return array();
+ }
+
+ $phid = $revision->getPHID();
+ return PhabricatorSubscribersQuery::loadSubscribersForPHID($phid);
+ }
+
+ protected function getHeraldFieldStandardConditions() {
+ return self::STANDARD_LIST;
+ }
+
+ public function getHeraldFieldValueType($condition) {
+ switch ($condition) {
+ case HeraldAdapter::CONDITION_EXISTS:
+ case HeraldAdapter::CONDITION_NOT_EXISTS:
+ return HeraldAdapter::VALUE_NONE;
+ default:
+ return HeraldAdapter::VALUE_USER_OR_PROJECT;
+ }
+ }
+
+}
diff --git a/src/applications/diffusion/herald/HeraldPreCommitContentAdapter.php b/src/applications/diffusion/herald/HeraldPreCommitContentAdapter.php
--- a/src/applications/diffusion/herald/HeraldPreCommitContentAdapter.php
+++ b/src/applications/diffusion/herald/HeraldPreCommitContentAdapter.php
@@ -25,111 +25,16 @@
return false;
}
- public function getFields() {
- return array_merge(
- array(
- self::FIELD_BODY,
- self::FIELD_AUTHOR,
- self::FIELD_AUTHOR_RAW,
- self::FIELD_COMMITTER,
- self::FIELD_COMMITTER_RAW,
- self::FIELD_BRANCHES,
- self::FIELD_DIFF_FILE,
- self::FIELD_DIFF_CONTENT,
- self::FIELD_DIFF_ADDED_CONTENT,
- self::FIELD_DIFF_REMOVED_CONTENT,
- self::FIELD_DIFF_ENORMOUS,
- self::FIELD_REPOSITORY,
- self::FIELD_REPOSITORY_PROJECTS,
- self::FIELD_PUSHER,
- self::FIELD_PUSHER_PROJECTS,
- self::FIELD_PUSHER_IS_COMMITTER,
- self::FIELD_DIFFERENTIAL_REVISION,
- self::FIELD_DIFFERENTIAL_ACCEPTED,
- self::FIELD_DIFFERENTIAL_REVIEWERS,
- self::FIELD_DIFFERENTIAL_CCS,
- self::FIELD_IS_MERGE_COMMIT,
- ),
- parent::getFields());
- }
-
public function getHeraldName() {
return pht('Push Log (Content)');
}
- public function getHeraldField($field) {
- $log = $this->getObject();
- switch ($field) {
- case self::FIELD_BODY:
- return $this->getCommitRef()->getMessage();
- case self::FIELD_AUTHOR:
- return $this->getAuthorPHID();
- case self::FIELD_AUTHOR_RAW:
- return $this->getAuthorRaw();
- case self::FIELD_COMMITTER:
- return $this->getCommitterPHID();
- case self::FIELD_COMMITTER_RAW:
- return $this->getCommitterRaw();
- case self::FIELD_BRANCHES:
- return $this->getBranches();
- case self::FIELD_DIFF_FILE:
- return $this->getDiffContent('name');
- case self::FIELD_DIFF_CONTENT:
- return $this->getDiffContent('*');
- case self::FIELD_DIFF_ADDED_CONTENT:
- return $this->getDiffContent('+');
- case self::FIELD_DIFF_REMOVED_CONTENT:
- return $this->getDiffContent('-');
- case self::FIELD_DIFF_ENORMOUS:
- $this->getDiffContent('*');
- return ($this->changesets instanceof Exception);
- case self::FIELD_REPOSITORY:
- return $this->getHookEngine()->getRepository()->getPHID();
- case self::FIELD_REPOSITORY_PROJECTS:
- return $this->getHookEngine()->getRepository()->getProjectPHIDs();
- case self::FIELD_PUSHER:
- return $this->getHookEngine()->getViewer()->getPHID();
- case self::FIELD_PUSHER_PROJECTS:
- return $this->getHookEngine()->loadViewerProjectPHIDsForHerald();
- case self::FIELD_DIFFERENTIAL_REVISION:
- $revision = $this->getRevision();
- if (!$revision) {
- return null;
- }
- return $revision->getPHID();
- case self::FIELD_DIFFERENTIAL_ACCEPTED:
- $revision = $this->getRevision();
- if (!$revision) {
- return null;
- }
- $status_accepted = ArcanistDifferentialRevisionStatus::ACCEPTED;
- if ($revision->getStatus() != $status_accepted) {
- return null;
- }
- return $revision->getPHID();
- case self::FIELD_DIFFERENTIAL_REVIEWERS:
- $revision = $this->getRevision();
- if (!$revision) {
- return array();
- }
- return $revision->getReviewers();
- case self::FIELD_DIFFERENTIAL_CCS:
- $revision = $this->getRevision();
- if (!$revision) {
- return array();
- }
- return $revision->getCCPHIDs();
- case self::FIELD_IS_MERGE_COMMIT:
- return $this->getIsMergeCommit();
- case self::FIELD_PUSHER_IS_COMMITTER:
- $pusher_phid = $this->getHookEngine()->getViewer()->getPHID();
- return ($this->getCommitterPHID() == $pusher_phid);
- }
-
- return parent::getHeraldField($field);
+ public function isDiffEnormous() {
+ $this->getDiffContent('*');
+ return ($this->changesets instanceof Exception);
}
- private function getDiffContent($type) {
+ public function getDiffContent($type) {
if ($this->changesets === null) {
try {
$this->changesets = $this->getHookEngine()->loadChangesetsForCommit(
@@ -178,7 +83,7 @@
return $result;
}
- private function getCommitRef() {
+ public function getCommitRef() {
if ($this->commitRef === null) {
$this->commitRef = $this->getHookEngine()->loadCommitRefForCommit(
$this->getObject()->getRefNew());
@@ -186,7 +91,7 @@
return $this->commitRef;
}
- private function getAuthorPHID() {
+ public function getAuthorPHID() {
$repository = $this->getHookEngine()->getRepository();
$vcs = $repository->getVersionControlSystem();
switch ($vcs) {
@@ -204,7 +109,7 @@
}
}
- private function getCommitterPHID() {
+ public function getCommitterPHID() {
$repository = $this->getHookEngine()->getRepository();
$vcs = $repository->getVersionControlSystem();
switch ($vcs) {
@@ -225,7 +130,7 @@
}
}
- private function getAuthorRaw() {
+ public function getAuthorRaw() {
$repository = $this->getHookEngine()->getRepository();
$vcs = $repository->getVersionControlSystem();
switch ($vcs) {
@@ -239,7 +144,7 @@
}
}
- private function getCommitterRaw() {
+ public function getCommitterRaw() {
$repository = $this->getHookEngine()->getRepository();
$vcs = $repository->getVersionControlSystem();
switch ($vcs) {
@@ -275,7 +180,7 @@
return $this->fields;
}
- private function getRevision() {
+ public function getRevision() {
if ($this->revision === false) {
$fields = $this->getCommitFields();
$revision_id = idx($fields, 'revisionID');
@@ -293,7 +198,7 @@
return $this->revision;
}
- private function getIsMergeCommit() {
+ public function getIsMergeCommit() {
$repository = $this->getHookEngine()->getRepository();
$vcs = $repository->getVersionControlSystem();
switch ($vcs) {
@@ -313,7 +218,7 @@
}
}
- private function getBranches() {
+ public function getBranches() {
return $this->getHookEngine()->loadBranches(
$this->getObject()->getRefNew());
}
diff --git a/src/applications/herald/adapter/HeraldAdapter.php b/src/applications/herald/adapter/HeraldAdapter.php
--- a/src/applications/herald/adapter/HeraldAdapter.php
+++ b/src/applications/herald/adapter/HeraldAdapter.php
@@ -2,33 +2,6 @@
abstract class HeraldAdapter extends Phobject {
- const FIELD_TITLE = 'title';
- const FIELD_BODY = 'body';
- const FIELD_AUTHOR = 'author';
- const FIELD_REVIEWER = 'reviewer';
- const FIELD_COMMITTER = 'committer';
- const FIELD_DIFF_FILE = 'diff-file';
- const FIELD_DIFF_CONTENT = 'diff-content';
- const FIELD_DIFF_ADDED_CONTENT = 'diff-added-content';
- const FIELD_DIFF_REMOVED_CONTENT = 'diff-removed-content';
- const FIELD_DIFF_ENORMOUS = 'diff-enormous';
- const FIELD_REPOSITORY = 'repository';
- const FIELD_REPOSITORY_PROJECTS = 'repository-projects';
- const FIELD_AFFECTED_PACKAGE = 'affected-package';
- const FIELD_AFFECTED_PACKAGE_OWNER = 'affected-package-owner';
- const FIELD_AUTHOR_PROJECTS = 'authorprojects';
- const FIELD_PUSHER = 'pusher';
- const FIELD_PUSHER_PROJECTS = 'pusher-projects';
- const FIELD_DIFFERENTIAL_REVISION = 'differential-revision';
- const FIELD_DIFFERENTIAL_REVIEWERS = 'differential-reviewers';
- const FIELD_DIFFERENTIAL_CCS = 'differential-ccs';
- const FIELD_DIFFERENTIAL_ACCEPTED = 'differential-accepted';
- const FIELD_IS_MERGE_COMMIT = 'is-merge-commit';
- const FIELD_BRANCHES = 'branches';
- const FIELD_AUTHOR_RAW = 'author-raw';
- const FIELD_COMMITTER_RAW = 'committer-raw';
- const FIELD_PUSHER_IS_COMMITTER = 'pusher-is-committer';
-
const CONDITION_CONTAINS = 'contains';
const CONDITION_NOT_CONTAINS = '!contains';
const CONDITION_IS = 'is';
@@ -178,13 +151,9 @@
abstract public function getHeraldName();
- public function getHeraldField($field_name) {
- $impl = $this->getFieldImplementation($field_name);
- if ($impl) {
- return $impl->getHeraldFieldValue($this->getObject());
- }
-
- throw new Exception(pht("Unknown field '%s'!", $field_name));
+ public function getHeraldField($field_key) {
+ return $this->requireFieldImplementation($field_key)
+ ->getHeraldFieldValue($this->getObject());
}
public function applyHeraldEffects(array $effects) {
@@ -358,38 +327,7 @@
}
public function getFieldNameMap() {
- $map = mpull($this->getFieldImplementationMap(), 'getHeraldFieldName');
-
- return $map + array(
- self::FIELD_TITLE => pht('Title'),
- self::FIELD_BODY => pht('Body'),
- self::FIELD_AUTHOR => pht('Author'),
- self::FIELD_COMMITTER => pht('Committer'),
- self::FIELD_REVIEWER => pht('Reviewer'),
- self::FIELD_DIFF_FILE => pht('Any changed filename'),
- self::FIELD_DIFF_CONTENT => pht('Any changed file content'),
- self::FIELD_DIFF_ADDED_CONTENT => pht('Any added file content'),
- self::FIELD_DIFF_REMOVED_CONTENT => pht('Any removed file content'),
- self::FIELD_DIFF_ENORMOUS => pht('Change is enormous'),
- self::FIELD_REPOSITORY => pht('Repository'),
- self::FIELD_REPOSITORY_PROJECTS => pht('Repository\'s projects'),
- self::FIELD_AFFECTED_PACKAGE => pht('Any affected package'),
- self::FIELD_AFFECTED_PACKAGE_OWNER =>
- pht("Any affected package's owner"),
- self::FIELD_AUTHOR_PROJECTS => pht("Author's projects"),
- self::FIELD_PUSHER => pht('Pusher'),
- self::FIELD_PUSHER_PROJECTS => pht("Pusher's projects"),
- self::FIELD_DIFFERENTIAL_REVISION => pht('Differential revision'),
- self::FIELD_DIFFERENTIAL_REVIEWERS => pht('Differential reviewers'),
- self::FIELD_DIFFERENTIAL_CCS => pht('Differential CCs'),
- self::FIELD_DIFFERENTIAL_ACCEPTED
- => pht('Accepted Differential revision'),
- self::FIELD_IS_MERGE_COMMIT => pht('Commit is a merge'),
- self::FIELD_BRANCHES => pht('Commit\'s branches'),
- self::FIELD_AUTHOR_RAW => pht('Raw author name'),
- self::FIELD_COMMITTER_RAW => pht('Raw committer name'),
- self::FIELD_PUSHER_IS_COMMITTER => pht('Pusher same as committer'),
- );
+ return mpull($this->getFieldImplementationMap(), 'getHeraldFieldName');
}
@@ -425,97 +363,22 @@
}
public function getConditionsForField($field) {
- $impl = $this->getFieldImplementation($field);
- if ($impl) {
- return $impl->getHeraldFieldConditions();
- }
+ return $this->requireFieldImplementation($field)
+ ->getHeraldFieldConditions();
+ }
- switch ($field) {
- case self::FIELD_TITLE:
- case self::FIELD_BODY:
- case self::FIELD_COMMITTER_RAW:
- case self::FIELD_AUTHOR_RAW:
- return array(
- self::CONDITION_CONTAINS,
- self::CONDITION_NOT_CONTAINS,
- self::CONDITION_IS,
- self::CONDITION_IS_NOT,
- self::CONDITION_REGEXP,
- );
- case self::FIELD_REVIEWER:
- case self::FIELD_PUSHER:
- return array(
- self::CONDITION_IS_ANY,
- self::CONDITION_IS_NOT_ANY,
- );
- case self::FIELD_REPOSITORY:
- case self::FIELD_AUTHOR:
- case self::FIELD_COMMITTER:
- return array(
- self::CONDITION_IS_ANY,
- self::CONDITION_IS_NOT_ANY,
- self::CONDITION_EXISTS,
- self::CONDITION_NOT_EXISTS,
- );
- case self::FIELD_AUTHOR_PROJECTS:
- case self::FIELD_AFFECTED_PACKAGE:
- case self::FIELD_AFFECTED_PACKAGE_OWNER:
- case self::FIELD_PUSHER_PROJECTS:
- case self::FIELD_REPOSITORY_PROJECTS:
- return array(
- self::CONDITION_INCLUDE_ALL,
- self::CONDITION_INCLUDE_ANY,
- self::CONDITION_INCLUDE_NONE,
- self::CONDITION_EXISTS,
- self::CONDITION_NOT_EXISTS,
- );
- case self::FIELD_DIFF_FILE:
- case self::FIELD_BRANCHES:
- return array(
- self::CONDITION_CONTAINS,
- self::CONDITION_REGEXP,
- );
- case self::FIELD_DIFF_CONTENT:
- case self::FIELD_DIFF_ADDED_CONTENT:
- case self::FIELD_DIFF_REMOVED_CONTENT:
- return array(
- self::CONDITION_CONTAINS,
- self::CONDITION_REGEXP,
- self::CONDITION_REGEXP_PAIR,
- );
- case self::FIELD_DIFFERENTIAL_REVIEWERS:
- return array(
- self::CONDITION_EXISTS,
- self::CONDITION_NOT_EXISTS,
- self::CONDITION_INCLUDE_ALL,
- self::CONDITION_INCLUDE_ANY,
- self::CONDITION_INCLUDE_NONE,
- );
- case self::FIELD_DIFFERENTIAL_CCS:
- return array(
- self::CONDITION_INCLUDE_ALL,
- self::CONDITION_INCLUDE_ANY,
- self::CONDITION_INCLUDE_NONE,
- );
- case self::FIELD_DIFFERENTIAL_REVISION:
- case self::FIELD_DIFFERENTIAL_ACCEPTED:
- return array(
- self::CONDITION_EXISTS,
- self::CONDITION_NOT_EXISTS,
- );
- case self::FIELD_IS_MERGE_COMMIT:
- case self::FIELD_DIFF_ENORMOUS:
- case self::FIELD_PUSHER_IS_COMMITTER:
- return array(
- self::CONDITION_IS_TRUE,
- self::CONDITION_IS_FALSE,
- );
- default:
- throw new Exception(
- pht(
- "This adapter does not define conditions for field '%s'!",
- $field));
+ private function requireFieldImplementation($field_key) {
+ $field = $this->getFieldImplementation($field_key);
+
+ if (!$field) {
+ throw new Exception(
+ pht(
+ 'No field with key "%s" is available to Herald adapter "%s".',
+ $field_key,
+ get_class($this)));
}
+
+ return $field;
}
public function doesConditionMatch(
@@ -884,57 +747,8 @@
public function getValueTypeForFieldAndCondition($field, $condition) {
- $impl = $this->getFieldImplementation($field);
- if ($impl) {
- return $impl->getHeraldFieldValueType($condition);
- }
-
- switch ($condition) {
- case self::CONDITION_CONTAINS:
- case self::CONDITION_NOT_CONTAINS:
- case self::CONDITION_REGEXP:
- case self::CONDITION_REGEXP_PAIR:
- return self::VALUE_TEXT;
- case self::CONDITION_IS:
- case self::CONDITION_IS_NOT:
- return self::VALUE_TEXT;
- case self::CONDITION_IS_ANY:
- case self::CONDITION_IS_NOT_ANY:
- switch ($field) {
- case self::FIELD_REPOSITORY:
- return self::VALUE_REPOSITORY;
- default:
- return self::VALUE_USER;
- }
- break;
- case self::CONDITION_INCLUDE_ALL:
- case self::CONDITION_INCLUDE_ANY:
- case self::CONDITION_INCLUDE_NONE:
- switch ($field) {
- case self::FIELD_REPOSITORY:
- return self::VALUE_REPOSITORY;
- case self::FIELD_AFFECTED_PACKAGE:
- return self::VALUE_OWNERS_PACKAGE;
- case self::FIELD_AUTHOR_PROJECTS:
- case self::FIELD_PUSHER_PROJECTS:
- case self::FIELD_REPOSITORY_PROJECTS:
- return self::VALUE_PROJECT;
- default:
- return self::VALUE_USER;
- }
- break;
- case self::CONDITION_IS_ME:
- case self::CONDITION_IS_NOT_ME:
- case self::CONDITION_EXISTS:
- case self::CONDITION_NOT_EXISTS:
- case self::CONDITION_UNCONDITIONALLY:
- case self::CONDITION_NEVER:
- case self::CONDITION_IS_TRUE:
- case self::CONDITION_IS_FALSE:
- return self::VALUE_NONE;
- default:
- throw new Exception(pht("Unknown condition '%s'.", $condition));
- }
+ return $this->requireFieldImplementation($field)
+ ->getHeraldFieldValueType($condition);
}
public function getValueTypeForAction($action, $rule_type) {
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Nov 2 2025, 8:26 PM (7 w, 3 d ago)
Storage Engine
amazon-s3
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
phabricator/secure/4b/gb/mksfxkbrtmk4l5kt
Default Alt Text
D13601.diff (49 KB)
Attached To
Mode
D13601: Modularize Herald Diffusion pre-commit content fields
Attached
Detach File
Event Timeline
Log In to Comment