From 7836449148b09dd8d50116ef22b3beb0a9bb9bb8 Mon Sep 17 00:00:00 2001 From: Thomas Steur <tsteur@users.noreply.github.com> Date: Wed, 24 May 2017 19:34:49 +1200 Subject: [PATCH] add possibility to specify multiple plugins (#11733) --- CHANGELOG.md | 3 +++ .../Commands/ActivatePlugin.php | 26 ++++++++++--------- .../Commands/DeactivatePlugin.php | 18 +++++++------ 3 files changed, 27 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4ce5435b66..d2ee7803cc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,9 @@ The Product Changelog at **[piwik.org/changelog](http://piwik.org/changelog)** l * The events `ScheduledTasks.shouldExecuteTask`, `ScheduledTasks.execute`, `ScheduledTasks.execute.end` have been added to customize the behaviour of scheduled tasks. * A new event `CustomPiwikJs.shouldAddTrackerFile` has been added to let plugins customize which tracker files should be included in piwik.js JavaScript tracker +### New commands +* The commands `plugin:activate` and `plugin:deactivate` can now activate and deactivate multiple plugins at once + ## Piwik 3.0.4 ### New APIs diff --git a/plugins/CorePluginsAdmin/Commands/ActivatePlugin.php b/plugins/CorePluginsAdmin/Commands/ActivatePlugin.php index eae153481f..a62f707c1d 100644 --- a/plugins/CorePluginsAdmin/Commands/ActivatePlugin.php +++ b/plugins/CorePluginsAdmin/Commands/ActivatePlugin.php @@ -23,27 +23,29 @@ class ActivatePlugin extends ConsoleCommand { $this->setName('plugin:activate'); $this->setDescription('Activate a plugin.'); - $this->addArgument('plugin', InputArgument::REQUIRED, 'The plugin name.'); + $this->addArgument('plugin', InputArgument::IS_ARRAY, 'The plugin name you want to activate. Multiple plugin names can be specified separated by a space.'); } protected function execute(InputInterface $input, OutputInterface $output) { $pluginManager = Manager::getInstance(); - $plugin = $input->getArgument('plugin'); + $plugins = $input->getArgument('plugin'); - if ($pluginManager->isPluginActivated($plugin)) { - $output->writeln('<comment>The plugin is already activated.</comment>'); - return; - } + foreach ($plugins as $plugin) { + if ($pluginManager->isPluginActivated($plugin)) { + $output->writeln(sprintf('<comment>The plugin %s is already activated.</comment>', $plugin)); + continue; + } - if ($dependencies = $pluginManager->loadPlugin($plugin)->getMissingDependenciesAsString()) { - $output->writeln("<error>$dependencies</error>"); - return; - } + if ($dependencies = $pluginManager->loadPlugin($plugin)->getMissingDependenciesAsString()) { + $output->writeln("<error>$dependencies</error>"); + continue; + } - $pluginManager->activatePlugin($plugin); + $pluginManager->activatePlugin($plugin); - $output->writeln("Activated plugin <info>$plugin</info>"); + $output->writeln("Activated plugin <info>$plugin</info>"); + } } } diff --git a/plugins/CorePluginsAdmin/Commands/DeactivatePlugin.php b/plugins/CorePluginsAdmin/Commands/DeactivatePlugin.php index 33f5671e48..451529368b 100644 --- a/plugins/CorePluginsAdmin/Commands/DeactivatePlugin.php +++ b/plugins/CorePluginsAdmin/Commands/DeactivatePlugin.php @@ -23,22 +23,24 @@ class DeactivatePlugin extends ConsoleCommand { $this->setName('plugin:deactivate'); $this->setDescription('Deactivate a plugin.'); - $this->addArgument('plugin', InputArgument::REQUIRED, 'The plugin name.'); + $this->addArgument('plugin', InputArgument::IS_ARRAY, 'The plugin name you want to activate. Multiple plugin names can be specified separated by a space.'); } protected function execute(InputInterface $input, OutputInterface $output) { $pluginManager = Manager::getInstance(); - $plugin = $input->getArgument('plugin'); + $plugins = $input->getArgument('plugin'); - if (!$pluginManager->isPluginActivated($plugin)) { - $output->writeln('<comment>The plugin is already deactivated.</comment>'); - return; - } + foreach ($plugins as $plugin) { + if (!$pluginManager->isPluginActivated($plugin)) { + $output->writeln(sprintf('<comment>The plugin %s is already deactivated.</comment>', $plugin)); + continue; + } - $pluginManager->deactivatePlugin($plugin); + $pluginManager->deactivatePlugin($plugin); - $output->writeln("Deactivated plugin <info>$plugin</info>"); + $output->writeln("Deactivated plugin <info>$plugin</info>"); + } } } -- GitLab