Page MenuHomePhabricator

D13567.id32827.diff
No OneTemporary

D13567.id32827.diff

diff --git a/resources/sql/autopatches/20150706.herald.1.sql b/resources/sql/autopatches/20150706.herald.1.sql
new file mode 100644
--- /dev/null
+++ b/resources/sql/autopatches/20150706.herald.1.sql
@@ -0,0 +1,133 @@
+UPDATE {$NAMESPACE}_herald.herald_condition
+ SET fieldName = 'diffusion.commit.autoclose'
+ WHERE fieldName = 'repository-autoclose-branch';
+
+UPDATE {$NAMESPACE}_herald.herald_condition
+ SET fieldName = 'diffusion.commit.package.audit'
+ WHERE fieldName = 'need-audit-for-package';
+
+UPDATE {$NAMESPACE}_herald.herald_condition c
+ JOIN {$NAMESPACE}_herald.herald_rule r
+ ON c.ruleID = r.id
+ SET c.fieldName = 'diffusion.commit.affected'
+ WHERE r.contentType = 'commit'
+ 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.commit.author'
+ WHERE r.contentType = 'commit'
+ 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.commit.branches'
+ WHERE r.contentType = 'commit'
+ 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.commit.committer'
+ WHERE r.contentType = 'commit'
+ 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.commit.diff.new'
+ WHERE r.contentType = 'commit'
+ 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.commit.diff'
+ WHERE r.contentType = 'commit'
+ 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.commit.diff.old'
+ WHERE r.contentType = 'commit'
+ 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.commit.enormous'
+ WHERE r.contentType = 'commit'
+ 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.commit.message'
+ WHERE r.contentType = 'commit'
+ 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.commit.package'
+ WHERE r.contentType = 'commit'
+ AND c.fieldName = 'affected-package';
+
+UPDATE {$NAMESPACE}_herald.herald_condition c
+ JOIN {$NAMESPACE}_herald.herald_rule r
+ ON c.ruleID = r.id
+ SET c.fieldName = 'diffusion.commit.package.owners'
+ WHERE r.contentType = 'commit'
+ AND c.fieldName = 'affected-package-owner';
+
+UPDATE {$NAMESPACE}_herald.herald_condition c
+ JOIN {$NAMESPACE}_herald.herald_rule r
+ ON c.ruleID = r.id
+ SET c.fieldName = 'diffusion.commit.repository'
+ WHERE r.contentType = 'commit'
+ 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.commit.repository.projects'
+ WHERE r.contentType = 'commit'
+ 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.commit.reviewer'
+ WHERE r.contentType = 'commit'
+ AND c.fieldName = 'reviewer';
+
+UPDATE {$NAMESPACE}_herald.herald_condition c
+ JOIN {$NAMESPACE}_herald.herald_rule r
+ ON c.ruleID = r.id
+ SET c.fieldName = 'diffusion.commit.revision.accepted'
+ WHERE r.contentType = 'commit'
+ 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.commit.revision'
+ WHERE r.contentType = 'commit'
+ 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.commit.revision.subscribers'
+ WHERE r.contentType = 'commit'
+ 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.commit.revision.reviewers'
+ WHERE r.contentType = 'commit'
+ AND c.fieldName = 'differential-reviewers';
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
@@ -481,22 +481,43 @@
'DiffusionBrowseTableView' => 'applications/diffusion/view/DiffusionBrowseTableView.php',
'DiffusionCachedResolveRefsQuery' => 'applications/diffusion/query/DiffusionCachedResolveRefsQuery.php',
'DiffusionChangeController' => 'applications/diffusion/controller/DiffusionChangeController.php',
+ 'DiffusionCommitAffectedFilesHeraldField' => 'applications/diffusion/herald/DiffusionCommitAffectedFilesHeraldField.php',
+ 'DiffusionCommitAuthorHeraldField' => 'applications/diffusion/herald/DiffusionCommitAuthorHeraldField.php',
+ 'DiffusionCommitAutocloseHeraldField' => 'applications/diffusion/herald/DiffusionCommitAutocloseHeraldField.php',
'DiffusionCommitBranchesController' => 'applications/diffusion/controller/DiffusionCommitBranchesController.php',
+ 'DiffusionCommitBranchesHeraldField' => 'applications/diffusion/herald/DiffusionCommitBranchesHeraldField.php',
'DiffusionCommitChangeTableView' => 'applications/diffusion/view/DiffusionCommitChangeTableView.php',
+ 'DiffusionCommitCommitterHeraldField' => 'applications/diffusion/herald/DiffusionCommitCommitterHeraldField.php',
'DiffusionCommitController' => 'applications/diffusion/controller/DiffusionCommitController.php',
+ 'DiffusionCommitDiffContentAddedHeraldField' => 'applications/diffusion/herald/DiffusionCommitDiffContentAddedHeraldField.php',
+ 'DiffusionCommitDiffContentHeraldField' => 'applications/diffusion/herald/DiffusionCommitDiffContentHeraldField.php',
+ 'DiffusionCommitDiffContentRemovedHeraldField' => 'applications/diffusion/herald/DiffusionCommitDiffContentRemovedHeraldField.php',
+ 'DiffusionCommitDiffEnormousHeraldField' => 'applications/diffusion/herald/DiffusionCommitDiffEnormousHeraldField.php',
'DiffusionCommitEditController' => 'applications/diffusion/controller/DiffusionCommitEditController.php',
'DiffusionCommitHasRevisionEdgeType' => 'applications/diffusion/edge/DiffusionCommitHasRevisionEdgeType.php',
'DiffusionCommitHasTaskEdgeType' => 'applications/diffusion/edge/DiffusionCommitHasTaskEdgeType.php',
'DiffusionCommitHash' => 'applications/diffusion/data/DiffusionCommitHash.php',
+ 'DiffusionCommitHeraldField' => 'applications/diffusion/herald/DiffusionCommitHeraldField.php',
'DiffusionCommitHookEngine' => 'applications/diffusion/engine/DiffusionCommitHookEngine.php',
'DiffusionCommitHookRejectException' => 'applications/diffusion/exception/DiffusionCommitHookRejectException.php',
+ 'DiffusionCommitMessageHeraldField' => 'applications/diffusion/herald/DiffusionCommitMessageHeraldField.php',
+ 'DiffusionCommitPackageAuditHeraldField' => 'applications/diffusion/herald/DiffusionCommitPackageAuditHeraldField.php',
+ 'DiffusionCommitPackageHeraldField' => 'applications/diffusion/herald/DiffusionCommitPackageHeraldField.php',
+ 'DiffusionCommitPackageOwnerHeraldField' => 'applications/diffusion/herald/DiffusionCommitPackageOwnerHeraldField.php',
'DiffusionCommitParentsQueryConduitAPIMethod' => 'applications/diffusion/conduit/DiffusionCommitParentsQueryConduitAPIMethod.php',
'DiffusionCommitQuery' => 'applications/diffusion/query/DiffusionCommitQuery.php',
'DiffusionCommitRef' => 'applications/diffusion/data/DiffusionCommitRef.php',
'DiffusionCommitRemarkupRule' => 'applications/diffusion/remarkup/DiffusionCommitRemarkupRule.php',
'DiffusionCommitRemarkupRuleTestCase' => 'applications/diffusion/remarkup/__tests__/DiffusionCommitRemarkupRuleTestCase.php',
+ 'DiffusionCommitRepositoryHeraldField' => 'applications/diffusion/herald/DiffusionCommitRepositoryHeraldField.php',
+ 'DiffusionCommitRepositoryProjectsHeraldField' => 'applications/diffusion/herald/DiffusionCommitRepositoryProjectsHeraldField.php',
'DiffusionCommitRevertedByCommitEdgeType' => 'applications/diffusion/edge/DiffusionCommitRevertedByCommitEdgeType.php',
'DiffusionCommitRevertsCommitEdgeType' => 'applications/diffusion/edge/DiffusionCommitRevertsCommitEdgeType.php',
+ 'DiffusionCommitReviewerHeraldField' => 'applications/diffusion/herald/DiffusionCommitReviewerHeraldField.php',
+ 'DiffusionCommitRevisionAcceptedHeraldField' => 'applications/diffusion/herald/DiffusionCommitRevisionAcceptedHeraldField.php',
+ 'DiffusionCommitRevisionHeraldField' => 'applications/diffusion/herald/DiffusionCommitRevisionHeraldField.php',
+ 'DiffusionCommitRevisionReviewersHeraldField' => 'applications/diffusion/herald/DiffusionCommitRevisionReviewersHeraldField.php',
+ 'DiffusionCommitRevisionSubscribersHeraldField' => 'applications/diffusion/herald/DiffusionCommitRevisionSubscribersHeraldField.php',
'DiffusionCommitTagsController' => 'applications/diffusion/controller/DiffusionCommitTagsController.php',
'DiffusionConduitAPIMethod' => 'applications/diffusion/conduit/DiffusionConduitAPIMethod.php',
'DiffusionController' => 'applications/diffusion/controller/DiffusionController.php',
@@ -933,7 +954,7 @@
'HeraldAlwaysField' => 'applications/herald/field/HeraldAlwaysField.php',
'HeraldAnotherRuleField' => 'applications/herald/field/HeraldAnotherRuleField.php',
'HeraldApplyTranscript' => 'applications/herald/storage/transcript/HeraldApplyTranscript.php',
- 'HeraldCommitAdapter' => 'applications/herald/adapter/HeraldCommitAdapter.php',
+ 'HeraldCommitAdapter' => 'applications/diffusion/herald/HeraldCommitAdapter.php',
'HeraldCondition' => 'applications/herald/storage/HeraldCondition.php',
'HeraldConditionTranscript' => 'applications/herald/storage/transcript/HeraldConditionTranscript.php',
'HeraldContentSourceField' => 'applications/herald/field/HeraldContentSourceField.php',
@@ -3925,22 +3946,43 @@
'DiffusionBrowseTableView' => 'DiffusionView',
'DiffusionCachedResolveRefsQuery' => 'DiffusionLowLevelQuery',
'DiffusionChangeController' => 'DiffusionController',
+ 'DiffusionCommitAffectedFilesHeraldField' => 'DiffusionCommitHeraldField',
+ 'DiffusionCommitAuthorHeraldField' => 'DiffusionCommitHeraldField',
+ 'DiffusionCommitAutocloseHeraldField' => 'DiffusionCommitHeraldField',
'DiffusionCommitBranchesController' => 'DiffusionController',
+ 'DiffusionCommitBranchesHeraldField' => 'DiffusionCommitHeraldField',
'DiffusionCommitChangeTableView' => 'DiffusionView',
+ 'DiffusionCommitCommitterHeraldField' => 'DiffusionCommitHeraldField',
'DiffusionCommitController' => 'DiffusionController',
+ 'DiffusionCommitDiffContentAddedHeraldField' => 'DiffusionCommitHeraldField',
+ 'DiffusionCommitDiffContentHeraldField' => 'DiffusionCommitHeraldField',
+ 'DiffusionCommitDiffContentRemovedHeraldField' => 'DiffusionCommitHeraldField',
+ 'DiffusionCommitDiffEnormousHeraldField' => 'DiffusionCommitHeraldField',
'DiffusionCommitEditController' => 'DiffusionController',
'DiffusionCommitHasRevisionEdgeType' => 'PhabricatorEdgeType',
'DiffusionCommitHasTaskEdgeType' => 'PhabricatorEdgeType',
'DiffusionCommitHash' => 'Phobject',
+ 'DiffusionCommitHeraldField' => 'HeraldField',
'DiffusionCommitHookEngine' => 'Phobject',
'DiffusionCommitHookRejectException' => 'Exception',
+ 'DiffusionCommitMessageHeraldField' => 'DiffusionCommitHeraldField',
+ 'DiffusionCommitPackageAuditHeraldField' => 'DiffusionCommitHeraldField',
+ 'DiffusionCommitPackageHeraldField' => 'DiffusionCommitHeraldField',
+ 'DiffusionCommitPackageOwnerHeraldField' => 'DiffusionCommitHeraldField',
'DiffusionCommitParentsQueryConduitAPIMethod' => 'DiffusionQueryConduitAPIMethod',
'DiffusionCommitQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
'DiffusionCommitRef' => 'Phobject',
'DiffusionCommitRemarkupRule' => 'PhabricatorObjectRemarkupRule',
'DiffusionCommitRemarkupRuleTestCase' => 'PhabricatorTestCase',
+ 'DiffusionCommitRepositoryHeraldField' => 'DiffusionCommitHeraldField',
+ 'DiffusionCommitRepositoryProjectsHeraldField' => 'DiffusionCommitHeraldField',
'DiffusionCommitRevertedByCommitEdgeType' => 'PhabricatorEdgeType',
'DiffusionCommitRevertsCommitEdgeType' => 'PhabricatorEdgeType',
+ 'DiffusionCommitReviewerHeraldField' => 'DiffusionCommitHeraldField',
+ 'DiffusionCommitRevisionAcceptedHeraldField' => 'DiffusionCommitHeraldField',
+ 'DiffusionCommitRevisionHeraldField' => 'DiffusionCommitHeraldField',
+ 'DiffusionCommitRevisionReviewersHeraldField' => 'DiffusionCommitHeraldField',
+ 'DiffusionCommitRevisionSubscribersHeraldField' => 'DiffusionCommitHeraldField',
'DiffusionCommitTagsController' => 'DiffusionController',
'DiffusionConduitAPIMethod' => 'ConduitAPIMethod',
'DiffusionController' => 'PhabricatorController',
diff --git a/src/applications/diffusion/herald/DiffusionCommitAffectedFilesHeraldField.php b/src/applications/diffusion/herald/DiffusionCommitAffectedFilesHeraldField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/herald/DiffusionCommitAffectedFilesHeraldField.php
@@ -0,0 +1,24 @@
+<?php
+
+final class DiffusionCommitAffectedFilesHeraldField
+ extends DiffusionCommitHeraldField {
+
+ const FIELDCONST = 'diffusion.commit.affected';
+
+ public function getHeraldFieldName() {
+ return pht('Affected files');
+ }
+
+ public function getHeraldFieldValue($object) {
+ return $this->getAdapter()->loadAffectedPaths();
+ }
+
+ protected function getHeraldFieldStandardConditions() {
+ return self::STANDARD_TEXT_LIST;
+ }
+
+ public function getHeraldFieldValueType($condition) {
+ return HeraldAdapter::VALUE_TEXT;
+ }
+
+}
diff --git a/src/applications/subscriptions/herald/HeraldSubscribersField.php b/src/applications/diffusion/herald/DiffusionCommitAuthorHeraldField.php
copy from src/applications/subscriptions/herald/HeraldSubscribersField.php
copy to src/applications/diffusion/herald/DiffusionCommitAuthorHeraldField.php
--- a/src/applications/subscriptions/herald/HeraldSubscribersField.php
+++ b/src/applications/diffusion/herald/DiffusionCommitAuthorHeraldField.php
@@ -1,24 +1,20 @@
<?php
-final class HeraldSubscribersField extends HeraldField {
+final class DiffusionCommitAuthorHeraldField
+ extends DiffusionCommitHeraldField {
- const FIELDCONST = 'cc';
+ const FIELDCONST = 'diffusion.commit.author';
public function getHeraldFieldName() {
- return pht('Subscribers');
- }
-
- public function supportsObject($object) {
- return ($object instanceof PhabricatorSubscribableInterface);
+ return pht('Author');
}
public function getHeraldFieldValue($object) {
- $phid = $object->getPHID();
- return PhabricatorSubscribersQuery::loadSubscribersForPHID($phid);
+ return $object->getCommitData()->getCommitDetail('authorPHID');
}
protected function getHeraldFieldStandardConditions() {
- return self::STANDARD_LIST;
+ return self::STANDARD_PHID_NULLABLE;
}
public function getHeraldFieldValueType($condition) {
@@ -27,7 +23,7 @@
case HeraldAdapter::CONDITION_NOT_EXISTS:
return HeraldAdapter::VALUE_NONE;
default:
- return HeraldAdapter::VALUE_PROJECT;
+ return HeraldAdapter::VALUE_USER;
}
}
diff --git a/src/applications/diffusion/herald/DiffusionCommitAutocloseHeraldField.php b/src/applications/diffusion/herald/DiffusionCommitAutocloseHeraldField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/herald/DiffusionCommitAutocloseHeraldField.php
@@ -0,0 +1,26 @@
+<?php
+
+final class DiffusionCommitAutocloseHeraldField
+ extends DiffusionCommitHeraldField {
+
+ const FIELDCONST = 'diffusion.commit.autoclose';
+
+ public function getHeraldFieldName() {
+ return pht('Commit is on autoclose branch');
+ }
+
+ public function getHeraldFieldValue($object) {
+ return $object->getRepository()->shouldAutocloseCommit($object);
+ }
+
+ public function getHeraldFieldConditions() {
+ return array(
+ HeraldAdapter::CONDITION_UNCONDITIONALLY,
+ );
+ }
+
+ public function getHeraldFieldValueType($condition) {
+ return HeraldAdapter::VALUE_NONE;
+ }
+
+}
diff --git a/src/applications/diffusion/herald/DiffusionCommitBranchesHeraldField.php b/src/applications/diffusion/herald/DiffusionCommitBranchesHeraldField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/herald/DiffusionCommitBranchesHeraldField.php
@@ -0,0 +1,38 @@
+<?php
+
+final class DiffusionCommitBranchesHeraldField
+ extends DiffusionCommitHeraldField {
+
+ const FIELDCONST = 'diffusion.commit.branches';
+
+ public function getHeraldFieldName() {
+ return pht('Branches');
+ }
+
+ public function getHeraldFieldValue($object) {
+ $commit = $object;
+ $repository = $object->getRepository();
+
+ $params = array(
+ 'callsign' => $repository->getCallsign(),
+ 'contains' => $commit->getCommitIdentifier(),
+ );
+
+ $result = id(new ConduitCall('diffusion.branchquery', $params))
+ ->setUser(PhabricatorUser::getOmnipotentUser())
+ ->execute();
+
+ $refs = DiffusionRepositoryRef::loadAllFromDictionaries($result);
+
+ return mpull($refs, 'getShortName');
+ }
+
+ protected function getHeraldFieldStandardConditions() {
+ return self::STANDARD_TEXT_LIST;
+ }
+
+ public function getHeraldFieldValueType($condition) {
+ return HeraldAdapter::VALUE_TEXT;
+ }
+
+}
diff --git a/src/applications/subscriptions/herald/HeraldSubscribersField.php b/src/applications/diffusion/herald/DiffusionCommitCommitterHeraldField.php
copy from src/applications/subscriptions/herald/HeraldSubscribersField.php
copy to src/applications/diffusion/herald/DiffusionCommitCommitterHeraldField.php
--- a/src/applications/subscriptions/herald/HeraldSubscribersField.php
+++ b/src/applications/diffusion/herald/DiffusionCommitCommitterHeraldField.php
@@ -1,24 +1,20 @@
<?php
-final class HeraldSubscribersField extends HeraldField {
+final class DiffusionCommitCommitterHeraldField
+ extends DiffusionCommitHeraldField {
- const FIELDCONST = 'cc';
+ const FIELDCONST = 'diffusion.commit.committer';
public function getHeraldFieldName() {
- return pht('Subscribers');
- }
-
- public function supportsObject($object) {
- return ($object instanceof PhabricatorSubscribableInterface);
+ return pht('Committer');
}
public function getHeraldFieldValue($object) {
- $phid = $object->getPHID();
- return PhabricatorSubscribersQuery::loadSubscribersForPHID($phid);
+ return $object->getCommitData()->getCommitDetail('committerPHID');
}
protected function getHeraldFieldStandardConditions() {
- return self::STANDARD_LIST;
+ return self::STANDARD_PHID_NULLABLE;
}
public function getHeraldFieldValueType($condition) {
@@ -27,7 +23,7 @@
case HeraldAdapter::CONDITION_NOT_EXISTS:
return HeraldAdapter::VALUE_NONE;
default:
- return HeraldAdapter::VALUE_PROJECT;
+ return HeraldAdapter::VALUE_USER;
}
}
diff --git a/src/applications/diffusion/herald/DiffusionCommitDiffContentAddedHeraldField.php b/src/applications/diffusion/herald/DiffusionCommitDiffContentAddedHeraldField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/herald/DiffusionCommitDiffContentAddedHeraldField.php
@@ -0,0 +1,24 @@
+<?php
+
+final class DiffusionCommitDiffContentAddedHeraldField
+ extends DiffusionCommitHeraldField {
+
+ const FIELDCONST = 'diffusion.commit.diff.new';
+
+ public function getHeraldFieldName() {
+ return pht('Diff content added');
+ }
+
+ public function getHeraldFieldValue($object) {
+ return $this->getAdapter()->loadDiffContent('+');
+ }
+
+ protected function getHeraldFieldStandardConditions() {
+ return self::STANDARD_TEXT_MAP;
+ }
+
+ public function getHeraldFieldValueType($condition) {
+ return HeraldAdapter::VALUE_TEXT;
+ }
+
+}
diff --git a/src/applications/diffusion/herald/DiffusionCommitDiffContentHeraldField.php b/src/applications/diffusion/herald/DiffusionCommitDiffContentHeraldField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/herald/DiffusionCommitDiffContentHeraldField.php
@@ -0,0 +1,24 @@
+<?php
+
+final class DiffusionCommitDiffContentHeraldField
+ extends DiffusionCommitHeraldField {
+
+ const FIELDCONST = 'diffusion.commit.diff';
+
+ public function getHeraldFieldName() {
+ return pht('Diff content');
+ }
+
+ public function getHeraldFieldValue($object) {
+ return $this->getAdapter()->loadDiffContent('*');
+ }
+
+ protected function getHeraldFieldStandardConditions() {
+ return self::STANDARD_TEXT_MAP;
+ }
+
+ public function getHeraldFieldValueType($condition) {
+ return HeraldAdapter::VALUE_TEXT;
+ }
+
+}
diff --git a/src/applications/diffusion/herald/DiffusionCommitDiffContentRemovedHeraldField.php b/src/applications/diffusion/herald/DiffusionCommitDiffContentRemovedHeraldField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/herald/DiffusionCommitDiffContentRemovedHeraldField.php
@@ -0,0 +1,24 @@
+<?php
+
+final class DiffusionCommitDiffContentRemovedHeraldField
+ extends DiffusionCommitHeraldField {
+
+ const FIELDCONST = 'diffusion.commit.diff.old';
+
+ public function getHeraldFieldName() {
+ return pht('Diff content removed');
+ }
+
+ public function getHeraldFieldValue($object) {
+ return $this->getAdapter()->loadDiffContent('-');
+ }
+
+ protected function getHeraldFieldStandardConditions() {
+ return self::STANDARD_TEXT_MAP;
+ }
+
+ public function getHeraldFieldValueType($condition) {
+ return HeraldAdapter::VALUE_TEXT;
+ }
+
+}
diff --git a/src/applications/diffusion/herald/DiffusionCommitDiffEnormousHeraldField.php b/src/applications/diffusion/herald/DiffusionCommitDiffEnormousHeraldField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/herald/DiffusionCommitDiffEnormousHeraldField.php
@@ -0,0 +1,24 @@
+<?php
+
+final class DiffusionCommitDiffEnormousHeraldField
+ extends DiffusionCommitHeraldField {
+
+ const FIELDCONST = 'diffusion.commit.enormous';
+
+ public function getHeraldFieldName() {
+ return pht('Change is enormous');
+ }
+
+ public function getHeraldFieldValue($object) {
+ return $this->getAdapter()->isDiffEnormous();
+ }
+
+ protected function getHeraldFieldStandardConditions() {
+ return self::STANDARD_BOOL;
+ }
+
+ public function getHeraldFieldValueType($condition) {
+ return HeraldAdapter::VALUE_NONE;
+ }
+
+}
diff --git a/src/applications/diffusion/herald/DiffusionCommitHeraldField.php b/src/applications/diffusion/herald/DiffusionCommitHeraldField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/herald/DiffusionCommitHeraldField.php
@@ -0,0 +1,9 @@
+<?php
+
+abstract class DiffusionCommitHeraldField extends HeraldField {
+
+ public function supportsObject($object) {
+ return ($object instanceof PhabricatorRepositoryCommit);
+ }
+
+}
diff --git a/src/applications/diffusion/herald/DiffusionCommitMessageHeraldField.php b/src/applications/diffusion/herald/DiffusionCommitMessageHeraldField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/herald/DiffusionCommitMessageHeraldField.php
@@ -0,0 +1,24 @@
+<?php
+
+final class DiffusionCommitMessageHeraldField
+ extends DiffusionCommitHeraldField {
+
+ const FIELDCONST = 'diffusion.commit.message';
+
+ public function getHeraldFieldName() {
+ return pht('Commit message');
+ }
+
+ public function getHeraldFieldValue($object) {
+ return $object->getCommitData()->getCommitMessage();
+ }
+
+ protected function getHeraldFieldStandardConditions() {
+ return self::STANDARD_TEXT;
+ }
+
+ public function getHeraldFieldValueType($condition) {
+ return HeraldAdapter::VALUE_TEXT;
+ }
+
+}
diff --git a/src/applications/subscriptions/herald/HeraldSubscribersField.php b/src/applications/diffusion/herald/DiffusionCommitPackageAuditHeraldField.php
copy from src/applications/subscriptions/herald/HeraldSubscribersField.php
copy to src/applications/diffusion/herald/DiffusionCommitPackageAuditHeraldField.php
--- a/src/applications/subscriptions/herald/HeraldSubscribersField.php
+++ b/src/applications/diffusion/herald/DiffusionCommitPackageAuditHeraldField.php
@@ -1,20 +1,21 @@
<?php
-final class HeraldSubscribersField extends HeraldField {
+final class DiffusionCommitPackageAuditHeraldField
+ extends DiffusionCommitHeraldField {
- const FIELDCONST = 'cc';
+ const FIELDCONST = 'diffusion.commit.package.audit';
public function getHeraldFieldName() {
- return pht('Subscribers');
- }
-
- public function supportsObject($object) {
- return ($object instanceof PhabricatorSubscribableInterface);
+ return pht('Affected packages that need audit');
}
public function getHeraldFieldValue($object) {
- $phid = $object->getPHID();
- return PhabricatorSubscribersQuery::loadSubscribersForPHID($phid);
+ $packages = $this->getAdapter()->loadAuditNeededPackages();
+ if (!$packages) {
+ return array();
+ }
+
+ return mpull($packages, 'getPHID');
}
protected function getHeraldFieldStandardConditions() {
@@ -27,7 +28,7 @@
case HeraldAdapter::CONDITION_NOT_EXISTS:
return HeraldAdapter::VALUE_NONE;
default:
- return HeraldAdapter::VALUE_PROJECT;
+ return HeraldAdapter::VALUE_OWNERS_PACKAGE;
}
}
diff --git a/src/applications/subscriptions/herald/HeraldSubscribersField.php b/src/applications/diffusion/herald/DiffusionCommitPackageHeraldField.php
copy from src/applications/subscriptions/herald/HeraldSubscribersField.php
copy to src/applications/diffusion/herald/DiffusionCommitPackageHeraldField.php
--- a/src/applications/subscriptions/herald/HeraldSubscribersField.php
+++ b/src/applications/diffusion/herald/DiffusionCommitPackageHeraldField.php
@@ -1,20 +1,17 @@
<?php
-final class HeraldSubscribersField extends HeraldField {
+final class DiffusionCommitPackageHeraldField
+ extends DiffusionCommitHeraldField {
- const FIELDCONST = 'cc';
+ const FIELDCONST = 'diffusion.commit.package';
public function getHeraldFieldName() {
- return pht('Subscribers');
- }
-
- public function supportsObject($object) {
- return ($object instanceof PhabricatorSubscribableInterface);
+ return pht('Affected packages');
}
public function getHeraldFieldValue($object) {
- $phid = $object->getPHID();
- return PhabricatorSubscribersQuery::loadSubscribersForPHID($phid);
+ $packages = $this->getAdapter()->loadAffectedPackages();
+ return mpull($packages, 'getPHID');
}
protected function getHeraldFieldStandardConditions() {
@@ -27,7 +24,7 @@
case HeraldAdapter::CONDITION_NOT_EXISTS:
return HeraldAdapter::VALUE_NONE;
default:
- return HeraldAdapter::VALUE_PROJECT;
+ return HeraldAdapter::VALUE_OWNERS_PACKAGE;
}
}
diff --git a/src/applications/diffusion/herald/DiffusionCommitPackageOwnerHeraldField.php b/src/applications/diffusion/herald/DiffusionCommitPackageOwnerHeraldField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/herald/DiffusionCommitPackageOwnerHeraldField.php
@@ -0,0 +1,37 @@
+<?php
+
+final class DiffusionCommitPackageOwnerHeraldField
+ extends DiffusionCommitHeraldField {
+
+ const FIELDCONST = 'diffusion.commit.package.owners';
+
+ public function getHeraldFieldName() {
+ return pht('Affected package owners');
+ }
+
+ public function getHeraldFieldValue($object) {
+ $packages = $this->getAdapter()->loadAffectedPackages();
+ if (!$packages) {
+ return array();
+ }
+
+ $owners = PhabricatorOwnersOwner::loadAllForPackages($packages);
+
+ return mpull($owners, 'getUserPHID');
+ }
+
+ 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;
+ }
+ }
+
+}
diff --git a/src/applications/diffusion/herald/DiffusionCommitRepositoryHeraldField.php b/src/applications/diffusion/herald/DiffusionCommitRepositoryHeraldField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/herald/DiffusionCommitRepositoryHeraldField.php
@@ -0,0 +1,24 @@
+<?php
+
+final class DiffusionCommitRepositoryHeraldField
+ extends DiffusionCommitHeraldField {
+
+ const FIELDCONST = 'diffusion.commit.repository';
+
+ public function getHeraldFieldName() {
+ return pht('Repository');
+ }
+
+ public function getHeraldFieldValue($object) {
+ return $object->getRepository()->getPHID();
+ }
+
+ protected function getHeraldFieldStandardConditions() {
+ return self::STANDARD_PHID;
+ }
+
+ public function getHeraldFieldValueType($condition) {
+ return HeraldAdapter::VALUE_REPOSITORY;
+ }
+
+}
diff --git a/src/applications/subscriptions/herald/HeraldSubscribersField.php b/src/applications/diffusion/herald/DiffusionCommitRepositoryProjectsHeraldField.php
copy from src/applications/subscriptions/herald/HeraldSubscribersField.php
copy to src/applications/diffusion/herald/DiffusionCommitRepositoryProjectsHeraldField.php
--- a/src/applications/subscriptions/herald/HeraldSubscribersField.php
+++ b/src/applications/diffusion/herald/DiffusionCommitRepositoryProjectsHeraldField.php
@@ -1,20 +1,18 @@
<?php
-final class HeraldSubscribersField extends HeraldField {
+final class DiffusionCommitRepositoryProjectsHeraldField
+ extends DiffusionCommitHeraldField {
- const FIELDCONST = 'cc';
+ const FIELDCONST = 'diffusion.commit.repository.projects';
public function getHeraldFieldName() {
- return pht('Subscribers');
- }
-
- public function supportsObject($object) {
- return ($object instanceof PhabricatorSubscribableInterface);
+ return pht('Repository projects');
}
public function getHeraldFieldValue($object) {
- $phid = $object->getPHID();
- return PhabricatorSubscribersQuery::loadSubscribersForPHID($phid);
+ return PhabricatorEdgeQuery::loadDestinationPHIDs(
+ $object->getRepository()->getPHID(),
+ PhabricatorProjectObjectHasProjectEdgeType::EDGECONST);
}
protected function getHeraldFieldStandardConditions() {
diff --git a/src/applications/subscriptions/herald/HeraldSubscribersField.php b/src/applications/diffusion/herald/DiffusionCommitReviewerHeraldField.php
copy from src/applications/subscriptions/herald/HeraldSubscribersField.php
copy to src/applications/diffusion/herald/DiffusionCommitReviewerHeraldField.php
--- a/src/applications/subscriptions/herald/HeraldSubscribersField.php
+++ b/src/applications/diffusion/herald/DiffusionCommitReviewerHeraldField.php
@@ -1,24 +1,20 @@
<?php
-final class HeraldSubscribersField extends HeraldField {
+final class DiffusionCommitReviewerHeraldField
+ extends DiffusionCommitHeraldField {
- const FIELDCONST = 'cc';
+ const FIELDCONST = 'diffusion.commit.reviewer';
public function getHeraldFieldName() {
- return pht('Subscribers');
- }
-
- public function supportsObject($object) {
- return ($object instanceof PhabricatorSubscribableInterface);
+ return pht('Reviewer');
}
public function getHeraldFieldValue($object) {
- $phid = $object->getPHID();
- return PhabricatorSubscribersQuery::loadSubscribersForPHID($phid);
+ return $object->getCommitData()->getCommitDetail('reviewerPHID');
}
protected function getHeraldFieldStandardConditions() {
- return self::STANDARD_LIST;
+ return self::STANDARD_PHID_NULLABLE;
}
public function getHeraldFieldValueType($condition) {
@@ -27,7 +23,7 @@
case HeraldAdapter::CONDITION_NOT_EXISTS:
return HeraldAdapter::VALUE_NONE;
default:
- return HeraldAdapter::VALUE_PROJECT;
+ return HeraldAdapter::VALUE_USER;
}
}
diff --git a/src/applications/diffusion/herald/DiffusionCommitRevisionAcceptedHeraldField.php b/src/applications/diffusion/herald/DiffusionCommitRevisionAcceptedHeraldField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/herald/DiffusionCommitRevisionAcceptedHeraldField.php
@@ -0,0 +1,40 @@
+<?php
+
+final class DiffusionCommitRevisionAcceptedHeraldField
+ extends DiffusionCommitHeraldField {
+
+ const FIELDCONST = 'diffusion.commit.revision.accepted';
+
+ public function getHeraldFieldName() {
+ return pht('Accepted Differential revision');
+ }
+
+ public function getHeraldFieldValue($object) {
+ $revision = $this->getAdapter()->loadDifferentialRevision();
+ if (!$revision) {
+ return null;
+ }
+
+ $data = $object->getCommitData();
+ $status = $data->getCommitDetail(
+ 'precommitRevisionStatus',
+ $revision->getStatus());
+
+ switch ($status) {
+ case ArcanistDifferentialRevisionStatus::ACCEPTED:
+ case ArcanistDifferentialRevisionStatus::CLOSED:
+ return $revision->getPHID();
+ }
+
+ return null;
+ }
+
+ protected function getHeraldFieldStandardConditions() {
+ return self::STANDARD_PHID_BOOL;
+ }
+
+ public function getHeraldFieldValueType($condition) {
+ return HeraldAdapter::VALUE_NONE;
+ }
+
+}
diff --git a/src/applications/diffusion/herald/DiffusionCommitRevisionHeraldField.php b/src/applications/diffusion/herald/DiffusionCommitRevisionHeraldField.php
new file mode 100644
--- /dev/null
+++ b/src/applications/diffusion/herald/DiffusionCommitRevisionHeraldField.php
@@ -0,0 +1,30 @@
+<?php
+
+final class DiffusionCommitRevisionHeraldField
+ extends DiffusionCommitHeraldField {
+
+ const FIELDCONST = 'diffusion.commit.revision';
+
+ public function getHeraldFieldName() {
+ return pht('Differential revision');
+ }
+
+ public function getHeraldFieldValue($object) {
+ $revision = $this->getAdapter()->loadDifferentialRevision();
+
+ 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/subscriptions/herald/HeraldSubscribersField.php b/src/applications/diffusion/herald/DiffusionCommitRevisionReviewersHeraldField.php
copy from src/applications/subscriptions/herald/HeraldSubscribersField.php
copy to src/applications/diffusion/herald/DiffusionCommitRevisionReviewersHeraldField.php
--- a/src/applications/subscriptions/herald/HeraldSubscribersField.php
+++ b/src/applications/diffusion/herald/DiffusionCommitRevisionReviewersHeraldField.php
@@ -1,20 +1,22 @@
<?php
-final class HeraldSubscribersField extends HeraldField {
+final class DiffusionCommitRevisionReviewersHeraldField
+ extends DiffusionCommitHeraldField {
- const FIELDCONST = 'cc';
+ const FIELDCONST = 'diffusion.commit.revision.reviewers';
public function getHeraldFieldName() {
- return pht('Subscribers');
- }
-
- public function supportsObject($object) {
- return ($object instanceof PhabricatorSubscribableInterface);
+ return pht('Differential reviewers');
}
public function getHeraldFieldValue($object) {
- $phid = $object->getPHID();
- return PhabricatorSubscribersQuery::loadSubscribersForPHID($phid);
+ $revision = $this->getAdapter()->loadDifferentialRevision();
+
+ if (!$revision) {
+ return array();
+ }
+
+ return $revision->getReviewers();
}
protected function getHeraldFieldStandardConditions() {
@@ -27,7 +29,7 @@
case HeraldAdapter::CONDITION_NOT_EXISTS:
return HeraldAdapter::VALUE_NONE;
default:
- return HeraldAdapter::VALUE_PROJECT;
+ return HeraldAdapter::VALUE_USER_OR_PROJECT;
}
}
diff --git a/src/applications/subscriptions/herald/HeraldSubscribersField.php b/src/applications/diffusion/herald/DiffusionCommitRevisionSubscribersHeraldField.php
copy from src/applications/subscriptions/herald/HeraldSubscribersField.php
copy to src/applications/diffusion/herald/DiffusionCommitRevisionSubscribersHeraldField.php
--- a/src/applications/subscriptions/herald/HeraldSubscribersField.php
+++ b/src/applications/diffusion/herald/DiffusionCommitRevisionSubscribersHeraldField.php
@@ -1,19 +1,22 @@
<?php
-final class HeraldSubscribersField extends HeraldField {
+final class DiffusionCommitRevisionSubscribersHeraldField
+ extends DiffusionCommitHeraldField {
- const FIELDCONST = 'cc';
+ const FIELDCONST = 'diffusion.commit.revision.subscribers';
public function getHeraldFieldName() {
- return pht('Subscribers');
- }
-
- public function supportsObject($object) {
- return ($object instanceof PhabricatorSubscribableInterface);
+ return pht('Differential subscribers');
}
public function getHeraldFieldValue($object) {
- $phid = $object->getPHID();
+ $revision = $this->getAdapter()->loadDifferentialRevision();
+
+ if (!$revision) {
+ return array();
+ }
+
+ $phid = $revision->getPHID();
return PhabricatorSubscribersQuery::loadSubscribersForPHID($phid);
}
@@ -27,7 +30,7 @@
case HeraldAdapter::CONDITION_NOT_EXISTS:
return HeraldAdapter::VALUE_NONE;
default:
- return HeraldAdapter::VALUE_PROJECT;
+ return HeraldAdapter::VALUE_USER_OR_PROJECT;
}
}
diff --git a/src/applications/herald/adapter/HeraldCommitAdapter.php b/src/applications/diffusion/herald/HeraldCommitAdapter.php
rename from src/applications/herald/adapter/HeraldCommitAdapter.php
rename to src/applications/diffusion/herald/HeraldCommitAdapter.php
--- a/src/applications/herald/adapter/HeraldCommitAdapter.php
+++ b/src/applications/diffusion/herald/HeraldCommitAdapter.php
@@ -2,9 +2,6 @@
final class HeraldCommitAdapter extends HeraldAdapter {
- const FIELD_NEED_AUDIT_FOR_PACKAGE = 'need-audit-for-package';
- const FIELD_REPOSITORY_AUTOCLOSE_BRANCH = 'repository-autoclose-branch';
-
protected $diff;
protected $revision;
@@ -86,57 +83,6 @@
return pht('This rule can trigger for **repositories** and **projects**.');
}
- public function getFieldNameMap() {
- return array(
- self::FIELD_NEED_AUDIT_FOR_PACKAGE =>
- pht('Affected packages that need audit'),
- self::FIELD_REPOSITORY_AUTOCLOSE_BRANCH
- => pht('Commit is on closing branch'),
- ) + parent::getFieldNameMap();
- }
-
- public function getFields() {
- return array_merge(
- array(
- self::FIELD_BODY,
- self::FIELD_AUTHOR,
- self::FIELD_COMMITTER,
- self::FIELD_REVIEWER,
- self::FIELD_REPOSITORY,
- self::FIELD_REPOSITORY_PROJECTS,
- self::FIELD_DIFF_FILE,
- self::FIELD_DIFF_CONTENT,
- self::FIELD_DIFF_ADDED_CONTENT,
- self::FIELD_DIFF_REMOVED_CONTENT,
- self::FIELD_DIFF_ENORMOUS,
- self::FIELD_AFFECTED_PACKAGE,
- self::FIELD_AFFECTED_PACKAGE_OWNER,
- self::FIELD_NEED_AUDIT_FOR_PACKAGE,
- self::FIELD_DIFFERENTIAL_REVISION,
- self::FIELD_DIFFERENTIAL_ACCEPTED,
- self::FIELD_DIFFERENTIAL_REVIEWERS,
- self::FIELD_DIFFERENTIAL_CCS,
- self::FIELD_BRANCHES,
- self::FIELD_REPOSITORY_AUTOCLOSE_BRANCH,
- ),
- parent::getFields());
- }
-
- public function getConditionsForField($field) {
- switch ($field) {
- case self::FIELD_NEED_AUDIT_FOR_PACKAGE:
- return array(
- self::CONDITION_INCLUDE_ANY,
- self::CONDITION_INCLUDE_NONE,
- );
- case self::FIELD_REPOSITORY_AUTOCLOSE_BRANCH:
- return array(
- self::CONDITION_UNCONDITIONALLY,
- );
- }
- return parent::getConditionsForField($field);
- }
-
public function getActions($rule_type) {
switch ($rule_type) {
case HeraldRuleTypeConfig::RULE_TYPE_GLOBAL:
@@ -165,17 +111,6 @@
}
}
- public function getValueTypeForFieldAndCondition($field, $condition) {
- switch ($field) {
- case self::FIELD_DIFFERENTIAL_CCS:
- return self::VALUE_EMAIL;
- case self::FIELD_NEED_AUDIT_FOR_PACKAGE:
- return self::VALUE_OWNERS_PACKAGE;
- }
-
- return parent::getValueTypeForFieldAndCondition($field, $condition);
- }
-
public static function newLegacyAdapter(
PhabricatorRepository $repository,
PhabricatorRepositoryCommit $commit,
@@ -221,10 +156,6 @@
return $this;
}
- public function getPHID() {
- return $this->commit->getPHID();
- }
-
public function getAuditMap() {
return $this->auditMap;
}
@@ -261,7 +192,7 @@
return $this->affectedPackages;
}
- public function loadAuditNeededPackage() {
+ public function loadAuditNeededPackages() {
if ($this->auditNeededPackages === null) {
$status_arr = array(
PhabricatorAuditStatusConstants::AUDIT_REQUIRED,
@@ -351,7 +282,12 @@
return $diff;
}
- private function getDiffContent($type) {
+ public function isDiffEnormous() {
+ $this->loadDiffContent('*');
+ return ($this->commitDiff instanceof Exception);
+ }
+
+ public function loadDiffContent($type) {
if ($this->commitDiff === null) {
try {
$this->commitDiff = $this->loadCommitDiff();
@@ -397,94 +333,6 @@
return $result;
}
- public function getHeraldField($field) {
- $data = $this->commitData;
- switch ($field) {
- case self::FIELD_BODY:
- return $data->getCommitMessage();
- case self::FIELD_AUTHOR:
- return $data->getCommitDetail('authorPHID');
- case self::FIELD_COMMITTER:
- return $data->getCommitDetail('committerPHID');
- case self::FIELD_REVIEWER:
- return $data->getCommitDetail('reviewerPHID');
- case self::FIELD_DIFF_FILE:
- return $this->loadAffectedPaths();
- case self::FIELD_REPOSITORY:
- return $this->repository->getPHID();
- case self::FIELD_REPOSITORY_PROJECTS:
- return $this->repository->getProjectPHIDs();
- 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->commitDiff instanceof Exception);
- case self::FIELD_AFFECTED_PACKAGE:
- $packages = $this->loadAffectedPackages();
- return mpull($packages, 'getPHID');
- case self::FIELD_AFFECTED_PACKAGE_OWNER:
- $packages = $this->loadAffectedPackages();
- $owners = PhabricatorOwnersOwner::loadAllForPackages($packages);
- return mpull($owners, 'getUserPHID');
- case self::FIELD_NEED_AUDIT_FOR_PACKAGE:
- return $this->loadAuditNeededPackage();
- case self::FIELD_DIFFERENTIAL_REVISION:
- $revision = $this->loadDifferentialRevision();
- if (!$revision) {
- return null;
- }
- return $revision->getID();
- case self::FIELD_DIFFERENTIAL_ACCEPTED:
- $revision = $this->loadDifferentialRevision();
- if (!$revision) {
- return null;
- }
-
- $status = $data->getCommitDetail(
- 'precommitRevisionStatus',
- $revision->getStatus());
- switch ($status) {
- case ArcanistDifferentialRevisionStatus::ACCEPTED:
- case ArcanistDifferentialRevisionStatus::CLOSED:
- return $revision->getPHID();
- }
-
- return null;
- case self::FIELD_DIFFERENTIAL_REVIEWERS:
- $revision = $this->loadDifferentialRevision();
- if (!$revision) {
- return array();
- }
- return $revision->getReviewers();
- case self::FIELD_DIFFERENTIAL_CCS:
- $revision = $this->loadDifferentialRevision();
- if (!$revision) {
- return array();
- }
- return $revision->getCCPHIDs();
- case self::FIELD_BRANCHES:
- $params = array(
- 'callsign' => $this->repository->getCallsign(),
- 'contains' => $this->commit->getCommitIdentifier(),
- );
-
- $result = id(new ConduitCall('diffusion.branchquery', $params))
- ->setUser(PhabricatorUser::getOmnipotentUser())
- ->execute();
-
- $refs = DiffusionRepositoryRef::loadAllFromDictionaries($result);
- return mpull($refs, 'getShortName');
- case self::FIELD_REPOSITORY_AUTOCLOSE_BRANCH:
- return $this->repository->shouldAutocloseCommit($this->commit);
- }
-
- return parent::getHeraldField($field);
- }
-
public function applyHeraldEffects(array $effects) {
assert_instances_of($effects, 'HeraldEffect');
diff --git a/src/applications/herald/field/HeraldField.php b/src/applications/herald/field/HeraldField.php
--- a/src/applications/herald/field/HeraldField.php
+++ b/src/applications/herald/field/HeraldField.php
@@ -7,7 +7,10 @@
const STANDARD_LIST = 'standard.list';
const STANDARD_BOOL = 'standard.bool';
const STANDARD_TEXT = 'standard.text';
+ const STANDARD_TEXT_LIST = 'standard.text.list';
+ const STANDARD_TEXT_MAP = 'standard.text.map';
const STANDARD_PHID = 'standard.phid';
+ const STANDARD_PHID_BOOL = 'standard.phid.bool';
const STANDARD_PHID_NULLABLE = 'standard.phid.nullable';
abstract public function getHeraldFieldName();
@@ -41,6 +44,11 @@
HeraldAdapter::CONDITION_IS_ANY,
HeraldAdapter::CONDITION_IS_NOT_ANY,
);
+ case self::STANDARD_PHID_BOOL:
+ return array(
+ HeraldAdapter::CONDITION_EXISTS,
+ HeraldAdapter::CONDITION_NOT_EXISTS,
+ );
case self::STANDARD_PHID_NULLABLE:
return array(
HeraldAdapter::CONDITION_IS_ANY,
@@ -48,6 +56,17 @@
HeraldAdapter::CONDITION_EXISTS,
HeraldAdapter::CONDITION_NOT_EXISTS,
);
+ case self::STANDARD_TEXT_LIST:
+ return array(
+ HeraldAdapter::CONDITION_CONTAINS,
+ HeraldAdapter::CONDITION_REGEXP,
+ );
+ case self::STANDARD_TEXT_MAP:
+ return array(
+ HeraldAdapter::CONDITION_CONTAINS,
+ HeraldAdapter::CONDITION_REGEXP,
+ HeraldAdapter::CONDITION_REGEXP_PAIR,
+ );
}
throw new Exception(pht('Unknown standard condition set.'));
diff --git a/src/applications/maniphest/herald/ManiphestTaskAssigneeHeraldField.php b/src/applications/maniphest/herald/ManiphestTaskAssigneeHeraldField.php
--- a/src/applications/maniphest/herald/ManiphestTaskAssigneeHeraldField.php
+++ b/src/applications/maniphest/herald/ManiphestTaskAssigneeHeraldField.php
@@ -18,7 +18,13 @@
}
public function getHeraldFieldValueType($condition) {
- return HeraldAdapter::VALUE_USER;
+ 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/subscriptions/herald/HeraldSubscribersField.php b/src/applications/subscriptions/herald/HeraldSubscribersField.php
--- a/src/applications/subscriptions/herald/HeraldSubscribersField.php
+++ b/src/applications/subscriptions/herald/HeraldSubscribersField.php
@@ -27,7 +27,7 @@
case HeraldAdapter::CONDITION_NOT_EXISTS:
return HeraldAdapter::VALUE_NONE;
default:
- return HeraldAdapter::VALUE_PROJECT;
+ return HeraldAdapter::VALUE_USER_OR_PROJECT;
}
}

File Metadata

Mime Type
text/plain
Expires
Sun, Mar 16, 2:39 PM (5 d, 23 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7224892
Default Alt Text
D13567.id32827.diff (47 KB)

Event Timeline