/** * Display list of available plugins */ public function directory() { $installedPlugins = array(); foreach ($this->pluginLoader->getPlugins() as $plugin) { $installedPlugins[$plugin->getPluginName()] = $plugin->getPluginVersion(); } $this->response->html($this->helper->layout->plugin('plugin/directory', array('installed_plugins' => $installedPlugins, 'available_plugins' => Directory::getInstance($this->container)->getAvailablePlugins(), 'title' => t('Plugin Directory'), 'is_configured' => Installer::isConfigured()))); }
protected function execute(InputInterface $input, OutputInterface $output) { if (!Installer::isConfigured()) { throw new LogicException('Kanboard is not configured to install plugins itself'); } $installer = new Installer($this->container); $availablePlugins = Directory::getInstance($this->container)->getAvailablePlugins(); foreach ($this->pluginLoader->getPlugins() as $installedPlugin) { $pluginDetails = $this->getPluginDetails($availablePlugins, $installedPlugin); if ($pluginDetails === null) { $output->writeln('<error>* Plugin not available in the directory: ' . $installedPlugin->getPluginName() . '</error>'); } elseif ($pluginDetails['version'] > $installedPlugin->getPluginVersion()) { $output->writeln('<comment>* Updating plugin: ' . $installedPlugin->getPluginName() . '</comment>'); $installer->update($pluginDetails['download']); } else { $output->writeln('<info>* Plugin up to date: ' . $installedPlugin->getPluginName() . '</info>'); } } }