Correct a parameter order swap in "diffusion.historyquery" for Mercurial
[phabricator.git] / src / applications / project / engineextension / PhabricatorProjectTriggerUsageIndexEngineExtension.php
blobb50c51fba6d409f75bbeb1ddaa6f36628fb93780
1 <?php
3 final class PhabricatorProjectTriggerUsageIndexEngineExtension
4 extends PhabricatorIndexEngineExtension {
6 const EXTENSIONKEY = 'trigger.usage';
8 public function getExtensionName() {
9 return pht('Trigger Usage');
12 public function shouldIndexObject($object) {
13 if (!($object instanceof PhabricatorProjectTrigger)) {
14 return false;
17 return true;
20 public function indexObject(
21 PhabricatorIndexEngine $engine,
22 $object) {
24 $usage_table = new PhabricatorProjectTriggerUsage();
25 $column_table = new PhabricatorProjectColumn();
27 $conn_w = $object->establishConnection('w');
29 $active_statuses = array(
30 PhabricatorProjectColumn::STATUS_ACTIVE,
33 // Select summary information to populate the usage index. When picking
34 // an "examplePHID", we try to pick an active column.
35 $row = queryfx_one(
36 $conn_w,
37 'SELECT phid, COUNT(*) N, SUM(IF(status IN (%Ls), 1, 0)) M FROM %R
38 WHERE triggerPHID = %s
39 ORDER BY IF(status IN (%Ls), 1, 0) DESC, id ASC',
40 $active_statuses,
41 $column_table,
42 $object->getPHID(),
43 $active_statuses);
44 if ($row) {
45 $example_phid = $row['phid'];
46 $column_count = $row['N'];
47 $active_count = $row['M'];
48 } else {
49 $example_phid = null;
50 $column_count = 0;
51 $active_count = 0;
54 queryfx(
55 $conn_w,
56 'INSERT INTO %R (triggerPHID, examplePHID, columnCount, activeColumnCount)
57 VALUES (%s, %ns, %d, %d)
58 ON DUPLICATE KEY UPDATE
59 examplePHID = VALUES(examplePHID),
60 columnCount = VALUES(columnCount),
61 activeColumnCount = VALUES(activeColumnCount)',
62 $usage_table,
63 $object->getPHID(),
64 $example_phid,
65 $column_count,
66 $active_count);