diff --git a/src/applications/audit/mail/PhabricatorAuditMailReceiver.php b/src/applications/audit/mail/PhabricatorAuditMailReceiver.php index d0e0c6aede..68e9201524 100644 --- a/src/applications/audit/mail/PhabricatorAuditMailReceiver.php +++ b/src/applications/audit/mail/PhabricatorAuditMailReceiver.php @@ -11,4 +11,13 @@ final class PhabricatorAuditMailReceiver extends PhabricatorObjectMailReceiver { return 'C[1-9]\d*'; } + protected function loadObject($pattern, PhabricatorUser $viewer) { + $id = (int)trim($pattern, 'C'); + + return id(new DiffusionCommitQuery()) + ->setViewer($viewer) + ->withIDs(array($id)) + ->executeOne(); + } + } diff --git a/src/applications/conpherence/mail/ConpherenceThreadMailReceiver.php b/src/applications/conpherence/mail/ConpherenceThreadMailReceiver.php index 6b0acfde30..558e8b4f60 100644 --- a/src/applications/conpherence/mail/ConpherenceThreadMailReceiver.php +++ b/src/applications/conpherence/mail/ConpherenceThreadMailReceiver.php @@ -12,4 +12,14 @@ final class ConpherenceThreadMailReceiver return 'E[1-9]\d*'; } + protected function loadObject($pattern, PhabricatorUser $viewer) { + $id = (int)trim($pattern, 'E'); + + return id(new ConpherenceThreadQuery()) + ->setViewer($viewer) + ->withIDs(array($id)) + ->executeOne(); + } + + } diff --git a/src/applications/differential/mail/DifferentialRevisionMailReceiver.php b/src/applications/differential/mail/DifferentialRevisionMailReceiver.php index 685a064cf9..3086d176a2 100644 --- a/src/applications/differential/mail/DifferentialRevisionMailReceiver.php +++ b/src/applications/differential/mail/DifferentialRevisionMailReceiver.php @@ -12,4 +12,16 @@ final class DifferentialRevisionMailReceiver return 'D[1-9]\d*'; } + protected function loadObject($pattern, PhabricatorUser $viewer) { + $id = (int)trim($pattern, 'D'); + + $results = id(new DifferentialRevisionQuery()) + ->setViewer($viewer) + ->withIDs(array($id)) + ->execute(); + + return head($results); + } + + } diff --git a/src/applications/macro/mail/PhabricatorMacroMailReceiver.php b/src/applications/macro/mail/PhabricatorMacroMailReceiver.php index 09304fdb90..da9ede57b1 100644 --- a/src/applications/macro/mail/PhabricatorMacroMailReceiver.php +++ b/src/applications/macro/mail/PhabricatorMacroMailReceiver.php @@ -11,4 +11,14 @@ final class PhabricatorMacroMailReceiver extends PhabricatorObjectMailReceiver { return 'MCRO[1-9]\d*'; } + + protected function loadObject($pattern, PhabricatorUser $viewer) { + $id = (int)substr($pattern, 4); + + return id(new PhabricatorMacroQuery()) + ->setViewer($viewer) + ->withIDs(array($id)) + ->executeOne(); + } + } diff --git a/src/applications/maniphest/mail/ManiphestTaskMailReceiver.php b/src/applications/maniphest/mail/ManiphestTaskMailReceiver.php index f74353dba9..9a04cd0bbd 100644 --- a/src/applications/maniphest/mail/ManiphestTaskMailReceiver.php +++ b/src/applications/maniphest/mail/ManiphestTaskMailReceiver.php @@ -11,4 +11,15 @@ final class ManiphestTaskMailReceiver extends PhabricatorObjectMailReceiver { return 'T[1-9]\d*'; } + protected function loadObject($pattern, PhabricatorUser $viewer) { + $id = (int)trim($pattern, 'T'); + + $results = id(new ManiphestTaskQuery()) + ->setViewer($viewer) + ->withTaskIDs(array($id)) + ->execute(); + + return head($results); + } + } diff --git a/src/applications/pholio/mail/PholioMockMailReceiver.php b/src/applications/pholio/mail/PholioMockMailReceiver.php index 66837db0bf..bc8f12ede1 100644 --- a/src/applications/pholio/mail/PholioMockMailReceiver.php +++ b/src/applications/pholio/mail/PholioMockMailReceiver.php @@ -11,4 +11,14 @@ final class PholioMockMailReceiver extends PhabricatorObjectMailReceiver { return 'M[1-9]\d*'; } + protected function loadObject($pattern, PhabricatorUser $viewer) { + $id = (int)trim($pattern, 'M'); + + return id(new PholioMockQuery()) + ->setViewer($viewer) + ->withIDs(array($id)) + ->executeOne(); + } + + } diff --git a/src/applications/ponder/mail/PonderQuestionMailReceiver.php b/src/applications/ponder/mail/PonderQuestionMailReceiver.php index da44bcd931..484caee260 100644 --- a/src/applications/ponder/mail/PonderQuestionMailReceiver.php +++ b/src/applications/ponder/mail/PonderQuestionMailReceiver.php @@ -11,4 +11,14 @@ final class PonderQuestionMailReceiver extends PhabricatorObjectMailReceiver { return 'Q[1-9]\d*'; } + protected function loadObject($pattern, PhabricatorUser $viewer) { + $id = (int)trim($pattern, 'Q'); + + return id(new PonderQuestionQuery()) + ->setViewer($viewer) + ->withIDs(array($id)) + ->executeOne(); + } + + } diff --git a/src/applications/releeph/mail/ReleephRequestMailReceiver.php b/src/applications/releeph/mail/ReleephRequestMailReceiver.php index 8d774b746e..67f6cce5b0 100644 --- a/src/applications/releeph/mail/ReleephRequestMailReceiver.php +++ b/src/applications/releeph/mail/ReleephRequestMailReceiver.php @@ -11,4 +11,14 @@ final class ReleephRequestMailReceiver extends PhabricatorObjectMailReceiver { return 'RQ[1-9]\d*'; } + protected function loadObject($pattern, PhabricatorUser $viewer) { + $id = (int)substr($pattern, 2); + + return id(new ReleephRequestQuery()) + ->setViewer($viewer) + ->withIDs(array($id)) + ->executeOne(); + } + + } diff --git a/src/applications/releeph/query/ReleephRequestQuery.php b/src/applications/releeph/query/ReleephRequestQuery.php index 4a11736599..01256f803e 100644 --- a/src/applications/releeph/query/ReleephRequestQuery.php +++ b/src/applications/releeph/query/ReleephRequestQuery.php @@ -5,6 +5,12 @@ final class ReleephRequestQuery private $requestedCommitPHIDs; private $commitToRevMap; + private $ids; + + public function withIDs(array $ids) { + $this->ids = $ids; + return $this; + } public function getRevisionPHID($commit_phid) { if ($this->commitToRevMap) { @@ -56,6 +62,13 @@ final class ReleephRequestQuery private function buildWhereClause(AphrontDatabaseConnection $conn_r) { $where = array(); + if ($this->ids) { + $where[] = qsprintf( + $conn_r, + 'id IN (%Ld)', + $this->ids); + } + if ($this->requestedCommitPHIDs) { $where[] = qsprintf( $conn_r,