diff --git a/src/applications/differential/customfield/DifferentialCustomField.php b/src/applications/differential/customfield/DifferentialCustomField.php index 97f9a72da3..f95ed86faf 100644 --- a/src/applications/differential/customfield/DifferentialCustomField.php +++ b/src/applications/differential/customfield/DifferentialCustomField.php @@ -1,221 +1,225 @@ getFieldKey(); } public function shouldEnableForRole($role) { switch ($role) { case self::ROLE_COMMITMESSAGE: return $this->shouldAppearInCommitMessage(); case self::ROLE_COMMITMESSAGEEDIT: return $this->shouldAppearInCommitMessage() && $this->shouldAllowEditInCommitMessage(); } return parent::shouldEnableForRole($role); } protected function renderHandleList(array $handles) { if (!$handles) { return null; } $out = array(); foreach ($handles as $handle) { $out[] = $handle->renderLink(); } return phutil_implode_html(phutil_tag('br'), $out); } public function getRequiredDiffPropertiesForRevisionView() { if ($this->getProxy()) { return $this->getProxy()->getRequiredDiffPropertiesForRevisionView(); } return array(); } - protected function parseObjectList($value, array $types) { + protected function parseObjectList( + $value, + array $types, + $allow_partial = false) { return id(new PhabricatorObjectListQuery()) ->setViewer($this->getViewer()) ->setAllowedTypes($types) ->setObjectList($value) + ->setAllowPartialResults($allow_partial) ->execute(); } protected function renderObjectList(array $handles) { if (!$handles) { return null; } $out = array(); foreach ($handles as $handle) { if ($handle->getPolicyFiltered()) { $out[] = $handle->getPHID(); } else if ($handle->isComplete()) { $out[] = $handle->getObjectName(); } } return implode(', ', $out); } public function getWarningsForDetailView() { if ($this->getProxy()) { return $this->getProxy()->getWarningsForDetailView(); } return array(); } /* -( Integration with Commit Messages )----------------------------------- */ /** * @task commitmessage */ public function shouldAppearInCommitMessage() { if ($this->getProxy()) { return $this->getProxy()->shouldAppearInCommitMessage(); } return false; } /** * @task commitmessage */ public function shouldAppearInCommitMessageTemplate() { if ($this->getProxy()) { return $this->getProxy()->shouldAppearInCommitMessageTemplate(); } return false; } /** * @task commitmessage */ public function shouldAllowEditInCommitMessage() { if ($this->getProxy()) { return $this->getProxy()->shouldAllowEditInCommitMessage(); } return true; } /** * @task commitmessage */ public function getProTips() { if ($this->getProxy()) { return $this->getProxy()->getProTips(); } return array(); } /** * @task commitmessage */ public function getCommitMessageLabels() { if ($this->getProxy()) { return $this->getProxy()->getCommitMessageLabels(); } return array($this->renderCommitMessageLabel()); } /** * @task commitmessage */ public function parseValueFromCommitMessage($value) { if ($this->getProxy()) { return $this->getProxy()->parseValueFromCommitMessage($value); } return $value; } /** * @task commitmessage */ public function readValueFromCommitMessage($value) { if ($this->getProxy()) { $this->getProxy()->readValueFromCommitMessage($value); return $this; } return $this; } /** * @task commitmessage */ public function shouldOverwriteWhenCommitMessageIsEdited() { if ($this->getProxy()) { return $this->getProxy()->shouldOverwriteWhenCommitMessageIsEdited(); } return false; } /** * @task commitmessage */ public function getRequiredHandlePHIDsForCommitMessage() { if ($this->getProxy()) { return $this->getProxy()->getRequiredHandlePHIDsForCommitMessage(); } return array(); } /** * @task commitmessage */ public function renderCommitMessageLabel() { if ($this->getProxy()) { return $this->getProxy()->renderCommitMessageLabel(); } return $this->getFieldName(); } /** * @task commitmessage */ public function renderCommitMessageValue(array $handles) { if ($this->getProxy()) { return $this->getProxy()->renderCommitMessageValue($handles); } throw new PhabricatorCustomFieldImplementationIncompleteException($this); } /** * @task commitmessage */ public function validateCommitMessageValue($value) { if ($this->getProxy()) { return $this->getProxy()->validateCommitMessageValue($value); } return; } } diff --git a/src/applications/differential/customfield/DifferentialReviewedByField.php b/src/applications/differential/customfield/DifferentialReviewedByField.php index 9c905712d8..1e4d497065 100644 --- a/src/applications/differential/customfield/DifferentialReviewedByField.php +++ b/src/applications/differential/customfield/DifferentialReviewedByField.php @@ -1,62 +1,72 @@ getReviewerStatus() as $reviewer) { switch ($reviewer->getStatus()) { case DifferentialReviewerStatus::STATUS_ACCEPTED: case DifferentialReviewerStatus::STATUS_ACCEPTED_OLDER: $phids[] = $reviewer->getReviewerPHID(); break; } } return $phids; } public function shouldAppearInCommitMessage() { return true; } + public function parseValueFromCommitMessage($value) { + return $this->parseObjectList( + $value, + array( + PhabricatorPeoplePHIDTypeUser::TYPECONST, + PhabricatorProjectPHIDTypeProject::TYPECONST, + ), + $allow_partial = true); + } + public function getRequiredHandlePHIDsForCommitMessage() { return $this->getValue(); } public function renderCommitMessageValue(array $handles) { return $this->renderObjectList($handles); } }