@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
1<?php
2
3abstract class CelerityPostprocessor
4 extends Phobject {
5
6 private $default;
7
8 abstract public function getPostprocessorKey();
9 abstract public function getPostprocessorName();
10 abstract public function buildVariables();
11
12 public function buildDefaultPostprocessor() {
13 return new CelerityDefaultPostprocessor();
14 }
15
16 final public function getVariables() {
17 $variables = $this->buildVariables();
18
19 $default = $this->getDefault();
20 if ($default) {
21 $variables += $default->getVariables();
22 }
23
24 return $variables;
25 }
26
27 final public function getDefault() {
28 if ($this->default === null) {
29 $this->default = $this->buildDefaultPostprocessor();
30 }
31 return $this->default;
32 }
33
34 final public static function getPostprocessor($key) {
35 return idx(self::getAllPostprocessors(), $key);
36 }
37
38 final public static function getAllPostprocessors() {
39 return id(new PhutilClassMapQuery())
40 ->setAncestorClass(self::class)
41 ->setUniqueMethod('getPostprocessorKey')
42 ->execute();
43 }
44
45}