diff options
Diffstat (limited to 'phpBB')
| -rw-r--r-- | phpBB/includes/acp/acp_forums.php | 24 | ||||
| -rw-r--r-- | phpBB/includes/functions_admin.php | 24 | ||||
| -rw-r--r-- | phpBB/includes/functions_content.php | 22 | 
3 files changed, 59 insertions, 11 deletions
diff --git a/phpBB/includes/acp/acp_forums.php b/phpBB/includes/acp/acp_forums.php index 3ea9d81887..66bb630241 100644 --- a/phpBB/includes/acp/acp_forums.php +++ b/phpBB/includes/acp/acp_forums.php @@ -843,9 +843,26 @@ class acp_forums  			ORDER BY left_id";  		$result = $db->sql_query($sql); -		if ($row = $db->sql_fetchrow($result)) +		$rowset = array(); +		while ($row = $db->sql_fetchrow($result)) +		{ +			$rowset[(int) $row['forum_id']] = $row; +		} +		$db->sql_freeresult($result); + +		/** +		* Modify the forum list data +		* +		* @event core.acp_manage_forums_modify_forum_list +		* @var	array	rowset	Array with the forums list data +		* @since 3.1.10-RC1 +		*/ +		$vars = array('rowset'); +		extract($phpbb_dispatcher->trigger_event('core.acp_manage_forums_modify_forum_list', compact($vars))); + +		if (!empty($rowset))  		{ -			do +			foreach ($rowset as $row)  			{  				$forum_type = $row['forum_type']; @@ -889,7 +906,6 @@ class acp_forums  					'U_SYNC'			=> $url . '&action=sync')  				);  			} -			while ($row = $db->sql_fetchrow($result));  		}  		else if ($this->parent_id)  		{ @@ -905,7 +921,7 @@ class acp_forums  				'U_SYNC'			=> $url . '&action=sync')  			);  		} -		$db->sql_freeresult($result); +		unset($rowset);  		$template->assign_vars(array(  			'ERROR_MSG'		=> (sizeof($errors)) ? implode('<br />', $errors) : '', diff --git a/phpBB/includes/functions_admin.php b/phpBB/includes/functions_admin.php index 5cf65e04ba..13b2b29274 100644 --- a/phpBB/includes/functions_admin.php +++ b/phpBB/includes/functions_admin.php @@ -65,7 +65,7 @@ function recalc_nested_sets(&$new_id, $pkey, $table, $parent_id = 0, $where = ar  */  function make_forum_select($select_id = false, $ignore_id = false, $ignore_acl = false, $ignore_nonpost = false, $ignore_emptycat = true, $only_acl_post = false, $return_array = false)  { -	global $db, $auth; +	global $db, $auth, $phpbb_dispatcher;  	// This query is identical to the jumpbox one  	$sql = 'SELECT forum_id, forum_name, parent_id, forum_type, forum_flags, forum_options, left_id, right_id @@ -73,16 +73,33 @@ function make_forum_select($select_id = false, $ignore_id = false, $ignore_acl =  		ORDER BY left_id ASC';  	$result = $db->sql_query($sql, 600); +	$rowset = array(); +	while ($row = $db->sql_fetchrow($result)) +	{ +		$rowset[(int) $row['forum_id']] = $row; +	} +	$db->sql_freeresult($result); +  	$right = 0;  	$padding_store = array('0' => '');  	$padding = '';  	$forum_list = ($return_array) ? array() : ''; +	/** +	* Modify the forum list data +	* +	* @event core.make_forum_select_modify_forum_list +	* @var	array	rowset	Array with the forums list data +	* @since 3.1.10-RC1 +	*/ +	$vars = array('rowset'); +	extract($phpbb_dispatcher->trigger_event('core.make_forum_select_modify_forum_list', compact($vars))); +  	// Sometimes it could happen that forums will be displayed here not be displayed within the index page  	// This is the result of forums not displayed at index, having list permissions and a parent of a forum with no permissions.  	// If this happens, the padding could be "broken" -	while ($row = $db->sql_fetchrow($result)) +	foreach ($rowset as $row)  	{  		if ($row['left_id'] < $right)  		{ @@ -133,8 +150,7 @@ function make_forum_select($select_id = false, $ignore_id = false, $ignore_acl =  			$forum_list .= '<option value="' . $row['forum_id'] . '"' . (($disabled) ? ' disabled="disabled" class="disabled-option"' : $selected) . '>' . $padding . $row['forum_name'] . '</option>';  		}  	} -	$db->sql_freeresult($result); -	unset($padding_store); +	unset($padding_store, $rowset);  	return $forum_list;  } diff --git a/phpBB/includes/functions_content.php b/phpBB/includes/functions_content.php index 173ea49acc..e36eb8119b 100644 --- a/phpBB/includes/functions_content.php +++ b/phpBB/includes/functions_content.php @@ -163,16 +163,33 @@ function make_jumpbox($action, $forum_id = false, $select_all = false, $acl_list  		ORDER BY left_id ASC';  	$result = $db->sql_query($sql, 600); +	$rowset = array(); +	while ($row = $db->sql_fetchrow($result)) +	{ +		$rowset[(int) $row['forum_id']] = $row; +	} +	$db->sql_freeresult($result); +  	$right = $padding = 0;  	$padding_store = array('0' => 0);  	$display_jumpbox = false;  	$iteration = 0; +	/** +	* Modify the jumpbox forum list data +	* +	* @event core.make_jumpbox_modify_forum_list +	* @var	array	rowset	Array with the forums list data +	* @since 3.1.10-RC1 +	*/ +	$vars = array('rowset'); +	extract($phpbb_dispatcher->trigger_event('core.make_jumpbox_modify_forum_list', compact($vars))); +  	// Sometimes it could happen that forums will be displayed here not be displayed within the index page  	// This is the result of forums not displayed at index, having list permissions and a parent of a forum with no permissions.  	// If this happens, the padding could be "broken" -	while ($row = $db->sql_fetchrow($result)) +	foreach ($rowset as $row)  	{  		if ($row['left_id'] < $right)  		{ @@ -254,8 +271,7 @@ function make_jumpbox($action, $forum_id = false, $select_all = false, $acl_list  		}  		$iteration++;  	} -	$db->sql_freeresult($result); -	unset($padding_store); +	unset($padding_store, $rowset);  	$url_parts = $phpbb_path_helper->get_url_parts($action);  | 
