diff --git a/src/__celerity_resource_map__.php b/src/__celerity_resource_map__.php index 780dde3d0f..6336ab1982 100644 --- a/src/__celerity_resource_map__.php +++ b/src/__celerity_resource_map__.php @@ -3670,7 +3670,7 @@ celerity_register_resource_map(array( ), 'phabricator-zindex-css' => array( - 'uri' => '/res/1767701c/rsrc/css/core/z-index.css', + 'uri' => '/res/b443d508/rsrc/css/core/z-index.css', 'type' => 'css', 'requires' => array( @@ -4171,7 +4171,7 @@ celerity_register_resource_map(array( ), array( 'packages' => array( - '5f35f9d7' => + 'beac5d1a' => array( 'name' => 'core.pkg.css', 'symbols' => @@ -4218,7 +4218,7 @@ celerity_register_resource_map(array( 39 => 'phabricator-property-list-view-css', 40 => 'phabricator-tag-view-css', ), - 'uri' => '/res/pkg/5f35f9d7/core.pkg.css', + 'uri' => '/res/pkg/beac5d1a/core.pkg.css', 'type' => 'css', ), '8977e356' => @@ -4409,15 +4409,15 @@ celerity_register_resource_map(array( ), 'reverse' => array( - 'aphront-dialog-view-css' => '5f35f9d7', - 'aphront-error-view-css' => '5f35f9d7', - 'aphront-list-filter-view-css' => '5f35f9d7', - 'aphront-pager-view-css' => '5f35f9d7', - 'aphront-panel-view-css' => '5f35f9d7', - 'aphront-table-view-css' => '5f35f9d7', - 'aphront-tokenizer-control-css' => '5f35f9d7', - 'aphront-tooltip-css' => '5f35f9d7', - 'aphront-typeahead-control-css' => '5f35f9d7', + 'aphront-dialog-view-css' => 'beac5d1a', + 'aphront-error-view-css' => 'beac5d1a', + 'aphront-list-filter-view-css' => 'beac5d1a', + 'aphront-pager-view-css' => 'beac5d1a', + 'aphront-panel-view-css' => 'beac5d1a', + 'aphront-table-view-css' => 'beac5d1a', + 'aphront-tokenizer-control-css' => 'beac5d1a', + 'aphront-tooltip-css' => 'beac5d1a', + 'aphront-typeahead-control-css' => 'beac5d1a', 'differential-changeset-view-css' => '09216861', 'differential-core-view-css' => '09216861', 'differential-inline-comment-editor' => 'd07a3bc2', @@ -4431,7 +4431,7 @@ celerity_register_resource_map(array( 'differential-table-of-contents-css' => '09216861', 'diffusion-commit-view-css' => 'c8ce2d88', 'diffusion-icons-css' => 'c8ce2d88', - 'global-drag-and-drop-css' => '5f35f9d7', + 'global-drag-and-drop-css' => 'beac5d1a', 'inline-comment-summary-css' => '09216861', 'javelin-aphlict' => '8977e356', 'javelin-behavior' => '2dbbb7d1', @@ -4504,55 +4504,55 @@ celerity_register_resource_map(array( 'javelin-util' => '2dbbb7d1', 'javelin-vector' => '2dbbb7d1', 'javelin-workflow' => '2dbbb7d1', - 'lightbox-attachment-css' => '5f35f9d7', + 'lightbox-attachment-css' => 'beac5d1a', 'maniphest-task-summary-css' => '06bacb9a', 'maniphest-transaction-detail-css' => '06bacb9a', - 'phabricator-action-list-view-css' => '5f35f9d7', - 'phabricator-application-launch-view-css' => '5f35f9d7', + 'phabricator-action-list-view-css' => 'beac5d1a', + 'phabricator-application-launch-view-css' => 'beac5d1a', 'phabricator-busy' => '8977e356', 'phabricator-content-source-view-css' => '09216861', - 'phabricator-core-css' => '5f35f9d7', - 'phabricator-crumbs-view-css' => '5f35f9d7', + 'phabricator-core-css' => 'beac5d1a', + 'phabricator-crumbs-view-css' => 'beac5d1a', 'phabricator-drag-and-drop-file-upload' => 'd07a3bc2', 'phabricator-dropdown-menu' => '8977e356', 'phabricator-file-upload' => '8977e356', - 'phabricator-filetree-view-css' => '5f35f9d7', - 'phabricator-flag-css' => '5f35f9d7', - 'phabricator-header-view-css' => '5f35f9d7', + 'phabricator-filetree-view-css' => 'beac5d1a', + 'phabricator-flag-css' => 'beac5d1a', + 'phabricator-header-view-css' => 'beac5d1a', 'phabricator-hovercard' => '8977e356', - 'phabricator-jump-nav' => '5f35f9d7', + 'phabricator-jump-nav' => 'beac5d1a', 'phabricator-keyboard-shortcut' => '8977e356', 'phabricator-keyboard-shortcut-manager' => '8977e356', - 'phabricator-main-menu-view' => '5f35f9d7', + 'phabricator-main-menu-view' => 'beac5d1a', 'phabricator-menu-item' => '8977e356', - 'phabricator-nav-view-css' => '5f35f9d7', + 'phabricator-nav-view-css' => 'beac5d1a', 'phabricator-notification' => '8977e356', - 'phabricator-notification-css' => '5f35f9d7', - 'phabricator-notification-menu-css' => '5f35f9d7', - 'phabricator-object-item-list-view-css' => '5f35f9d7', + 'phabricator-notification-css' => 'beac5d1a', + 'phabricator-notification-menu-css' => 'beac5d1a', + 'phabricator-object-item-list-view-css' => 'beac5d1a', 'phabricator-object-selector-css' => '09216861', 'phabricator-phtize' => '8977e356', 'phabricator-prefab' => '8977e356', 'phabricator-project-tag-css' => '06bacb9a', - 'phabricator-property-list-view-css' => '5f35f9d7', - 'phabricator-remarkup-css' => '5f35f9d7', + 'phabricator-property-list-view-css' => 'beac5d1a', + 'phabricator-remarkup-css' => 'beac5d1a', 'phabricator-shaped-request' => 'd07a3bc2', - 'phabricator-side-menu-view-css' => '5f35f9d7', - 'phabricator-standard-page-view' => '5f35f9d7', - 'phabricator-tag-view-css' => '5f35f9d7', + 'phabricator-side-menu-view-css' => 'beac5d1a', + 'phabricator-standard-page-view' => 'beac5d1a', + 'phabricator-tag-view-css' => 'beac5d1a', 'phabricator-textareautils' => '8977e356', 'phabricator-tooltip' => '8977e356', - 'phabricator-transaction-view-css' => '5f35f9d7', - 'phabricator-zindex-css' => '5f35f9d7', - 'phui-button-css' => '5f35f9d7', - 'phui-form-css' => '5f35f9d7', - 'phui-form-view-css' => '5f35f9d7', - 'phui-icon-view-css' => '5f35f9d7', - 'phui-spacing-css' => '5f35f9d7', - 'sprite-apps-large-css' => '5f35f9d7', - 'sprite-gradient-css' => '5f35f9d7', - 'sprite-icons-css' => '5f35f9d7', - 'sprite-menu-css' => '5f35f9d7', - 'syntax-highlighting-css' => '5f35f9d7', + 'phabricator-transaction-view-css' => 'beac5d1a', + 'phabricator-zindex-css' => 'beac5d1a', + 'phui-button-css' => 'beac5d1a', + 'phui-form-css' => 'beac5d1a', + 'phui-form-view-css' => 'beac5d1a', + 'phui-icon-view-css' => 'beac5d1a', + 'phui-spacing-css' => 'beac5d1a', + 'sprite-apps-large-css' => 'beac5d1a', + 'sprite-gradient-css' => 'beac5d1a', + 'sprite-icons-css' => 'beac5d1a', + 'sprite-menu-css' => 'beac5d1a', + 'syntax-highlighting-css' => 'beac5d1a', ), )); diff --git a/src/applications/herald/adapter/HeraldCommitAdapter.php b/src/applications/herald/adapter/HeraldCommitAdapter.php index 5f65532499..fd41923d24 100644 --- a/src/applications/herald/adapter/HeraldCommitAdapter.php +++ b/src/applications/herald/adapter/HeraldCommitAdapter.php @@ -18,6 +18,7 @@ final class HeraldCommitAdapter extends HeraldAdapter { protected $commitData; protected $emailPHIDs = array(); + protected $addCCPHIDs = array(); protected $auditMap = array(); protected $affectedPaths; @@ -95,7 +96,6 @@ final class HeraldCommitAdapter extends HeraldAdapter { case HeraldRuleTypeConfig::RULE_TYPE_GLOBAL: return array( self::ACTION_ADD_CC, - self::ACTION_REMOVE_CC, self::ACTION_EMAIL, self::ACTION_AUDIT, self::ACTION_NOTHING, @@ -103,7 +103,6 @@ final class HeraldCommitAdapter extends HeraldAdapter { case HeraldRuleTypeConfig::RULE_TYPE_PERSONAL: return array( self::ACTION_ADD_CC, - self::ACTION_REMOVE_CC, self::ACTION_EMAIL, self::ACTION_FLAG, self::ACTION_AUDIT, @@ -145,6 +144,10 @@ final class HeraldCommitAdapter extends HeraldAdapter { return array_keys($this->emailPHIDs); } + public function getAddCCMap() { + return $this->addCCPHIDs; + } + public function getAuditMap() { return $this->auditMap; } @@ -323,6 +326,18 @@ final class HeraldCommitAdapter extends HeraldAdapter { true, pht('Added address to email targets.')); break; + case self::ACTION_ADD_CC: + foreach ($effect->getTarget() as $phid) { + if (empty($this->addCCPHIDs[$phid])) { + $this->addCCPHIDs[$phid] = array(); + } + $this->addCCPHIDs[$phid][] = $effect->getRuleID(); + } + $result[] = new HeraldApplyTranscript( + $effect, + true, + pht('Added address to CC.')); + break; case self::ACTION_AUDIT: foreach ($effect->getTarget() as $phid) { if (empty($this->auditMap[$phid])) { diff --git a/src/applications/repository/worker/PhabricatorRepositoryCommitHeraldWorker.php b/src/applications/repository/worker/PhabricatorRepositoryCommitHeraldWorker.php index 963c22799d..81f420bee8 100644 --- a/src/applications/repository/worker/PhabricatorRepositoryCommitHeraldWorker.php +++ b/src/applications/repository/worker/PhabricatorRepositoryCommitHeraldWorker.php @@ -41,8 +41,9 @@ final class PhabricatorRepositoryCommitHeraldWorker $xscript = $engine->getTranscript(); $audit_phids = $adapter->getAuditMap(); - if ($audit_phids) { - $this->createAudits($commit, $audit_phids, $rules); + $cc_phids = $adapter->getAddCCMap(); + if ($audit_phids || $cc_phids) { + $this->createAudits($commit, $audit_phids, $cc_phids, $rules); } $explicit_auditors = $this->createAuditsFromCommitMessage($commit, $data); @@ -59,6 +60,7 @@ final class PhabricatorRepositoryCommitHeraldWorker $email_phids = array_unique( array_merge( $explicit_auditors, + array_keys($cc_phids), $herald_targets)); if (!$email_phids) { return; @@ -174,6 +176,7 @@ final class PhabricatorRepositoryCommitHeraldWorker private function createAudits( PhabricatorRepositoryCommit $commit, array $map, + array $ccmap, array $rules) { assert_instances_of($rules, 'HeraldRule'); @@ -183,26 +186,44 @@ final class PhabricatorRepositoryCommitHeraldWorker $requests = mpull($requests, null, 'getAuditorPHID'); $rules = mpull($rules, null, 'getID'); - foreach ($map as $phid => $rule_ids) { - $request = idx($requests, $phid); - if ($request) { - continue; - } - $reasons = array(); - foreach ($rule_ids as $id) { - $rule_name = '?'; - if ($rules[$id]) { - $rule_name = $rules[$id]->getName(); - } - $reasons[] = 'Herald Rule #'.$id.' "'.$rule_name.'" Triggered Audit'; - } - $request = new PhabricatorRepositoryAuditRequest(); - $request->setCommitPHID($commit->getPHID()); - $request->setAuditorPHID($phid); - $request->setAuditStatus(PhabricatorAuditStatusConstants::AUDIT_REQUIRED); - $request->setAuditReasons($reasons); - $request->save(); + $maps = array( + PhabricatorAuditStatusConstants::AUDIT_REQUIRED => $map, + PhabricatorAuditStatusConstants::CC => $ccmap, + ); + + foreach ($maps as $status => $map) { + foreach ($map as $phid => $rule_ids) { + $request = idx($requests, $phid); + if ($request) { + continue; + } + $reasons = array(); + foreach ($rule_ids as $id) { + $rule_name = '?'; + if ($rules[$id]) { + $rule_name = $rules[$id]->getName(); + } + if ($status == PhabricatorAuditStatusConstants::AUDIT_REQUIRED) { + $reasons[] = pht( + 'Herald Rule #%d "%s" Triggered Audit', + $id, + $rule_name); + } else { + $reasons[] = pht( + 'Herald Rule #%d "%s" Triggered CC', + $id, + $rule_name); + } + } + + $request = new PhabricatorRepositoryAuditRequest(); + $request->setCommitPHID($commit->getPHID()); + $request->setAuditorPHID($phid); + $request->setAuditStatus($status); + $request->setAuditReasons($reasons); + $request->save(); + } } $commit->updateAuditStatus($requests);