diff options
| author | rxu <rxu@mail.ru> | 2017-06-06 00:50:22 +0700 | 
|---|---|---|
| committer | rxu <rxu@mail.ru> | 2017-06-18 23:14:09 +0700 | 
| commit | c1fa252fc1fd9855d4a6dac92ece9a1690cda7bc (patch) | |
| tree | c837e9eb3aad93885b864775b85359cc12ac0665 | |
| parent | fd822ade20a1407af6a464ffec71c4da0d330a3c (diff) | |
| download | forums-c1fa252fc1fd9855d4a6dac92ece9a1690cda7bc.tar forums-c1fa252fc1fd9855d4a6dac92ece9a1690cda7bc.tar.gz forums-c1fa252fc1fd9855d4a6dac92ece9a1690cda7bc.tar.bz2 forums-c1fa252fc1fd9855d4a6dac92ece9a1690cda7bc.tar.xz forums-c1fa252fc1fd9855d4a6dac92ece9a1690cda7bc.zip  | |
[ticket/15238] Code cleanup, add docblocks
PHPBB3-15238
| -rw-r--r-- | phpBB/phpbb/console/command/fixup/fix_left_right_ids.php | 50 | 
1 files changed, 39 insertions, 11 deletions
diff --git a/phpBB/phpbb/console/command/fixup/fix_left_right_ids.php b/phpBB/phpbb/console/command/fixup/fix_left_right_ids.php index df0968a601..3781a411f1 100644 --- a/phpBB/phpbb/console/command/fixup/fix_left_right_ids.php +++ b/phpBB/phpbb/console/command/fixup/fix_left_right_ids.php @@ -26,6 +26,13 @@ class fix_left_right_ids extends \phpbb\console\command\command  	/** @var \phpbb\cache\driver\driver_interface */  	protected $cache; +	/** +	* Constructor +	* +	* @param \phpbb\user							$user	User instance +	* @param \phpbb\db\driver\driver_interface		$db		Database connection +	* @param \phpbb\cache\driver\driver_interface	$cache	Cache instance +	*/  	public function __construct(\phpbb\user $user, \phpbb\db\driver\driver_interface $db, \phpbb\cache\driver\driver_interface $cache)  	{  		$this->user = $user; @@ -35,6 +42,9 @@ class fix_left_right_ids extends \phpbb\console\command\command  		parent::__construct($user);  	} +	/** +	* {@inheritdoc} +	*/  	protected function configure()  	{  		$this @@ -44,32 +54,50 @@ class fix_left_right_ids extends \phpbb\console\command\command  	}  	/** +	* Executes the command fixup:fix-left-right-ids. +	* +	* Repairs the tree structure of the forums and modules.  	* The code is mainly borrowed from Support toolkit for phpBB Olympus +	* +	* @param InputInterface  $input  An InputInterface instance +	* @param OutputInterface $output An OutputInterface instance +	* +	* @return void  	*/  	protected function execute(InputInterface $input, OutputInterface $output)  	{ -		$changes_made = false; -  		// Fix Left/Right IDs for the modules table  		$result = $this->db->sql_query('SELECT DISTINCT(module_class) FROM ' . MODULES_TABLE);  		while ($row = $this->db->sql_fetchrow($result))  		{  			$i = 1; -			$where = array('module_class = \'' . $row['module_class'] .'\''); -			$changes_made = (($this->fixem($i, 'module_id', MODULES_TABLE, 0, $where)) || $changes_made) ? true : false; +			$where = array("module_class = '" . $this->db->sql_escape($row['module_class']) . "'"); +			$this->fix_ids_tree($i, 'module_id', MODULES_TABLE, 0, $where);  		}  		$this->db->sql_freeresult($result);  		// Fix the Left/Right IDs for the forums table  		$i = 1; -		$changes_made = (($this->fixem($i, 'forum_id', FORUMS_TABLE)) || $changes_made) ? true : false; +		$this->fix_ids_tree($i, 'forum_id', FORUMS_TABLE);  		$this->cache->purge();  		$output->writeln('<info>' . $this->user->lang('CLI_FIXUP_FIX_LEFT_RIGHT_IDS_SUCCESS') . '</info>');  	} -	function fixem(&$i, $pkey, $table, $parent_id = 0, $where = array()) +	/** +	 * Item's tree structure rebuild helper +	 * The item is either forum or ACP/MCP/UCP module +	 * +	 * @param int		$i			Item id offset index +	 * @param string	$field		The key field to fix, forum_id|module_id +	 * @param string	$table		The table name to perform, FORUMS_TABLE|MODULES_TABLE +	 * @param int		$parent_id	Parent item id +	 * @param string	$where		Additional WHERE clause condition +	 * +	 * @return bool	True on rebuild success, false otherwise +	 */ +	function fix_ids_tree(&$i, $field, $table, $parent_id = 0, $where = array())  	{  		$changes_made = false;  		$sql = 'SELECT * FROM ' . $table . ' @@ -79,21 +107,21 @@ class fix_left_right_ids extends \phpbb\console\command\command  		$result = $this->db->sql_query($sql);  		while ($row = $this->db->sql_fetchrow($result))  		{ -			// Update the left_id for this module +			// Update the left_id for the item  			if ($row['left_id'] != $i)  			{ -				$this->db->sql_query('UPDATE ' . $table . ' SET ' . $this->db->sql_build_array('UPDATE', array('left_id' => $i)) . " WHERE $pkey = {$row[$pkey]}"); +				$this->db->sql_query('UPDATE ' . $table . ' SET ' . $this->db->sql_build_array('UPDATE', array('left_id' => $i)) . " WHERE $field = " . (int) $row[$field]);  				$changes_made = true;  			}  			$i++;  			// Go through children and update their left/right IDs -			$changes_made = (($this->fixem($i, $pkey, $table, $row[$pkey], $where)) || $changes_made) ? true : false; +			$changes_made = (($this->fix_ids_tree($i, $field, $table, $row[$field], $where)) || $changes_made) ? true : false; -			// Update the right_id for the module +			// Update the right_id for the item  			if ($row['right_id'] != $i)  			{ -				$this->db->sql_query('UPDATE ' . $table . ' SET ' . $this->db->sql_build_array('UPDATE', array('right_id' => $i)) . " WHERE $pkey = {$row[$pkey]}"); +				$this->db->sql_query('UPDATE ' . $table . ' SET ' . $this->db->sql_build_array('UPDATE', array('right_id' => $i)) . " WHERE $field = " . (int) $row[$field]);  				$changes_made = true;  			}  			$i++;  | 
