8
protected $explicitCCs;
9
8
protected $explicitReviewers;
10
protected $forbiddenCCs;
12
protected $newCCs = array();
13
protected $remCCs = array();
14
9
protected $addReviewerPHIDs = array();
15
10
protected $blockingReviewerPHIDs = array();
16
11
protected $buildPlans = array();
113
public function setExplicitCCs($explicit_ccs) {
114
$this->explicitCCs = $explicit_ccs;
118
108
public function setExplicitReviewers($explicit_reviewers) {
119
109
$this->explicitReviewers = $explicit_reviewers;
123
public function setForbiddenCCs($forbidden_ccs) {
124
$this->forbiddenCCs = $forbidden_ccs;
128
public function getCCsAddedByHerald() {
129
return array_diff_key($this->newCCs, $this->remCCs);
132
public function getCCsRemovedByHerald() {
133
return $this->remCCs;
136
113
public function getReviewersAddedByHerald() {
137
114
return $this->addReviewerPHIDs;
221
198
return mpull($projects, 'getPHID');
222
199
case self::FIELD_DIFF_FILE:
223
200
return $this->loadAffectedPaths();
225
if (isset($this->explicitCCs)) {
226
return array_keys($this->explicitCCs);
228
return $this->revision->getCCPHIDs();
230
201
case self::FIELD_REVIEWERS:
231
202
if (isset($this->explicitReviewers)) {
232
203
return array_keys($this->explicitReviewers);
297
268
assert_instances_of($effects, 'HeraldEffect');
299
270
$result = array();
300
if ($this->explicitCCs) {
301
$effect = new HeraldEffect();
302
$effect->setAction(self::ACTION_ADD_CC);
303
$effect->setTarget(array_keys($this->explicitCCs));
306
'CCs provided explicitly by revision author or carried over '.
307
'from a previous version of the revision.'));
308
$result[] = new HeraldApplyTranscript(
311
pht('Added addresses to CC list.'));
314
$forbidden_ccs = array_fill_keys(
315
nonempty($this->forbiddenCCs, array()),
318
272
foreach ($effects as $effect) {
319
273
$action = $effect->getAction();
320
274
switch ($action) {
321
case self::ACTION_NOTHING:
322
$result[] = new HeraldApplyTranscript(
325
pht('OK, did nothing.'));
327
case self::ACTION_ADD_CC:
328
$base_target = $effect->getTarget();
329
$forbidden = array();
330
foreach ($base_target as $key => $fbid) {
331
if (isset($forbidden_ccs[$fbid])) {
332
$forbidden[] = $fbid;
333
unset($base_target[$key]);
335
$this->newCCs[$fbid] = true;
340
$failed = clone $effect;
341
$failed->setTarget($forbidden);
343
$effect->setTarget($base_target);
344
$result[] = new HeraldApplyTranscript(
348
'Added these addresses to CC list. '.
349
'Others could not be added.'));
351
$result[] = new HeraldApplyTranscript(
354
pht('CC forbidden, these addresses have unsubscribed.'));
356
$result[] = new HeraldApplyTranscript(
359
pht('Added addresses to CC list.'));
362
case self::ACTION_REMOVE_CC:
363
foreach ($effect->getTarget() as $fbid) {
364
$this->remCCs[$fbid] = true;
366
$result[] = new HeraldApplyTranscript(
369
pht('Removed addresses from CC list.'));
371
275
case self::ACTION_ADD_REVIEWERS:
372
276
foreach ($effect->getTarget() as $phid) {
373
277
$this->addReviewerPHIDs[$phid] = true;