@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
at upstream/main 69 lines 1.5 kB view raw
1<?php 2 3abstract class PhabricatorHigherOrderChartFunction 4 extends PhabricatorChartFunction { 5 6 public function getDomain() { 7 $domains = array(); 8 foreach ($this->getFunctionArguments() as $function) { 9 $domains[] = $function->getDomain(); 10 } 11 12 return PhabricatorChartInterval::newFromIntervalList($domains); 13 } 14 15 public function newInputValues(PhabricatorChartDataQuery $query) { 16 $map = array(); 17 foreach ($this->getFunctionArguments() as $function) { 18 $xv = $function->newInputValues($query); 19 if ($xv !== null) { 20 foreach ($xv as $x) { 21 $map[$x] = true; 22 } 23 } 24 } 25 26 if (!$map) { 27 return null; 28 } 29 30 ksort($map); 31 32 return array_keys($map); 33 } 34 35 public function getDataRefs(array $xv) { 36 $refs = array(); 37 38 foreach ($this->getFunctionArguments() as $function) { 39 $function_refs = $function->getDataRefs($xv); 40 41 $function_refs = array_select_keys($function_refs, $xv); 42 if (!$function_refs) { 43 continue; 44 } 45 46 foreach ($function_refs as $x => $ref_list) { 47 if (!isset($refs[$x])) { 48 $refs[$x] = array(); 49 } 50 foreach ($ref_list as $ref) { 51 $refs[$x][] = $ref; 52 } 53 } 54 } 55 56 return $refs; 57 } 58 59 public function loadRefs(array $refs) { 60 $results = array(); 61 62 foreach ($this->getFunctionArguments() as $function) { 63 $results += $function->loadRefs($refs); 64 } 65 66 return $results; 67 } 68 69}