function updatePriorities() { $request =& HTTPRequest::instance(); if ($request->exist('priorities')) { $plugin_manager =& PluginManager::instance(); $plugin_hook_priority_manager = new PluginHookPriorityManager(); $updated = false; foreach ($request->get('priorities') as $hook => $plugins) { if (is_array($plugins)) { foreach ($plugins as $id => $priority) { $plugin =& $plugin_manager->getPluginById((int) $id); $updated = $updated || $plugin_hook_priority_manager->setPriorityForPluginHook($plugin, $hook, (int) $priority); } } } if ($updated) { $GLOBALS['feedback'] .= 'Priorities updated'; } } }
function _searchPlugins() { if (!$this->_plugins) { $this->_plugins = array(); $this->_priorities = array(); $plugin_hook_priority_manager = new PluginHookPriorityManager(); $plugin_manager = $this->plugin_manager; try { $forgeUpgradeConfig = new ForgeUpgradeConfig(); $forgeUpgradeConfig->loadDefaults(); $noFUConfig = array(); } catch (Exception $e) { $GLOBALS['Response']->addFeedback('warning', $e->getMessage()); } $plugins = $plugin_manager->getAllPlugins(); foreach ($plugins as $plugin) { $plug_info =& $plugin->getPluginInfo(); $descriptor =& $plug_info->getPluginDescriptor(); $available = $plugin_manager->isPluginAvailable($plugin); $name = $descriptor->getFullName(); if (strlen(trim($name)) === 0) { $name = get_class($plugin); } $dont_touch = strcasecmp(get_class($plugin), 'PluginsAdministrationPlugin') === 0; $dont_restrict = $plugin->getScope() !== Plugin::SCOPE_PROJECT; $this->_plugins[] = array('plugin_id' => $plugin->getId(), 'name' => $name, 'description' => $descriptor->getDescription(), 'version' => $descriptor->getVersion(), 'available' => $available, 'scope' => $plugin->getScope(), 'dont_touch' => $dont_touch, 'dont_restrict' => $dont_restrict); if (isset($noFUConfig) && !$forgeUpgradeConfig->existsInPath($plugin->getFilesystemPath())) { $noFUConfig[] = array('name' => $name, 'plugin' => $plugin); } $col_hooks =& $plugin->getHooks(); $hooks =& $col_hooks->iterator(); while ($hooks->valid()) { $hook =& $hooks->current(); $priority = $plugin_hook_priority_manager->getPriorityForPluginHook($plugin, $hook); if (!isset($this->_priorities[$hook])) { $this->_priorities[$hook] = array(); } if (!isset($this->_priorities[$hook][$priority])) { $this->_priorities[$hook][$priority] = array(); } $this->_priorities[$hook][$priority][$plugin->getId()] = array('name' => $name, 'available' => $available); $hooks->next(); } } // ForgeUpgrade configuration warning if (isset($noFUConfig) && count($noFUConfig) && isset($GLOBALS['forgeupgrade_file'])) { $txt = 'Some plugins are not referenced in ForgeUpgrade configuration, please add the following in <code>' . $GLOBALS['forgeupgrade_file'] . '.</code><br/>'; foreach ($noFUConfig as $plugInfo) { $txt .= '<code>path[]="' . $plugInfo['plugin']->getFilesystemPath() . '"</code><br/>'; } $GLOBALS['Response']->addFeedback('warning', $txt, CODENDI_PURIFIER_DISABLED); } } }