3 final class HarbormasterBuildMessageQuery
4 extends PhabricatorCursorPagedPolicyAwareQuery
{
7 private $receiverPHIDs;
10 public function withIDs(array $ids) {
15 public function withReceiverPHIDs(array $phids) {
16 $this->receiverPHIDs
= $phids;
20 public function withConsumed($consumed) {
21 $this->consumed
= $consumed;
25 public function newResultObject() {
26 return new HarbormasterBuildMessage();
29 protected function willFilterPage(array $page) {
30 $receiver_phids = array_filter(mpull($page, 'getReceiverPHID'));
31 if ($receiver_phids) {
32 $receivers = id(new PhabricatorObjectQuery())
33 ->setViewer($this->getViewer())
34 ->withPHIDs($receiver_phids)
35 ->setParentQuery($this)
37 $receivers = mpull($receivers, null, 'getPHID');
42 foreach ($page as $key => $message) {
43 $receiver_phid = $message->getReceiverPHID();
45 if (empty($receivers[$receiver_phid])) {
47 $this->didRejectResult($message);
51 $message->attachReceiver($receivers[$receiver_phid]);
57 protected function buildWhereClauseParts(AphrontDatabaseConnection
$conn) {
58 $where = parent
::buildWhereClauseParts($conn);
60 if ($this->ids
!== null) {
67 if ($this->receiverPHIDs
!== null) {
70 'receiverPHID IN (%Ls)',
71 $this->receiverPHIDs
);
74 if ($this->consumed
!== null) {
78 (int)$this->consumed
);
84 public function getQueryApplicationClass() {
85 return 'PhabricatorHarbormasterApplication';