@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
fork

Configure Feed

Select the types of activity you want to include in your feed.

Use PhutilClassMapQuery instead of PhutilSymbolLoader

Summary: Use `PhutilClassMaQuery` instead of `PhutilSymbolLoader`, mostly for consistency. Depends on D13588.

Test Plan: Poked around a bunch of pages.

Reviewers: #blessed_reviewers, epriestley

Reviewed By: #blessed_reviewers, epriestley

Subscribers: epriestley, Korvin

Differential Revision: https://secure.phabricator.com/D13589

+180 -257
+2 -2
scripts/almanac/manage_almanac.php
··· 14 14 ); 15 15 $args->parseStandardArguments(); 16 16 17 - $workflows = id(new PhutilSymbolLoader()) 17 + $workflows = id(new PhutilClassMapQuery()) 18 18 ->setAncestorClass('AlmanacManagementWorkflow') 19 - ->loadObjects(); 19 + ->execute(); 20 20 $workflows[] = new PhutilHelpArgumentWorkflow(); 21 21 $args->parseWorkflows($workflows);
+2 -2
scripts/cache/manage_cache.php
··· 14 14 ); 15 15 $args->parseStandardArguments(); 16 16 17 - $workflows = id(new PhutilSymbolLoader()) 17 + $workflows = id(new PhutilClassMapQuery()) 18 18 ->setAncestorClass('PhabricatorCacheManagementWorkflow') 19 - ->loadObjects(); 19 + ->execute(); 20 20 $workflows[] = new PhutilHelpArgumentWorkflow(); 21 21 $args->parseWorkflows($workflows);
+2 -2
scripts/daemon/manage_daemons.php
··· 16 16 ); 17 17 $args->parseStandardArguments(); 18 18 19 - $workflows = id(new PhutilSymbolLoader()) 19 + $workflows = id(new PhutilClassMapQuery()) 20 20 ->setAncestorClass('PhabricatorDaemonManagementWorkflow') 21 - ->loadObjects(); 21 + ->execute(); 22 22 $workflows[] = new PhutilHelpArgumentWorkflow(); 23 23 $args->parseWorkflows($workflows);
+2 -2
scripts/diviner/diviner.php
··· 14 14 ); 15 15 $args->parseStandardArguments(); 16 16 17 - $workflows = id(new PhutilSymbolLoader()) 17 + $workflows = id(new PhutilClassMapQuery()) 18 18 ->setAncestorClass('DivinerWorkflow') 19 - ->loadObjects(); 19 + ->execute(); 20 20 $workflows[] = new PhutilHelpArgumentWorkflow(); 21 21 $args->parseWorkflows($workflows);
+2 -2
scripts/drydock/drydock_control.php
··· 14 14 ); 15 15 $args->parseStandardArguments(); 16 16 17 - $workflows = id(new PhutilSymbolLoader()) 17 + $workflows = id(new PhutilClassMapQuery()) 18 18 ->setAncestorClass('DrydockManagementWorkflow') 19 - ->loadObjects(); 19 + ->execute(); 20 20 $workflows[] = new PhutilHelpArgumentWorkflow(); 21 21 $args->parseWorkflows($workflows);
+2 -2
scripts/fact/manage_facts.php
··· 15 15 ); 16 16 $args->parseStandardArguments(); 17 17 18 - $workflows = id(new PhutilSymbolLoader()) 18 + $workflows = id(new PhutilClassMapQuery()) 19 19 ->setAncestorClass('PhabricatorFactManagementWorkflow') 20 - ->loadObjects(); 20 + ->execute(); 21 21 $workflows[] = new PhutilHelpArgumentWorkflow(); 22 22 $args->parseWorkflows($workflows);
+2 -2
scripts/files/manage_files.php
··· 14 14 ); 15 15 $args->parseStandardArguments(); 16 16 17 - $workflows = id(new PhutilSymbolLoader()) 17 + $workflows = id(new PhutilClassMapQuery()) 18 18 ->setAncestorClass('PhabricatorFilesManagementWorkflow') 19 - ->loadObjects(); 19 + ->execute(); 20 20 $workflows[] = new PhutilHelpArgumentWorkflow(); 21 21 $args->parseWorkflows($workflows);
+2 -2
scripts/lipsum/manage_lipsum.php
··· 14 14 ); 15 15 $args->parseStandardArguments(); 16 16 17 - $workflows = id(new PhutilSymbolLoader()) 17 + $workflows = id(new PhutilClassMapQuery()) 18 18 ->setAncestorClass('PhabricatorLipsumManagementWorkflow') 19 - ->loadObjects(); 19 + ->execute(); 20 20 $workflows[] = new PhutilHelpArgumentWorkflow(); 21 21 $args->parseWorkflows($workflows);
+2 -2
scripts/mail/manage_mail.php
··· 14 14 ); 15 15 $args->parseStandardArguments(); 16 16 17 - $workflows = id(new PhutilSymbolLoader()) 17 + $workflows = id(new PhutilClassMapQuery()) 18 18 ->setAncestorClass('PhabricatorMailManagementWorkflow') 19 - ->loadObjects(); 19 + ->execute(); 20 20 $workflows[] = new PhutilHelpArgumentWorkflow(); 21 21 $args->parseWorkflows($workflows);
+2 -2
scripts/repository/manage_repositories.php
··· 15 15 ); 16 16 $args->parseStandardArguments(); 17 17 18 - $workflows = id(new PhutilSymbolLoader()) 18 + $workflows = id(new PhutilClassMapQuery()) 19 19 ->setAncestorClass('PhabricatorRepositoryManagementWorkflow') 20 - ->loadObjects(); 20 + ->execute(); 21 21 $workflows[] = new PhutilHelpArgumentWorkflow(); 22 22 $args->parseWorkflows($workflows);
+2 -2
scripts/search/manage_search.php
··· 14 14 ); 15 15 $args->parseStandardArguments(); 16 16 17 - $workflows = id(new PhutilSymbolLoader()) 17 + $workflows = id(new PhutilClassMapQuery()) 18 18 ->setAncestorClass('PhabricatorSearchManagementWorkflow') 19 - ->loadObjects(); 19 + ->execute(); 20 20 $workflows[] = new PhutilHelpArgumentWorkflow(); 21 21 $args->parseWorkflows($workflows);
+2 -2
scripts/setup/manage_audit.php
··· 14 14 ); 15 15 $args->parseStandardArguments(); 16 16 17 - $workflows = id(new PhutilSymbolLoader()) 17 + $workflows = id(new PhutilClassMapQuery()) 18 18 ->setAncestorClass('PhabricatorAuditManagementWorkflow') 19 - ->loadObjects(); 19 + ->execute(); 20 20 $workflows[] = new PhutilHelpArgumentWorkflow(); 21 21 $args->parseWorkflows($workflows);
+2 -2
scripts/setup/manage_auth.php
··· 14 14 ); 15 15 $args->parseStandardArguments(); 16 16 17 - $workflows = id(new PhutilSymbolLoader()) 17 + $workflows = id(new PhutilClassMapQuery()) 18 18 ->setAncestorClass('PhabricatorAuthManagementWorkflow') 19 - ->loadObjects(); 19 + ->execute(); 20 20 $workflows[] = new PhutilHelpArgumentWorkflow(); 21 21 $args->parseWorkflows($workflows);
+2 -2
scripts/setup/manage_celerity.php
··· 14 14 ); 15 15 $args->parseStandardArguments(); 16 16 17 - $workflows = id(new PhutilSymbolLoader()) 17 + $workflows = id(new PhutilClassMapQuery()) 18 18 ->setAncestorClass('CelerityManagementWorkflow') 19 - ->loadObjects(); 19 + ->execute(); 20 20 $workflows[] = new PhutilHelpArgumentWorkflow(); 21 21 $args->parseWorkflows($workflows);
+2 -2
scripts/setup/manage_config.php
··· 14 14 ); 15 15 $args->parseStandardArguments(); 16 16 17 - $workflows = id(new PhutilSymbolLoader()) 17 + $workflows = id(new PhutilClassMapQuery()) 18 18 ->setAncestorClass('PhabricatorConfigManagementWorkflow') 19 - ->loadObjects(); 19 + ->execute(); 20 20 $workflows[] = new PhutilHelpArgumentWorkflow(); 21 21 $args->parseWorkflows($workflows);
+2 -2
scripts/setup/manage_feed.php
··· 14 14 ); 15 15 $args->parseStandardArguments(); 16 16 17 - $workflows = id(new PhutilSymbolLoader()) 17 + $workflows = id(new PhutilClassMapQuery()) 18 18 ->setAncestorClass('PhabricatorFeedManagementWorkflow') 19 - ->loadObjects(); 19 + ->execute(); 20 20 $workflows[] = new PhutilHelpArgumentWorkflow(); 21 21 $args->parseWorkflows($workflows);
+2 -2
scripts/setup/manage_harbormaster.php
··· 14 14 ); 15 15 $args->parseStandardArguments(); 16 16 17 - $workflows = id(new PhutilSymbolLoader()) 17 + $workflows = id(new PhutilClassMapQuery()) 18 18 ->setAncestorClass('HarbormasterManagementWorkflow') 19 - ->loadObjects(); 19 + ->execute(); 20 20 $workflows[] = new PhutilHelpArgumentWorkflow(); 21 21 $args->parseWorkflows($workflows);
+2 -2
scripts/setup/manage_hunks.php
··· 14 14 ); 15 15 $args->parseStandardArguments(); 16 16 17 - $workflows = id(new PhutilSymbolLoader()) 17 + $workflows = id(new PhutilClassMapQuery()) 18 18 ->setAncestorClass('PhabricatorHunksManagementWorkflow') 19 - ->loadObjects(); 19 + ->execute(); 20 20 $workflows[] = new PhutilHelpArgumentWorkflow(); 21 21 $args->parseWorkflows($workflows);
+2 -2
scripts/setup/manage_i18n.php
··· 14 14 ); 15 15 $args->parseStandardArguments(); 16 16 17 - $workflows = id(new PhutilSymbolLoader()) 17 + $workflows = id(new PhutilClassMapQuery()) 18 18 ->setAncestorClass('PhabricatorInternationalizationManagementWorkflow') 19 - ->loadObjects(); 19 + ->execute(); 20 20 $workflows[] = new PhutilHelpArgumentWorkflow(); 21 21 $args->parseWorkflows($workflows);
+2 -2
scripts/setup/manage_phortune.php
··· 14 14 ); 15 15 $args->parseStandardArguments(); 16 16 17 - $workflows = id(new PhutilSymbolLoader()) 17 + $workflows = id(new PhutilClassMapQuery()) 18 18 ->setAncestorClass('PhabricatorPhortuneManagementWorkflow') 19 - ->loadObjects(); 19 + ->execute(); 20 20 $workflows[] = new PhutilHelpArgumentWorkflow(); 21 21 $args->parseWorkflows($workflows);
+2 -2
scripts/setup/manage_policy.php
··· 14 14 ); 15 15 $args->parseStandardArguments(); 16 16 17 - $workflows = id(new PhutilSymbolLoader()) 17 + $workflows = id(new PhutilClassMapQuery()) 18 18 ->setAncestorClass('PhabricatorPolicyManagementWorkflow') 19 - ->loadObjects(); 19 + ->execute(); 20 20 $workflows[] = new PhutilHelpArgumentWorkflow(); 21 21 $args->parseWorkflows($workflows);
+2 -2
scripts/setup/manage_remove.php
··· 14 14 ); 15 15 $args->parseStandardArguments(); 16 16 17 - $workflows = id(new PhutilSymbolLoader()) 17 + $workflows = id(new PhutilClassMapQuery()) 18 18 ->setAncestorClass('PhabricatorSystemRemoveWorkflow') 19 - ->loadObjects(); 19 + ->execute(); 20 20 $workflows[] = new PhutilHelpArgumentWorkflow(); 21 21 $args->parseWorkflows($workflows);
+2 -2
scripts/setup/manage_trigger.php
··· 14 14 ); 15 15 $args->parseStandardArguments(); 16 16 17 - $workflows = id(new PhutilSymbolLoader()) 17 + $workflows = id(new PhutilClassMapQuery()) 18 18 ->setAncestorClass('PhabricatorWorkerTriggerManagementWorkflow') 19 - ->loadObjects(); 19 + ->execute(); 20 20 $workflows[] = new PhutilHelpArgumentWorkflow(); 21 21 $args->parseWorkflows($workflows);
+2 -2
scripts/setup/manage_worker.php
··· 14 14 ); 15 15 $args->parseStandardArguments(); 16 16 17 - $workflows = id(new PhutilSymbolLoader()) 17 + $workflows = id(new PhutilClassMapQuery()) 18 18 ->setAncestorClass('PhabricatorWorkerManagementWorkflow') 19 - ->loadObjects(); 19 + ->execute(); 20 20 $workflows[] = new PhutilHelpArgumentWorkflow(); 21 21 $args->parseWorkflows($workflows);
+2 -2
scripts/sms/manage_sms.php
··· 14 14 ); 15 15 $args->parseStandardArguments(); 16 16 17 - $workflows = id(new PhutilSymbolLoader()) 17 + $workflows = id(new PhutilClassMapQuery()) 18 18 ->setAncestorClass('PhabricatorSMSManagementWorkflow') 19 - ->loadObjects(); 19 + ->execute(); 20 20 $workflows[] = new PhutilHelpArgumentWorkflow(); 21 21 $args->parseWorkflows($workflows);
+2 -2
scripts/sql/manage_storage.php
··· 160 160 exit(1); 161 161 } 162 162 163 - $workflows = id(new PhutilSymbolLoader()) 163 + $workflows = id(new PhutilClassMapQuery()) 164 164 ->setAncestorClass('PhabricatorStorageManagementWorkflow') 165 - ->loadObjects(); 165 + ->execute(); 166 166 167 167 $patches = PhabricatorSQLPatchList::buildAllPatches(); 168 168
+4 -5
scripts/ssh/ssh-exec.php
··· 190 190 $user->getUsername())); 191 191 } 192 192 193 - $workflows = id(new PhutilSymbolLoader()) 193 + $workflows = id(new PhutilClassMapQuery()) 194 194 ->setAncestorClass('PhabricatorSSHWorkflow') 195 - ->loadObjects(); 196 - 197 - $workflow_names = mpull($workflows, 'getName', 'getName'); 195 + ->setUniqueMethod('getName') 196 + ->execute(); 198 197 199 198 if (!$original_argv) { 200 199 throw new Exception( ··· 210 209 $user->getUsername(), 211 210 'git clone', 212 211 'hg push', 213 - implode(', ', $workflow_names))); 212 + implode(', ', array_keys($workflows)))); 214 213 } 215 214 216 215 $log_argv = implode(' ', $original_argv);
+2 -2
src/__tests__/PhabricatorConduitTestCase.php
··· 3 3 final class PhabricatorConduitTestCase extends PhabricatorTestCase { 4 4 5 5 public function testConduitMethods() { 6 - $methods = id(new PhutilSymbolLoader()) 6 + $methods = id(new PhutilClassMapQuery()) 7 7 ->setAncestorClass('ConduitAPIMethod') 8 - ->loadObjects(); 8 + ->execute(); 9 9 10 10 // We're just looking for a side effect of ConduitCall construction 11 11 // here: it will throw if any methods define reserved parameter names.
+4 -28
src/applications/conduit/method/ConduitAPIMethod.php
··· 139 139 } 140 140 141 141 public static function loadAllConduitMethods() { 142 - static $method_map = null; 143 - 144 - if ($method_map === null) { 145 - $methods = id(new PhutilSymbolLoader()) 146 - ->setAncestorClass(__CLASS__) 147 - ->loadObjects(); 148 - 149 - foreach ($methods as $method) { 150 - $name = $method->getAPIMethodName(); 151 - 152 - if (empty($method_map[$name])) { 153 - $method_map[$name] = $method; 154 - continue; 155 - } 156 - 157 - $orig_class = get_class($method_map[$name]); 158 - $this_class = get_class($method); 159 - throw new Exception( 160 - pht( 161 - 'Two Conduit API method classes (%s, %s) both have the same '. 162 - 'method name (%s). API methods must have unique method names.', 163 - $orig_class, 164 - $this_class, 165 - $name)); 166 - } 167 - } 168 - 169 - return $method_map; 142 + return id(new PhutilClassMapQuery()) 143 + ->setAncestorClass(__CLASS__) 144 + ->setUniqueMethod('getAPIMethodName') 145 + ->execute(); 170 146 } 171 147 172 148 public static function getConduitMethod($method_name) {
+2 -3
src/applications/conduit/method/ConduitQueryConduitAPIMethod.php
··· 19 19 } 20 20 21 21 protected function execute(ConduitAPIRequest $request) { 22 - $classes = id(new PhutilSymbolLoader()) 22 + $classes = id(new PhutilClassMapQuery()) 23 23 ->setAncestorClass('ConduitAPIMethod') 24 - ->setType('class') 25 - ->loadObjects(); 24 + ->execute(); 26 25 27 26 $names_to_params = array(); 28 27 foreach ($classes as $class) {
+4 -8
src/applications/conduit/query/PhabricatorConduitMethodQuery.php
··· 47 47 } 48 48 49 49 private function getAllMethods() { 50 - static $methods; 51 - if ($methods === null) { 52 - $methods = id(new PhutilSymbolLoader()) 53 - ->setAncestorClass('ConduitAPIMethod') 54 - ->loadObjects(); 55 - $methods = msort($methods, 'getSortOrder'); 56 - } 57 - return $methods; 50 + return id(new PhutilClassMapQuery()) 51 + ->setAncestorClass('ConduitAPIMethod') 52 + ->setSortMethod('getSortOrder') 53 + ->execute(); 58 54 } 59 55 60 56 private function filterMethods(array $methods) {
+2 -2
src/applications/config/schema/PhabricatorConfigCoreSchemaSpec.php
··· 9 9 public function buildSchemata() { 10 10 // Build all Lisk table schemata. 11 11 12 - $lisk_objects = id(new PhutilSymbolLoader()) 12 + $lisk_objects = id(new PhutilClassMapQuery()) 13 13 ->setAncestorClass('PhabricatorLiskDAO') 14 - ->loadObjects(); 14 + ->execute(); 15 15 16 16 $counters = array(); 17 17 foreach ($lisk_objects as $object) {
+2 -2
src/applications/config/schema/PhabricatorConfigSchemaQuery.php
··· 155 155 $databases = $this->getDatabaseNames(); 156 156 $info = $this->getAPI()->getCharsetInfo(); 157 157 158 - $specs = id(new PhutilSymbolLoader()) 158 + $specs = id(new PhutilClassMapQuery()) 159 159 ->setAncestorClass('PhabricatorConfigSchemaSpec') 160 - ->loadObjects(); 160 + ->execute(); 161 161 162 162 $server_schema = new PhabricatorConfigServerSchema(); 163 163 foreach ($specs as $spec) {
+3 -9
src/applications/console/core/DarkConsoleCore.php
··· 6 6 const STORAGE_VERSION = 1; 7 7 8 8 public function __construct() { 9 - $symbols = id(new PhutilSymbolLoader()) 10 - ->setType('class') 9 + $this->plugins = id(new PhutilClassMapQuery()) 11 10 ->setAncestorClass('DarkConsolePlugin') 12 - ->selectAndLoadSymbols(); 11 + ->execute(); 13 12 14 - foreach ($symbols as $symbol) { 15 - $plugin = newv($symbol['name'], array()); 16 - if (!$plugin->shouldStartup()) { 17 - continue; 18 - } 13 + foreach ($this->plugins as $plugin) { 19 14 $plugin->setConsoleCore($this); 20 15 $plugin->didStartup(); 21 - $this->plugins[$symbol['name']] = $plugin; 22 16 } 23 17 } 24 18
-4
src/applications/console/plugin/DarkConsolePlugin.php
··· 62 62 return $this->getRequest()->getRequestURI(); 63 63 } 64 64 65 - public function shouldStartup() { 66 - return true; 67 - } 68 - 69 65 public function didStartup() { 70 66 return null; 71 67 }
+1 -2
src/applications/daemon/management/PhabricatorDaemonManagementWorkflow.php
··· 6 6 private $runDaemonsAsUser = null; 7 7 8 8 final protected function loadAvailableDaemonClasses() { 9 - $loader = new PhutilSymbolLoader(); 10 - return $loader 9 + return id(new PhutilSymbolLoader()) 11 10 ->setAncestorClass('PhutilDaemon') 12 11 ->setConcreteOnly(true) 13 12 ->selectSymbolsWithoutLoading();
+4 -4
src/applications/dashboard/customfield/PhabricatorDashboardPanelSearchApplicationCustomField.php
··· 12 12 } 13 13 14 14 public function renderEditControl(array $handles) { 15 - 16 - $engines = id(new PhutilSymbolLoader()) 15 + $engines = id(new PhutilClassMapQuery()) 17 16 ->setAncestorClass('PhabricatorApplicationSearchEngine') 18 - ->loadObjects(); 19 - $engines = mfilter($engines, 'canUseInPanelContext'); 17 + ->setFilterMethod('canUseInPanelContext') 18 + ->execute(); 19 + 20 20 $all_apps = id(new PhabricatorApplicationQuery()) 21 21 ->setViewer($this->getViewer()) 22 22 ->withUnlisted(false)
+3 -4
src/applications/dashboard/customfield/PhabricatorDashboardPanelSearchQueryCustomField.php
··· 12 12 } 13 13 14 14 public function renderEditControl(array $handles) { 15 - 16 - $engines = id(new PhutilSymbolLoader()) 15 + $engines = id(new PhutilClassMapQuery()) 17 16 ->setAncestorClass('PhabricatorApplicationSearchEngine') 18 - ->loadObjects(); 19 - $engines = mfilter($engines, 'canUseInPanelContext'); 17 + ->setFilterMethod('canUseInPanelContext') 18 + ->execute(); 20 19 21 20 $value = $this->getFieldValue(); 22 21
+3 -2
src/applications/differential/landing/DifferentialLandingActionMenuEventListener.php
··· 37 37 return null; 38 38 } 39 39 40 - $strategies = id(new PhutilSymbolLoader()) 40 + $strategies = id(new PhutilClassMapQuery()) 41 41 ->setAncestorClass('DifferentialLandingStrategy') 42 - ->loadObjects(); 42 + ->execute(); 43 + 43 44 foreach ($strategies as $strategy) { 44 45 $viewer = $event->getUser(); 45 46 $action = $strategy->createMenuItem($viewer, $revision, $repository);
+3 -2
src/applications/diffusion/controller/DiffusionSymbolController.php
··· 64 64 $external_query->withLanguages(array($request->getStr('lang'))); 65 65 } 66 66 67 - $external_sources = id(new PhutilSymbolLoader()) 67 + $external_sources = id(new PhutilClassMapQuery()) 68 68 ->setAncestorClass('DiffusionExternalSymbolsSource') 69 - ->loadObjects(); 69 + ->execute(); 70 + 70 71 $results = array($symbols); 71 72 foreach ($external_sources as $source) { 72 73 $results[] = $source->executeQuery($external_query);
+2 -3
src/applications/diviner/workflow/DivinerGenerateWorkflow.php
··· 414 414 $version['atom'] = DivinerAtom::getAtomSerializationVersion(); 415 415 $version['rules'] = $this->getRules(); 416 416 417 - $atomizers = id(new PhutilSymbolLoader()) 417 + $atomizers = id(new PhutilClassMapQuery()) 418 418 ->setAncestorClass('DivinerAtomizer') 419 - ->setConcreteOnly(true) 420 - ->selectAndLoadSymbols(); 419 + ->execute(); 421 420 422 421 $atomizer_versions = array(); 423 422 foreach ($atomizers as $atomizer) {
+3 -5
src/applications/doorkeeper/engine/DoorkeeperImportEngine.php
··· 88 88 } 89 89 90 90 if (!$this->localOnly) { 91 - $bridges = id(new PhutilSymbolLoader()) 91 + $bridges = id(new PhutilClassMapQuery()) 92 92 ->setAncestorClass('DoorkeeperBridge') 93 - ->loadObjects(); 93 + ->setFilterMethod('isEnabled') 94 + ->execute(); 94 95 95 96 foreach ($bridges as $key => $bridge) { 96 - if (!$bridge->isEnabled()) { 97 - unset($bridges[$key]); 98 - } 99 97 $bridge->setViewer($viewer); 100 98 $bridge->setThrowOnMissingLink($this->throwOnMissingLink); 101 99 }
+2 -2
src/applications/doorkeeper/option/PhabricatorAsanaConfigOptions.php
··· 120 120 121 121 $viewer = $request->getUser(); 122 122 123 - $publishers = id(new PhutilSymbolLoader()) 123 + $publishers = id(new PhutilClassMapQuery()) 124 124 ->setAncestorClass('DoorkeeperFeedStoryPublisher') 125 - ->loadObjects(); 125 + ->execute(); 126 126 127 127 $out = array(); 128 128 $out[] = pht(
+2 -2
src/applications/doorkeeper/worker/DoorkeeperFeedWorker.php
··· 125 125 $viewer = $this->getViewer(); 126 126 $object = $this->getStoryObject(); 127 127 128 - $publishers = id(new PhutilSymbolLoader()) 128 + $publishers = id(new PhutilClassMapQuery()) 129 129 ->setAncestorClass('DoorkeeperFeedStoryPublisher') 130 - ->loadObjects(); 130 + ->execute(); 131 131 132 132 foreach ($publishers as $publisher) { 133 133 if (!$publisher->canPublishStory($story, $object)) {
+1
src/applications/feed/worker/FeedPublisherWorker.php
··· 23 23 ); 24 24 25 25 // Find and schedule all the enabled Doorkeeper publishers. 26 + // TODO: Use PhutilClassMapQuery? 26 27 $doorkeeper_workers = id(new PhutilSymbolLoader()) 27 28 ->setAncestorClass('DoorkeeperFeedWorker') 28 29 ->loadObjects($argv);
+2 -11
src/applications/files/storage/PhabricatorFile.php
··· 882 882 } 883 883 884 884 public static function buildAllEngines() { 885 - $engines = id(new PhutilSymbolLoader()) 886 - ->setType('class') 887 - ->setConcreteOnly(true) 885 + return id(new PhutilClassMapQuery()) 888 886 ->setAncestorClass('PhabricatorFileStorageEngine') 889 - ->selectAndLoadSymbols(); 890 - 891 - $results = array(); 892 - foreach ($engines as $engine_class) { 893 - $results[] = newv($engine_class['name'], array()); 894 - } 895 - 896 - return $results; 887 + ->execute(); 897 888 } 898 889 899 890 public function getViewableMimeType() {
+4 -2
src/applications/flag/query/PhabricatorFlagSearchEngine.php
··· 100 100 } 101 101 102 102 private function getObjectFilterOptions() { 103 - $objects = id(new PhutilSymbolLoader()) 103 + $objects = id(new PhutilClassMapQuery()) 104 104 ->setAncestorClass('PhabricatorFlaggableInterface') 105 - ->loadObjects(); 105 + ->execute(); 106 + 106 107 $all_types = PhabricatorPHIDType::getAllTypes(); 107 108 $options = array(); 109 + 108 110 foreach ($objects as $object) { 109 111 $phid = $object->generatePHID(); 110 112 $phid_type = phid_get_type($phid);
+2 -2
src/applications/harbormaster/storage/build/HarbormasterBuild.php
··· 291 291 } 292 292 293 293 public static function getAvailableBuildVariables() { 294 - $objects = id(new PhutilSymbolLoader()) 294 + $objects = id(new PhutilClassMapQuery()) 295 295 ->setAncestorClass('HarbormasterBuildableInterface') 296 - ->loadObjects(); 296 + ->execute(); 297 297 298 298 $variables = array(); 299 299 $variables[] = array(
+2 -2
src/applications/lipsum/management/PhabricatorLipsumGenerateWorkflow.php
··· 20 20 public function execute(PhutilArgumentParser $args) { 21 21 $console = PhutilConsole::getConsole(); 22 22 23 - $supported_types = id(new PhutilSymbolLoader()) 23 + $supported_types = id(new PhutilClassMapQuery()) 24 24 ->setAncestorClass('PhabricatorTestDataGenerator') 25 - ->loadObjects(); 25 + ->execute(); 26 26 27 27 $console->writeOut( 28 28 "%s:\n\t%s\n",
+3 -5
src/applications/metamta/management/PhabricatorMailManagementReceiveTestWorkflow.php
··· 105 105 'to' => $to.'+1+'.$pseudohash, 106 106 )); 107 107 108 - $receivers = id(new PhutilSymbolLoader()) 108 + $receivers = id(new PhutilClassMapQuery()) 109 109 ->setAncestorClass('PhabricatorMailReceiver') 110 - ->loadObjects(); 110 + ->setFilterMethod('isEnabled') 111 + ->execute(); 111 112 112 113 $receiver = null; 113 114 foreach ($receivers as $possible_receiver) { 114 - if (!$possible_receiver->isEnabled()) { 115 - continue; 116 - } 117 115 if (!$possible_receiver->canAcceptMail($pseudomail)) { 118 116 continue; 119 117 }
+3 -5
src/applications/metamta/storage/PhabricatorMetaMTAReceivedMail.php
··· 265 265 * accepts this mail, if one exists. 266 266 */ 267 267 private function loadReceiver() { 268 - $receivers = id(new PhutilSymbolLoader()) 268 + $receivers = id(new PhutilClassMapQuery()) 269 269 ->setAncestorClass('PhabricatorMailReceiver') 270 - ->loadObjects(); 270 + ->setFilterMethod('isEnabled') 271 + ->execute(); 271 272 272 273 $accept = array(); 273 274 foreach ($receivers as $key => $receiver) { 274 - if (!$receiver->isEnabled()) { 275 - continue; 276 - } 277 275 if ($receiver->canAcceptMail($this)) { 278 276 $accept[$key] = $receiver; 279 277 }
+2 -2
src/applications/policy/__tests__/PhabricatorPolicyTestCase.php
··· 307 307 } 308 308 309 309 public function testAllQueriesBelongToActualApplications() { 310 - $queries = id(new PhutilSymbolLoader()) 310 + $queries = id(new PhutilClassMapQuery()) 311 311 ->setAncestorClass('PhabricatorPolicyAwareQuery') 312 - ->loadObjects(); 312 + ->execute(); 313 313 314 314 foreach ($queries as $qclass => $query) { 315 315 $class = $query->getQueryApplicationClass();
+3 -3
src/applications/policy/config/PolicyLockOptionType.php
··· 4 4 extends PhabricatorConfigJSONOptionType { 5 5 6 6 public function validateOption(PhabricatorConfigOption $option, $value) { 7 - $capabilities = id(new PhutilSymbolLoader()) 7 + $capabilities = id(new PhutilClassMapQuery()) 8 8 ->setAncestorClass('PhabricatorPolicyCapability') 9 - ->loadObjects(); 10 - $capabilities = mpull($capabilities, null, 'getCapabilityKey'); 9 + ->setUniqueMethod('getCapabilityKey') 10 + ->execute(); 11 11 12 12 $policy_phids = array(); 13 13 foreach ($value as $capability_key => $policy) {
+2 -2
src/applications/policy/controller/PhabricatorPolicyEditController.php
··· 37 37 PhabricatorPolicy::ACTION_DENY => pht('Deny'), 38 38 ); 39 39 40 - $rules = id(new PhutilSymbolLoader()) 40 + $rules = id(new PhutilClassMapQuery()) 41 41 ->setAncestorClass('PhabricatorPolicyRule') 42 - ->loadObjects(); 42 + ->execute(); 43 43 44 44 foreach ($rules as $key => $rule) { 45 45 if (!$rule->canApplyToObject($object)) {
+2 -2
src/applications/policy/query/PhabricatorPolicyQuery.php
··· 305 305 } 306 306 307 307 public static function getObjectPolicyRules($object) { 308 - $rules = id(new PhutilSymbolLoader()) 308 + $rules = id(new PhutilClassMapQuery()) 309 309 ->setAncestorClass('PhabricatorPolicyRule') 310 - ->loadObjects(); 310 + ->execute(); 311 311 312 312 $results = array(); 313 313 foreach ($rules as $rule) {
+2 -2
src/applications/search/index/PhabricatorSearchIndexer.php
··· 15 15 } 16 16 17 17 public function indexDocumentByPHID($phid, $context) { 18 - $indexers = id(new PhutilSymbolLoader()) 18 + $indexers = id(new PhutilClassMapQuery()) 19 19 ->setAncestorClass('PhabricatorSearchDocumentIndexer') 20 - ->loadObjects(); 20 + ->execute(); 21 21 22 22 foreach ($indexers as $indexer) { 23 23 if ($indexer->shouldIndexDocumentByPHID($phid)) {
+2 -2
src/applications/search/management/PhabricatorSearchManagementIndexWorkflow.php
··· 122 122 } 123 123 124 124 private function loadPHIDsByTypes($type) { 125 - $indexers = id(new PhutilSymbolLoader()) 125 + $indexers = id(new PhutilClassMapQuery()) 126 126 ->setAncestorClass('PhabricatorSearchDocumentIndexer') 127 - ->loadObjects(); 127 + ->execute(); 128 128 129 129 $phids = array(); 130 130 foreach ($indexers as $indexer) {
+2 -2
src/applications/search/query/PhabricatorSearchApplicationSearchEngine.php
··· 204 204 // TODO: This is inelegant and not very efficient, but gets us reasonable 205 205 // results. It would be nice to do this more elegantly. 206 206 207 - $indexers = id(new PhutilSymbolLoader()) 207 + $indexers = id(new PhutilClassMapQuery()) 208 208 ->setAncestorClass('PhabricatorSearchDocumentIndexer') 209 - ->loadObjects(); 209 + ->execute(); 210 210 211 211 if ($viewer) { 212 212 $types = PhabricatorPHIDType::getAllInstalledTypes($viewer);
+4 -12
src/applications/settings/controller/PhabricatorSettingsMainController.php
··· 75 75 } 76 76 77 77 private function buildPanels() { 78 - $panel_specs = id(new PhutilSymbolLoader()) 78 + $panels = id(new PhutilClassMapQuery()) 79 79 ->setAncestorClass('PhabricatorSettingsPanel') 80 - ->setConcreteOnly(true) 81 - ->selectAndLoadSymbols(); 82 - 83 - $panels = array(); 84 - foreach ($panel_specs as $spec) { 85 - $class = newv($spec['name'], array()); 86 - $panels[] = $class->buildPanels(); 87 - } 88 - 89 - $panels = array_mergev($panels); 90 - $panels = mpull($panels, null, 'getPanelKey'); 80 + ->setExpandMethod('buildPanels') 81 + ->setUniqueMethod('getPanelKey') 82 + ->execute(); 91 83 92 84 $result = array(); 93 85 foreach ($panels as $key => $panel) {
+3 -7
src/applications/settings/panel/PhabricatorEmailPreferencesSettingsPanel.php
··· 191 191 } 192 192 193 193 private function getAllEditorsWithTags(PhabricatorUser $user) { 194 - $editors = id(new PhutilSymbolLoader()) 194 + $editors = id(new PhutilClassMapQuery()) 195 195 ->setAncestorClass('PhabricatorApplicationTransactionEditor') 196 - ->loadObjects(); 196 + ->setFilterMethod('getMailTagsMap') 197 + ->execute(); 197 198 198 199 foreach ($editors as $key => $editor) { 199 - // Remove editors which do not support mail tags. 200 - if (!$editor->getMailTagsMap()) { 201 - unset($editors[$key]); 202 - } 203 - 204 200 // Remove editors for applications which are not installed. 205 201 $app = $editor->getEditorApplicationClass(); 206 202 if ($app !== null) {
+2 -2
src/applications/transactions/controller/PhabricatorApplicationTransactionShowOlderController.php
··· 23 23 } 24 24 25 25 $template = $object->getApplicationTransactionTemplate(); 26 - $queries = id(new PhutilSymbolLoader()) 26 + $queries = id(new PhutilClassMapQuery()) 27 27 ->setAncestorClass('PhabricatorApplicationTransactionQuery') 28 - ->loadObjects(); 28 + ->execute(); 29 29 30 30 $object_query = null; 31 31 foreach ($queries as $query) {
+2 -2
src/applications/transactions/phid/PhabricatorApplicationTransactionTransactionPHIDType.php
··· 28 28 29 29 static $queries; 30 30 if ($queries === null) { 31 - $objects = id(new PhutilSymbolLoader()) 31 + $objects = id(new PhutilClassMapQuery()) 32 32 ->setAncestorClass('PhabricatorApplicationTransactionQuery') 33 - ->loadObjects(); 33 + ->execute(); 34 34 35 35 $queries = array(); 36 36 foreach ($objects as $object) {
+2 -2
src/applications/transactions/worker/PhabricatorApplicationTransactionPublishWorker.php
··· 112 112 * the transactions. 113 113 */ 114 114 private function buildTransactionQuery($type) { 115 - $queries = id(new PhutilSymbolLoader()) 115 + $queries = id(new PhutilClassMapQuery()) 116 116 ->setAncestorClass('PhabricatorApplicationTransactionQuery') 117 - ->loadObjects(); 117 + ->execute(); 118 118 119 119 foreach ($queries as $query) { 120 120 $query_type = $query
+3 -2
src/applications/typeahead/controller/PhabricatorTypeaheadFunctionHelpController.php
··· 11 11 $viewer = $this->getViewer(); 12 12 $class = $request->getURIData('class'); 13 13 14 - $sources = id(new PhutilSymbolLoader()) 14 + $sources = id(new PhutilClassMapQuery()) 15 15 ->setAncestorClass('PhabricatorTypeaheadDatasource') 16 - ->loadObjects(); 16 + ->execute(); 17 + 17 18 if (!isset($sources[$class])) { 18 19 return new Aphront404Response(); 19 20 }
+3 -2
src/applications/typeahead/controller/PhabricatorTypeaheadModularDatasourceController.php
··· 29 29 // This makes form submission easier in the debug view. 30 30 $class = nonempty($request->getURIData('class'), $request->getStr('class')); 31 31 32 - $sources = id(new PhutilSymbolLoader()) 32 + $sources = id(new PhutilClassMapQuery()) 33 33 ->setAncestorClass('PhabricatorTypeaheadDatasource') 34 - ->loadObjects(); 34 + ->execute(); 35 + 35 36 if (isset($sources[$class])) { 36 37 $source = $sources[$class]; 37 38 $source->setParameters($request->getRequestData());
+3 -3
src/applications/uiexample/controller/PhabricatorUIExampleRenderController.php
··· 9 9 public function handleRequest(AphrontRequest $request) { 10 10 $id = $request->getURIData('class'); 11 11 12 - $classes = id(new PhutilSymbolLoader()) 12 + $classes = id(new PhutilClassMapQuery()) 13 13 ->setAncestorClass('PhabricatorUIExample') 14 - ->loadObjects(); 15 - $classes = msort($classes, 'getName'); 14 + ->setSortMethod('getName') 15 + ->execute(); 16 16 17 17 $nav = new AphrontSideNavFilterView(); 18 18 $nav->setBaseURI(new PhutilURI($this->getApplicationURI('view/')));
+3 -3
src/infrastructure/customfield/standard/PhabricatorStandardCustomField.php
··· 22 22 PhabricatorCustomField $template, 23 23 array $config) { 24 24 25 - $types = id(new PhutilSymbolLoader()) 25 + $types = id(new PhutilClassMapQuery()) 26 26 ->setAncestorClass(__CLASS__) 27 - ->loadObjects(); 28 - $types = mpull($types, null, 'getFieldType'); 27 + ->setUniqueMethod('getFieldType') 28 + ->execute(); 29 29 30 30 $fields = array(); 31 31 foreach ($config as $key => $value) {
+2 -2
src/infrastructure/daemon/workers/PhabricatorTriggerDaemon.php
··· 385 385 * @task garbage 386 386 */ 387 387 private function loadGarbageCollectors() { 388 - return id(new PhutilSymbolLoader()) 388 + return id(new PhutilClassMapQuery()) 389 389 ->setAncestorClass('PhabricatorGarbageCollector') 390 - ->loadObjects(); 390 + ->execute(); 391 391 } 392 392 393 393
+4 -3
src/infrastructure/env/PhabricatorEnv.php
··· 200 200 $default_source->loadExternalOptions(); 201 201 202 202 // If this install has site config sources, load them now. 203 - $site_sources = id(new PhutilSymbolLoader()) 203 + $site_sources = id(new PhutilClassMapQuery()) 204 204 ->setAncestorClass('PhabricatorConfigSiteSource') 205 - ->loadObjects(); 206 - $site_sources = msort($site_sources, 'getPriority'); 205 + ->setSortMethod('getPriority') 206 + ->execute(); 207 + 207 208 foreach ($site_sources as $site_source) { 208 209 $stack->pushSource($site_source); 209 210 }
+2 -2
src/infrastructure/events/PhabricatorEventEngine.php
··· 9 9 // be able to run `bin/config` in order to remove an invalid listener. 10 10 11 11 // Load automatic listeners. 12 - $listeners = id(new PhutilSymbolLoader()) 12 + $listeners = id(new PhutilClassMapQuery()) 13 13 ->setAncestorClass('PhabricatorAutoEventListener') 14 - ->loadObjects(); 14 + ->execute(); 15 15 16 16 // Load configured listeners. 17 17 $config_listeners = PhabricatorEnv::getEnvConfig('events.listeners');
+4 -4
src/infrastructure/markup/PhabricatorMarkupEngine.php
··· 622 622 } 623 623 624 624 private static function loadCustomInlineRules() { 625 - return id(new PhutilSymbolLoader()) 625 + return id(new PhutilClassMapQuery()) 626 626 ->setAncestorClass('PhabricatorRemarkupCustomInlineRule') 627 - ->loadObjects(); 627 + ->execute(); 628 628 } 629 629 630 630 private static function loadCustomBlockRules() { 631 - return id(new PhutilSymbolLoader()) 631 + return id(new PhutilClassMapQuery()) 632 632 ->setAncestorClass('PhabricatorRemarkupCustomBlockRule') 633 - ->loadObjects(); 633 + ->execute(); 634 634 } 635 635 636 636 }
+11 -26
src/infrastructure/storage/patch/PhabricatorSQLPatchList.php
··· 37 37 } 38 38 39 39 final public static function buildAllPatches() { 40 - $patch_lists = id(new PhutilSymbolLoader()) 40 + $patch_lists = id(new PhutilClassMapQuery()) 41 41 ->setAncestorClass(__CLASS__) 42 - ->setConcreteOnly(true) 43 - ->selectAndLoadSymbols(); 42 + ->setUniqueMethod('getNamespace') 43 + ->execute(); 44 44 45 45 $specs = array(); 46 46 $seen_namespaces = array(); 47 47 48 - foreach ($patch_lists as $patch_class) { 49 - $patch_class = $patch_class['name']; 50 - $patch_list = newv($patch_class, array()); 51 - 52 - $namespace = $patch_list->getNamespace(); 53 - if (isset($seen_namespaces[$namespace])) { 54 - $prior = $seen_namespaces[$namespace]; 55 - throw new Exception( 56 - pht( 57 - "%s '%s' has the same namespace, '%s', as another patch list ". 58 - "class, '%s'. Each patch list MUST have a unique namespace.", 59 - __CLASS__, 60 - $patch_class, 61 - $namespace, 62 - $prior)); 63 - } 64 - 48 + foreach ($patch_lists as $patch_list) { 65 49 $last_key = null; 66 50 foreach ($patch_list->getPatches() as $key => $patch) { 67 51 if (!is_array($patch)) { ··· 69 53 pht( 70 54 "%s '%s' has a patch '%s' which is not an array.", 71 55 __CLASS__, 72 - $patch_class, 56 + get_class($patch_list), 73 57 $key)); 74 58 } 75 59 ··· 88 72 "%s '%s' has a patch, '%s', with an unknown property, '%s'.". 89 73 "Patches must have only valid keys: %s.", 90 74 __CLASS__, 91 - $patch_class, 75 + get_class($patch_list), 92 76 $key, 93 77 $pkey, 94 78 implode(', ', array_keys($valid)))); ··· 101 85 "%s '%s' has a patch with a numeric key, '%s'. ". 102 86 "Patches must use string keys.", 103 87 __CLASS__, 104 - $patch_class, 88 + get_class($patch_list), 105 89 $key)); 106 90 } 107 91 ··· 111 95 "%s '%s' has a patch with a colon in the key name, '%s'. ". 112 96 "Patch keys may not contain colons.", 113 97 __CLASS__, 114 - $patch_class, 98 + get_class($patch_list), 115 99 $key)); 116 100 } 117 101 102 + $namespace = $patch_list->getNamespace(); 118 103 $full_key = "{$namespace}:{$key}"; 119 104 120 105 if (isset($specs[$full_key])) { ··· 123 108 "%s '%s' has a patch '%s' which duplicates an ". 124 109 "existing patch key.", 125 110 __CLASS__, 126 - $patch_class, 111 + get_class($patch_list), 127 112 $key)); 128 113 } 129 114 ··· 152 137 "determined implicitly. The first patch in a patch list must ". 153 138 "list the patch or patches it depends on explicitly.", 154 139 $full_key, 155 - $patch_class)); 140 + get_class($patch_list))); 156 141 } else { 157 142 $patch['after'] = array($last_key); 158 143 }
+2 -2
support/aphlict/server/aphlict_launcher.php
··· 16 16 ); 17 17 $args->parseStandardArguments(); 18 18 19 - $workflows = id(new PhutilSymbolLoader()) 19 + $workflows = id(new PhutilClassMapQuery()) 20 20 ->setAncestorClass('PhabricatorAphlictManagementWorkflow') 21 - ->loadObjects(); 21 + ->execute(); 22 22 $workflows[] = new PhutilHelpArgumentWorkflow(); 23 23 $args->parseWorkflows($workflows);