コード例 #1
0
 public function getQuickMenuItems()
 {
     $viewer = $this->getViewer();
     $engines = PhabricatorEditEngine::getAllEditEngines();
     foreach ($engines as $key => $engine) {
         if (!$engine->hasQuickCreateActions()) {
             unset($engines[$key]);
         }
     }
     if (!$engines) {
         return array();
     }
     $engine_keys = array_keys($engines);
     $configs = id(new PhabricatorEditEngineConfigurationQuery())->setViewer($viewer)->withEngineKeys($engine_keys)->withIsDefault(true)->withIsDisabled(false)->execute();
     $configs = msort($configs, 'getCreateSortKey');
     $configs = mgroup($configs, 'getEngineKey');
     $items = array();
     foreach ($engines as $key => $engine) {
         $engine_configs = idx($configs, $key, array());
         $engine_items = $engine->newQuickCreateActions($engine_configs);
         foreach ($engine_items as $engine_item) {
             $items[] = $engine_item;
         }
     }
     return $items;
 }
コード例 #2
0
 protected function loadPage()
 {
     $engines = PhabricatorEditEngine::getAllEditEngines();
     if ($this->engineKeys !== null) {
         $engines = array_select_keys($engines, $this->engineKeys);
     }
     return $engines;
 }
 protected function loadPage()
 {
     // TODO: The logic here is a little flimsy and won't survive pagination.
     // For now, I'm just not bothering with pagination since I believe it will
     // take some time before any install manages to produce a large enough
     // number of edit forms for any particular engine for the lack of UI
     // pagination to become a problem.
     $page = $this->loadStandardPage($this->newResultObject());
     // Now that we've loaded the real results from the database, we're going
     // to load builtins from the edit engines and add them to the list.
     $engines = PhabricatorEditEngine::getAllEditEngines();
     if ($this->engineKeys) {
         $engines = array_select_keys($engines, $this->engineKeys);
     }
     foreach ($engines as $engine) {
         $engine->setViewer($this->getViewer());
     }
     // List all the builtins which have already been saved to the database as
     // real objects.
     $concrete = array();
     foreach ($page as $config) {
         $builtin_key = $config->getBuiltinKey();
         if ($builtin_key !== null) {
             $engine_key = $config->getEngineKey();
             $concrete[$engine_key][$builtin_key] = $config;
         }
     }
     $builtins = array();
     foreach ($engines as $engine_key => $engine) {
         $engine_builtins = $engine->getBuiltinEngineConfigurations();
         foreach ($engine_builtins as $engine_builtin) {
             $builtin_key = $engine_builtin->getBuiltinKey();
             if (isset($concrete[$engine_key][$builtin_key])) {
                 continue;
             } else {
                 $builtins[] = $engine_builtin;
             }
         }
     }
     foreach ($builtins as $builtin) {
         $page[] = $builtin;
     }
     // Now we have to do some extra filtering to make sure everything we're
     // about to return really satisfies the query.
     if ($this->ids !== null) {
         $ids = array_fuse($this->ids);
         foreach ($page as $key => $config) {
             if (empty($ids[$config->getID()])) {
                 unset($page[$key]);
             }
         }
     }
     if ($this->phids !== null) {
         $phids = array_fuse($this->phids);
         foreach ($page as $key => $config) {
             if (empty($phids[$config->getPHID()])) {
                 unset($page[$key]);
             }
         }
     }
     if ($this->builtinKeys !== null) {
         $builtin_keys = array_fuse($this->builtinKeys);
         foreach ($page as $key => $config) {
             if (empty($builtin_keys[$config->getBuiltinKey()])) {
                 unset($page[$key]);
             }
         }
     }
     if ($this->default !== null) {
         foreach ($page as $key => $config) {
             if ($config->getIsDefault() != $this->default) {
                 unset($page[$key]);
             }
         }
     }
     if ($this->disabled !== null) {
         foreach ($page as $key => $config) {
             if ($config->getIsDisabled() != $this->disabled) {
                 unset($page[$key]);
             }
         }
     }
     if ($this->identifiers !== null) {
         $identifiers = array_fuse($this->identifiers);
         foreach ($page as $key => $config) {
             if (isset($identifiers[$config->getBuiltinKey()])) {
                 continue;
             }
             if (isset($identifiers[$config->getID()])) {
                 continue;
             }
             unset($page[$key]);
         }
     }
     return $page;
 }