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/command/fixup/recalculate_email_hash.php')

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/command/fixup/recalculate_email_hash.php | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

(limited to 'phpBB/phpbb/console/command/fixup/recalculate_email_hash.php')

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