From 743a0560c3cced8c37b5ae840e449a60a0b51a33 Mon Sep 17 00:00:00 2001
From: Andreas Fischer <bantu@phpbb.com>
Date: Sun, 3 Nov 2013 04:14:36 +0100
Subject: [ticket/11998] Add console command for recalculating email hash.

PHPBB3-11998
---
 .../command/fixup/recalculate_email_hash.php       | 72 ++++++++++++++++++++++
 1 file changed, 72 insertions(+)
 create mode 100644 phpBB/phpbb/console/command/fixup/recalculate_email_hash.php

(limited to 'phpBB/phpbb/console')

diff --git a/phpBB/phpbb/console/command/fixup/recalculate_email_hash.php b/phpBB/phpbb/console/command/fixup/recalculate_email_hash.php
new file mode 100644
index 0000000000..b788fe5631
--- /dev/null
+++ b/phpBB/phpbb/console/command/fixup/recalculate_email_hash.php
@@ -0,0 +1,72 @@
+<?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\fixup;
+
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+class recalculate_email_hash extends Command
+{
+	/** @var \phpbb\db\driver\driver */
+	protected $db;
+
+	function __construct(\phpbb\db\driver\driver $db)
+	{
+		$this->db = $db;
+
+		parent::__construct();
+	}
+
+	protected function configure()
+	{
+		$this
+			->setName('fixup:recalculate-email-hash')
+			->setDescription('Recalculates the user_email_hash column of the users table.')
+		;
+	}
+
+	protected function execute(InputInterface $input, OutputInterface $output)
+	{
+		$sql = 'SELECT user_id, user_email, user_email_hash
+			FROM ' . USERS_TABLE . '
+			WHERE user_type <> ' . USER_IGNORE . "
+				AND user_email <> ''";
+		$result = $this->db->sql_query($sql);
+
+		while ($row = $this->db->sql_fetchrow($result))
+		{
+			$user_email_hash = phpbb_email_hash($row['user_email']);
+			if ($user_email_hash !== $row['user_email_hash'])
+			{
+				$sql_ary = array(
+					'user_email_hash'	=> $user_email_hash,
+				);
+
+				$sql = 'UPDATE ' . USERS_TABLE . '
+					SET ' . $this->db->sql_build_array('UPDATE', $sql_ary) . '
+					WHERE user_id = ' . (int) $row['user_id'];
+				$this->db->sql_query($sql);
+
+				if ($output->getVerbosity() >= OutputInterface::VERBOSITY_DEBUG)
+				{
+					$output->writeln(sprintf(
+						'user_id %d, email %s => %s',
+						$row['user_id'],
+						$row['user_email'],
+						$user_email_hash
+					));
+				}
+			}
+		}
+		$this->db->sql_freeresult($result);
+
+		$output->writeln('<info>Successfully recalculated all email hashes.</info>');
+	}
+}
-- 
cgit v1.2.1


From 73ea5daf97bf5447b9bb2ff912cce4a9ea21c58e Mon Sep 17 00:00:00 2001
From: Andreas Fischer <bantu@phpbb.com>
Date: Tue, 5 Nov 2013 19:42:34 +0100
Subject: [ticket/11998] Add phpBB abstraction for application and command.

PHPBB3-11998
---
 phpBB/phpbb/console/application.php                | 23 ++++++++++++++++++++++
 phpBB/phpbb/console/command/command.php            | 14 +++++++++++++
 .../command/fixup/recalculate_email_hash.php       |  3 +--
 3 files changed, 38 insertions(+), 2 deletions(-)
 create mode 100644 phpBB/phpbb/console/application.php
 create mode 100644 phpBB/phpbb/console/command/command.php

(limited to 'phpBB/phpbb/console')

diff --git a/phpBB/phpbb/console/application.php b/phpBB/phpbb/console/application.php
new file mode 100644
index 0000000000..fdcd9d42f6
--- /dev/null
+++ b/phpBB/phpbb/console/application.php
@@ -0,0 +1,23 @@
+<?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;
+
+use Symfony\Component\DependencyInjection\TaggedContainerInterface;
+
+class application extends \Symfony\Component\Console\Application
+{
+	function register_container_commands(TaggedContainerInterface $container, $tag = 'console.command')
+	{
+		foreach($container->findTaggedServiceIds($tag) as $id => $void)
+		{
+			$this->add($container->get($id));
+		}
+	}
+}
diff --git a/phpBB/phpbb/console/command/command.php b/phpBB/phpbb/console/command/command.php
new file mode 100644
index 0000000000..6abbdd203c
--- /dev/null
+++ b/phpBB/phpbb/console/command/command.php
@@ -0,0 +1,14 @@
+<?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;
+
+abstract class command extends \Symfony\Component\Console\Command\Command
+{
+}
diff --git a/phpBB/phpbb/console/command/fixup/recalculate_email_hash.php b/phpBB/phpbb/console/command/fixup/recalculate_email_hash.php
index b788fe5631..04db880091 100644
--- a/phpBB/phpbb/console/command/fixup/recalculate_email_hash.php
+++ b/phpBB/phpbb/console/command/fixup/recalculate_email_hash.php
@@ -8,11 +8,10 @@
 */
 namespace phpbb\console\command\fixup;
 
-use Symfony\Component\Console\Command\Command;
 use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Output\OutputInterface;
 
-class recalculate_email_hash extends Command
+class recalculate_email_hash extends \phpbb\console\command\command
 {
 	/** @var \phpbb\db\driver\driver */
 	protected $db;
-- 
cgit v1.2.1


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')

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