| <?php |
|
|
| |
| |
| |
| |
| |
| |
|
|
| namespace Piwik\Plugins\CorePluginsAdmin\Commands; |
|
|
| use Piwik\Plugin\ConsoleCommand; |
| use Piwik\Plugin\Manager; |
|
|
| |
| |
| |
| class ListPlugins extends ConsoleCommand |
| { |
| protected function configure() |
| { |
| $this->setName('plugin:list'); |
| $this->setDescription('List installed plugins.'); |
| $this->addOptionalValueOption('filter-plugin', null, 'If given, prints only plugins that contain this term.'); |
| $this->addNoValueOption('json', null, 'If given, outputs JSON formatted data.'); |
| } |
|
|
| protected function doExecute(): int |
| { |
| $pluginManager = Manager::getInstance(); |
|
|
| $plugins = $pluginManager->getInstalledPluginsName(); |
|
|
| $pluginFilter = $this->getInput()->getOption('filter-plugin'); |
|
|
| if (!empty($pluginFilter)) { |
| $plugins = array_filter($plugins, function ($pluginName) use ($pluginFilter) { |
| return strpos($pluginName, $pluginFilter) !== false; |
| }); |
| } |
|
|
| $verbose = $this->getOutput()->isVerbose(); |
|
|
| $plugins = array_map(function ($plugin) use ($pluginManager, $verbose) { |
| $pluginInformation = array( |
| "plugin" => $plugin, |
| "core" => $pluginManager->isPluginBundledWithCore($plugin), |
| "activated" => !$pluginManager->isPluginInFilesystem($plugin) ? null : $pluginManager->isPluginActivated($plugin), |
| ); |
| if ($verbose) { |
| $pluginInformation["version"] = $pluginManager->getVersion($plugin); |
| } |
| return $pluginInformation; |
| }, $plugins); |
|
|
| if ($this->getInput()->getOption('json')) { |
| $plugins = array_map(function ($plugin) { |
| $plugin["comment"] = !isset($plugin["activated"]) ? 'Plugin not found in filesystem.' : ''; |
| if (isset($plugin["version"]) && !isset($plugin["activated"])) { |
| $plugin["version"] = ''; |
| } |
| return $plugin; |
| }, $plugins); |
|
|
| |
| $this->getOutput()->write(json_encode($plugins)); |
| } else { |
| |
| $plugins = array_map(function ($plugin) { |
| $plugin["plugin"] = self::wrapInTag('info', $plugin["plugin"]); |
| $plugin["core"] = $plugin["core"] ? 'Core' : 'Optional'; |
| if (isset($plugin["version"]) && !isset($plugin["activated"])) { |
| $plugin["version"] = ''; |
| } |
| $plugin["activated"] = !isset($plugin["activated"]) ? self::wrapInTag('error', 'Not found') : ($plugin["activated"] ? 'Activated' : self::wrapInTag('comment', 'Not activated')); |
| return $plugin; |
| }, $plugins); |
|
|
| |
| uasort($plugins, function ($a, $b) { |
| return strcmp($a["core"], $b["core"]); |
| }); |
| if (!$verbose) { |
| $this->renderTable(['Plugin', 'Core or optional?', 'Status'], $plugins); |
| } else { |
| $this->renderTable(['Plugin', 'Core or optional?', 'Status', 'Version'], $plugins); |
| } |
| } |
|
|
|
|
| return self::SUCCESS; |
| } |
| } |
|
|