diff --git a/src/applications/diffusion/herald/DiffusionAuditorsHeraldAction.php b/src/applications/diffusion/herald/DiffusionAuditorsHeraldAction.php index 2ca2ee2b6b..4ec23b1faa 100644 --- a/src/applications/diffusion/herald/DiffusionAuditorsHeraldAction.php +++ b/src/applications/diffusion/herald/DiffusionAuditorsHeraldAction.php @@ -1,74 +1,100 @@ getAdapter(); $object = $adapter->getObject(); $auditors = $object->getAudits(); + // Don't try to add commit authors as auditors. + $authors = array(); + foreach ($phids as $key => $phid) { + if ($phid == $object->getAuthorPHID()) { + $authors[] = $phid; + unset($phids[$key]); + } + } + + if ($authors) { + $this->logEffect(self::DO_AUTHORS, $authors); + if (!$phids) { + return; + } + } + $current = array(); foreach ($auditors as $auditor) { if ($auditor->isInteresting()) { $current[] = $auditor->getAuditorPHID(); } } $allowed_types = array( PhabricatorPeopleUserPHIDType::TYPECONST, PhabricatorProjectProjectPHIDType::TYPECONST, PhabricatorOwnersPackagePHIDType::TYPECONST, ); $targets = $this->loadStandardTargets($phids, $allowed_types, $current); if (!$targets) { return; } $phids = array_fuse(array_keys($targets)); $xaction = $adapter->newTransaction() ->setTransactionType(DiffusionCommitAuditorsTransaction::TRANSACTIONTYPE) ->setNewValue( array( '+' => $phids, )); $adapter->queueTransaction($xaction); $this->logEffect(self::DO_ADD_AUDITORS, $phids); } protected function getActionEffectMap() { return array( + self::DO_AUTHORS => array( + 'icon' => 'fa-user', + 'color' => 'grey', + 'name' => pht('Commit Author'), + ), self::DO_ADD_AUDITORS => array( 'icon' => 'fa-user', 'color' => 'green', 'name' => pht('Added Auditors'), ), ); } protected function renderActionEffectDescription($type, $data) { switch ($type) { + case self::DO_AUTHORS: + return pht( + 'Declined to add commit author as auditor: %s.', + $this->renderHandleList($data)); case self::DO_ADD_AUDITORS: return pht( 'Added %s auditor(s): %s.', phutil_count($data), $this->renderHandleList($data)); } } }