Something went wrong. Try again.
@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
Something went wrong. Try again.
3.1 kB · 134 lines
PHP
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135<?php
/** * @extends PhabricatorCursorPagedPolicyAwareQuery<PhabricatorProjectTrigger> */final class PhabricatorProjectTriggerQuery extends PhabricatorCursorPagedPolicyAwareQuery {
private $ids; private $phids; private $activeColumnMin; private $activeColumnMax;
private $needUsage;
public function withIDs(array $ids) { $this->ids = $ids; return $this; }
public function withPHIDs(array $phids) { $this->phids = $phids; return $this; }
public function needUsage($need_usage) { $this->needUsage = $need_usage; return $this; }
public function withActiveColumnCountBetween($min, $max) { $this->activeColumnMin = $min; $this->activeColumnMax = $max; return $this; }
public function newResultObject() { return new PhabricatorProjectTrigger(); }
protected function buildWhereClauseParts(AphrontDatabaseConnection $conn) { $where = parent::buildWhereClauseParts($conn);
if ($this->ids !== null) { $where[] = qsprintf( $conn, 'trigger.id IN (%Ld)', $this->ids); }
if ($this->phids !== null) { $where[] = qsprintf( $conn, 'trigger.phid IN (%Ls)', $this->phids); }
if ($this->activeColumnMin !== null) { $where[] = qsprintf( $conn, 'trigger_usage.activeColumnCount >= %d', $this->activeColumnMin); }
if ($this->activeColumnMax !== null) { $where[] = qsprintf( $conn, 'trigger_usage.activeColumnCount <= %d', $this->activeColumnMax); }
return $where; }
protected function buildJoinClauseParts(AphrontDatabaseConnection $conn) { $joins = parent::buildJoinClauseParts($conn);
if ($this->shouldJoinUsageTable()) { $joins[] = qsprintf( $conn, 'JOIN %R trigger_usage ON trigger.phid = trigger_usage.triggerPHID', new PhabricatorProjectTriggerUsage()); }
return $joins; }
private function shouldJoinUsageTable() { if ($this->activeColumnMin !== null) { return true; }
if ($this->activeColumnMax !== null) { return true; }
return false; }
protected function didFilterPage(array $triggers) { if ($this->needUsage) { $usage_map = id(new PhabricatorProjectTriggerUsage())->loadAllWhere( 'triggerPHID IN (%Ls)', mpull($triggers, 'getPHID')); $usage_map = mpull($usage_map, null, 'getTriggerPHID');
foreach ($triggers as $trigger) { $trigger_phid = $trigger->getPHID();
$usage = idx($usage_map, $trigger_phid); if (!$usage) { $usage = id(new PhabricatorProjectTriggerUsage()) ->setTriggerPHID($trigger_phid) ->setExamplePHID(null) ->setColumnCount(0) ->setActiveColumnCount(0); }
$trigger->attachUsage($usage); } }
return $triggers; }
public function getQueryApplicationClass() { return PhabricatorProjectApplication::class; }
protected function getPrimaryTableAlias() { return 'trigger'; }
}