From 00294e3dae2840fa01acaf47db4e14ae08c0720a Mon Sep 17 00:00:00 2001
From: Andreas Fischer <bantu@phpbb.com>
Date: Tue, 5 Nov 2013 21:40:42 +0100
Subject: [ticket/11998] Turn develop/extensions.php into console commands.

PHPBB3-11998
---
 phpBB/phpbb/console/command/extension/command.php | 22 +++++++++
 phpBB/phpbb/console/command/extension/disable.php | 47 ++++++++++++++++++
 phpBB/phpbb/console/command/extension/enable.php  | 47 ++++++++++++++++++
 phpBB/phpbb/console/command/extension/purge.php   | 47 ++++++++++++++++++
 phpBB/phpbb/console/command/extension/show.php    | 58 +++++++++++++++++++++++
 5 files changed, 221 insertions(+)
 create mode 100644 phpBB/phpbb/console/command/extension/command.php
 create mode 100644 phpBB/phpbb/console/command/extension/disable.php
 create mode 100644 phpBB/phpbb/console/command/extension/enable.php
 create mode 100644 phpBB/phpbb/console/command/extension/purge.php
 create mode 100644 phpBB/phpbb/console/command/extension/show.php

(limited to 'phpBB/phpbb/console/command/extension')

diff --git a/phpBB/phpbb/console/command/extension/command.php b/phpBB/phpbb/console/command/extension/command.php
new file mode 100644
index 0000000000..edde7ce2e2
--- /dev/null
+++ b/phpBB/phpbb/console/command/extension/command.php
@@ -0,0 +1,22 @@
+<?php
+/**
+*
+* @package phpBB3
+* @copyright (c) 2013 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+namespace phpbb\console\command\extension;
+
+abstract class command extends \phpbb\console\command\command
+{
+	/** @var \phpbb\extension\manager */
+	protected $manager;
+
+	function __construct(\phpbb\extension\manager $manager)
+	{
+		$this->manager = $manager;
+
+		parent::__construct();
+	}
+}
diff --git a/phpBB/phpbb/console/command/extension/disable.php b/phpBB/phpbb/console/command/extension/disable.php
new file mode 100644
index 0000000000..e4de70ca34
--- /dev/null
+++ b/phpBB/phpbb/console/command/extension/disable.php
@@ -0,0 +1,47 @@
+<?php
+/**
+*
+* @package phpBB3
+* @copyright (c) 2013 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+namespace phpbb\console\command\extension;
+
+use Symfony\Component\Console\Input\InputArgument;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+class disable extends command
+{
+	protected function configure()
+	{
+		$this
+			->setName('extension:disable')
+			->setDescription('Disables the specified extension.')
+			->addArgument(
+				'extension-name',
+				InputArgument::REQUIRED,
+				'Name of the extension'
+			)
+		;
+	}
+
+	protected function execute(InputInterface $input, OutputInterface $output)
+	{
+		$name = $input->getArgument('extension-name');
+		$this->manager->disable($name);
+		$this->manager->load_extensions();
+
+		if ($this->manager->enabled($name))
+		{
+			$output->writeln("<error>Could not disable extension $name</error>");
+			return 1;
+		}
+		else
+		{
+			$output->writeln("<info>Successfully disabled extension $name</info>");
+			return 0;
+		}
+	}
+}
diff --git a/phpBB/phpbb/console/command/extension/enable.php b/phpBB/phpbb/console/command/extension/enable.php
new file mode 100644
index 0000000000..ee7dae76aa
--- /dev/null
+++ b/phpBB/phpbb/console/command/extension/enable.php
@@ -0,0 +1,47 @@
+<?php
+/**
+*
+* @package phpBB3
+* @copyright (c) 2013 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+namespace phpbb\console\command\extension;
+
+use Symfony\Component\Console\Input\InputArgument;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+class enable extends command
+{
+	protected function configure()
+	{
+		$this
+			->setName('extension:enable')
+			->setDescription('Enables the specified extension.')
+			->addArgument(
+				'extension-name',
+				InputArgument::REQUIRED,
+				'Name of the extension'
+			)
+		;
+	}
+
+	protected function execute(InputInterface $input, OutputInterface $output)
+	{
+		$name = $input->getArgument('extension-name');
+		$this->manager->enable($name);
+		$this->manager->load_extensions();
+
+		if ($this->manager->enabled($name))
+		{
+			$output->writeln("<info>Successfully enabled extension $name</info>");
+			return 0;
+		}
+		else
+		{
+			$output->writeln("<error>Could not enable extension $name</error>");
+			return 1;
+		}
+	}
+}
diff --git a/phpBB/phpbb/console/command/extension/purge.php b/phpBB/phpbb/console/command/extension/purge.php
new file mode 100644
index 0000000000..c2e1d2928c
--- /dev/null
+++ b/phpBB/phpbb/console/command/extension/purge.php
@@ -0,0 +1,47 @@
+<?php
+/**
+*
+* @package phpBB3
+* @copyright (c) 2013 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+namespace phpbb\console\command\extension;
+
+use Symfony\Component\Console\Input\InputArgument;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+class purge extends command
+{
+	protected function configure()
+	{
+		$this
+			->setName('extension:purge')
+			->setDescription('Purges the specified extension.')
+			->addArgument(
+				'extension-name',
+				InputArgument::REQUIRED,
+				'Name of the extension'
+			)
+		;
+	}
+
+	protected function execute(InputInterface $input, OutputInterface $output)
+	{
+		$name = $input->getArgument('extension-name');
+		$this->manager->purge($name);
+		$this->manager->load_extensions();
+
+		if ($this->manager->enabled($name))
+		{
+			$output->writeln("<error>Could not purge extension $name</error>");
+			return 1;
+		}
+		else
+		{
+			$output->writeln("<info>Successfully purge extension $name</info>");
+			return 0;
+		}
+	}
+}
diff --git a/phpBB/phpbb/console/command/extension/show.php b/phpBB/phpbb/console/command/extension/show.php
new file mode 100644
index 0000000000..0f48ac2379
--- /dev/null
+++ b/phpBB/phpbb/console/command/extension/show.php
@@ -0,0 +1,58 @@
+<?php
+/**
+*
+* @package phpBB3
+* @copyright (c) 2013 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+namespace phpbb\console\command\extension;
+
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+class show extends command
+{
+	protected function configure()
+	{
+		$this
+			->setName('extension:show')
+			->setDescription('Lists all extensions in the database and on the filesystem.')
+		;
+	}
+
+	protected function execute(InputInterface $input, OutputInterface $output)
+	{
+		$this->manager->load_extensions();
+		$all = array_keys($this->manager->all_available());
+
+		if (empty($all))
+		{
+			$output->writeln('<comment>No extensions were found.</comment>');
+			return 3;
+		}
+
+		$enabled = array_keys($this->manager->all_enabled());
+		$this->print_extension_list($output, 'Enabled', $enabled);
+
+		$output->writeln('');
+
+		$disabled = array_keys($this->manager->all_disabled());
+		$this->print_extension_list($output, 'Disabled', $disabled);
+
+		$output->writeln('');
+
+		$purged = array_diff($all, $enabled, $disabled);
+		$this->print_extension_list($output, 'Available', $purged);
+	}
+
+	protected function print_extension_list(OutputInterface $output, $type, array $extensions)
+	{
+		$output->writeln("<info>$type:</info>");
+
+		foreach ($extensions as $extension)
+		{
+			$output->writeln(" - $extension");
+		}
+	}
+}
-- 
cgit v1.2.1