Changeset View
Changeset View
Standalone View
Standalone View
src/applications/herald/adapter/HeraldAdapter.php
Show All 23 Lines | abstract class HeraldAdapter extends Phobject { | ||||
const FIELD_DIFFERENTIAL_REVISION = 'differential-revision'; | const FIELD_DIFFERENTIAL_REVISION = 'differential-revision'; | ||||
const FIELD_DIFFERENTIAL_REVIEWERS = 'differential-reviewers'; | const FIELD_DIFFERENTIAL_REVIEWERS = 'differential-reviewers'; | ||||
const FIELD_DIFFERENTIAL_CCS = 'differential-ccs'; | const FIELD_DIFFERENTIAL_CCS = 'differential-ccs'; | ||||
const FIELD_DIFFERENTIAL_ACCEPTED = 'differential-accepted'; | const FIELD_DIFFERENTIAL_ACCEPTED = 'differential-accepted'; | ||||
const FIELD_IS_MERGE_COMMIT = 'is-merge-commit'; | const FIELD_IS_MERGE_COMMIT = 'is-merge-commit'; | ||||
const FIELD_BRANCHES = 'branches'; | const FIELD_BRANCHES = 'branches'; | ||||
const FIELD_AUTHOR_RAW = 'author-raw'; | const FIELD_AUTHOR_RAW = 'author-raw'; | ||||
const FIELD_COMMITTER_RAW = 'committer-raw'; | const FIELD_COMMITTER_RAW = 'committer-raw'; | ||||
const FIELD_APPLICATION_EMAIL = 'applicaton-email'; | |||||
const FIELD_TASK_PRIORITY = 'taskpriority'; | const FIELD_TASK_PRIORITY = 'taskpriority'; | ||||
const FIELD_TASK_STATUS = 'taskstatus'; | const FIELD_TASK_STATUS = 'taskstatus'; | ||||
const FIELD_PUSHER_IS_COMMITTER = 'pusher-is-committer'; | const FIELD_PUSHER_IS_COMMITTER = 'pusher-is-committer'; | ||||
const FIELD_PATH = 'path'; | const FIELD_PATH = 'path'; | ||||
const CONDITION_CONTAINS = 'contains'; | const CONDITION_CONTAINS = 'contains'; | ||||
const CONDITION_NOT_CONTAINS = '!contains'; | const CONDITION_NOT_CONTAINS = '!contains'; | ||||
const CONDITION_IS = 'is'; | const CONDITION_IS = 'is'; | ||||
▲ Show 20 Lines • Show All 118 Lines • ▼ Show 20 Lines | throw new Exception( | ||||
'You must %s to a boolean first!', | 'You must %s to a boolean first!', | ||||
'setIsNewObject()')); | 'setIsNewObject()')); | ||||
} | } | ||||
public function setIsNewObject($new) { | public function setIsNewObject($new) { | ||||
$this->isNewObject = (bool)$new; | $this->isNewObject = (bool)$new; | ||||
return $this; | return $this; | ||||
} | } | ||||
public function supportsApplicationEmail() { | |||||
return false; | |||||
} | |||||
public function setApplicationEmail( | public function setApplicationEmail( | ||||
PhabricatorMetaMTAApplicationEmail $email) { | PhabricatorMetaMTAApplicationEmail $email) { | ||||
$this->applicationEmail = $email; | $this->applicationEmail = $email; | ||||
return $this; | return $this; | ||||
} | } | ||||
public function getApplicationEmail() { | public function getApplicationEmail() { | ||||
return $this->applicationEmail; | return $this->applicationEmail; | ||||
} | } | ||||
abstract public function getPHID(); | abstract public function getPHID(); | ||||
abstract public function getHeraldName(); | abstract public function getHeraldName(); | ||||
public function getHeraldField($field_name) { | public function getHeraldField($field_name) { | ||||
$impl = $this->getFieldImplementation($field_name); | $impl = $this->getFieldImplementation($field_name); | ||||
if ($impl) { | if ($impl) { | ||||
return $impl->getHeraldFieldValue($this->getObject()); | return $impl->getHeraldFieldValue($this->getObject()); | ||||
} | } | ||||
switch ($field_name) { | |||||
case self::FIELD_APPLICATION_EMAIL: | |||||
$value = array(); | |||||
// while there is only one match by implementation, we do set | |||||
// comparisons on phids, so return an array with just the phid | |||||
if ($this->getApplicationEmail()) { | |||||
$value[] = $this->getApplicationEmail()->getPHID(); | |||||
} | |||||
return $value; | |||||
default: | |||||
throw new Exception(pht("Unknown field '%s'!", $field_name)); | throw new Exception(pht("Unknown field '%s'!", $field_name)); | ||||
} | } | ||||
} | |||||
abstract public function applyHeraldEffects(array $effects); | abstract public function applyHeraldEffects(array $effects); | ||||
protected function handleCustomHeraldEffect(HeraldEffect $effect) { | protected function handleCustomHeraldEffect(HeraldEffect $effect) { | ||||
$custom_action = idx($this->getCustomActions(), $effect->getAction()); | $custom_action = idx($this->getCustomActions(), $effect->getAction()); | ||||
if ($custom_action !== null) { | if ($custom_action !== null) { | ||||
return $custom_action->applyEffect( | return $custom_action->applyEffect( | ||||
▲ Show 20 Lines • Show All 179 Lines • ▼ Show 20 Lines | return $map + array( | ||||
self::FIELD_DIFFERENTIAL_REVIEWERS => pht('Differential reviewers'), | self::FIELD_DIFFERENTIAL_REVIEWERS => pht('Differential reviewers'), | ||||
self::FIELD_DIFFERENTIAL_CCS => pht('Differential CCs'), | self::FIELD_DIFFERENTIAL_CCS => pht('Differential CCs'), | ||||
self::FIELD_DIFFERENTIAL_ACCEPTED | self::FIELD_DIFFERENTIAL_ACCEPTED | ||||
=> pht('Accepted Differential revision'), | => pht('Accepted Differential revision'), | ||||
self::FIELD_IS_MERGE_COMMIT => pht('Commit is a merge'), | self::FIELD_IS_MERGE_COMMIT => pht('Commit is a merge'), | ||||
self::FIELD_BRANCHES => pht('Commit\'s branches'), | self::FIELD_BRANCHES => pht('Commit\'s branches'), | ||||
self::FIELD_AUTHOR_RAW => pht('Raw author name'), | self::FIELD_AUTHOR_RAW => pht('Raw author name'), | ||||
self::FIELD_COMMITTER_RAW => pht('Raw committer name'), | self::FIELD_COMMITTER_RAW => pht('Raw committer name'), | ||||
self::FIELD_APPLICATION_EMAIL => pht('Receiving email address'), | |||||
self::FIELD_TASK_PRIORITY => pht('Task priority'), | self::FIELD_TASK_PRIORITY => pht('Task priority'), | ||||
self::FIELD_TASK_STATUS => pht('Task status'), | self::FIELD_TASK_STATUS => pht('Task status'), | ||||
self::FIELD_PUSHER_IS_COMMITTER => pht('Pusher same as committer'), | self::FIELD_PUSHER_IS_COMMITTER => pht('Pusher same as committer'), | ||||
self::FIELD_PATH => pht('Path'), | self::FIELD_PATH => pht('Path'), | ||||
); | ); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 73 Lines • ▼ Show 20 Lines | switch ($field) { | ||||
case self::FIELD_REPOSITORY_PROJECTS: | case self::FIELD_REPOSITORY_PROJECTS: | ||||
return array( | return array( | ||||
self::CONDITION_INCLUDE_ALL, | self::CONDITION_INCLUDE_ALL, | ||||
self::CONDITION_INCLUDE_ANY, | self::CONDITION_INCLUDE_ANY, | ||||
self::CONDITION_INCLUDE_NONE, | self::CONDITION_INCLUDE_NONE, | ||||
self::CONDITION_EXISTS, | self::CONDITION_EXISTS, | ||||
self::CONDITION_NOT_EXISTS, | self::CONDITION_NOT_EXISTS, | ||||
); | ); | ||||
case self::FIELD_APPLICATION_EMAIL: | |||||
return array( | |||||
self::CONDITION_INCLUDE_ANY, | |||||
self::CONDITION_INCLUDE_NONE, | |||||
self::CONDITION_EXISTS, | |||||
self::CONDITION_NOT_EXISTS, | |||||
); | |||||
case self::FIELD_DIFF_FILE: | case self::FIELD_DIFF_FILE: | ||||
case self::FIELD_BRANCHES: | case self::FIELD_BRANCHES: | ||||
return array( | return array( | ||||
self::CONDITION_CONTAINS, | self::CONDITION_CONTAINS, | ||||
self::CONDITION_REGEXP, | self::CONDITION_REGEXP, | ||||
); | ); | ||||
case self::FIELD_DIFF_CONTENT: | case self::FIELD_DIFF_CONTENT: | ||||
case self::FIELD_DIFF_ADDED_CONTENT: | case self::FIELD_DIFF_ADDED_CONTENT: | ||||
▲ Show 20 Lines • Show All 440 Lines • ▼ Show 20 Lines | switch ($condition) { | ||||
case self::FIELD_AFFECTED_PACKAGE: | case self::FIELD_AFFECTED_PACKAGE: | ||||
return self::VALUE_OWNERS_PACKAGE; | return self::VALUE_OWNERS_PACKAGE; | ||||
case self::FIELD_AUTHOR_PROJECTS: | case self::FIELD_AUTHOR_PROJECTS: | ||||
case self::FIELD_PUSHER_PROJECTS: | case self::FIELD_PUSHER_PROJECTS: | ||||
case self::FIELD_REPOSITORY_PROJECTS: | case self::FIELD_REPOSITORY_PROJECTS: | ||||
return self::VALUE_PROJECT; | return self::VALUE_PROJECT; | ||||
case self::FIELD_REVIEWERS: | case self::FIELD_REVIEWERS: | ||||
return self::VALUE_USER_OR_PROJECT; | return self::VALUE_USER_OR_PROJECT; | ||||
case self::FIELD_APPLICATION_EMAIL: | |||||
return self::VALUE_APPLICATION_EMAIL; | |||||
default: | default: | ||||
return self::VALUE_USER; | return self::VALUE_USER; | ||||
} | } | ||||
break; | break; | ||||
case self::CONDITION_IS_ME: | case self::CONDITION_IS_ME: | ||||
case self::CONDITION_IS_NOT_ME: | case self::CONDITION_IS_NOT_ME: | ||||
case self::CONDITION_EXISTS: | case self::CONDITION_EXISTS: | ||||
case self::CONDITION_NOT_EXISTS: | case self::CONDITION_NOT_EXISTS: | ||||
▲ Show 20 Lines • Show All 617 Lines • Show Last 20 Lines |