diff options
| author | Joas Schilling <nickvergessen@gmx.de> | 2014-10-01 10:19:24 +0200 | 
|---|---|---|
| committer | Joas Schilling <nickvergessen@gmx.de> | 2014-10-01 10:19:24 +0200 | 
| commit | 170b75d0c9bab9d7500748c32bc4de93d1bf5c2f (patch) | |
| tree | 484de5bacc5de90d0b51f0644247931bb9b08fbb /phpBB/includes | |
| parent | 994a0dcd4c444c7902f85355efba3a9a6b06f78e (diff) | |
| parent | cd7b21a7033d692b2f558dfd82bb67d3696d9e0e (diff) | |
| download | forums-170b75d0c9bab9d7500748c32bc4de93d1bf5c2f.tar forums-170b75d0c9bab9d7500748c32bc4de93d1bf5c2f.tar.gz forums-170b75d0c9bab9d7500748c32bc4de93d1bf5c2f.tar.bz2 forums-170b75d0c9bab9d7500748c32bc4de93d1bf5c2f.tar.xz forums-170b75d0c9bab9d7500748c32bc4de93d1bf5c2f.zip  | |
Merge pull request #2888 from Nicofuma/ticket/12993
[ticket/12993] Improve get_user_ranks
Diffstat (limited to 'phpBB/includes')
| -rw-r--r-- | phpBB/includes/functions_compatibility.php | 27 | ||||
| -rw-r--r-- | phpBB/includes/functions_display.php | 57 | ||||
| -rw-r--r-- | phpBB/includes/mcp/mcp_warn.php | 16 | ||||
| -rw-r--r-- | phpBB/includes/ucp/ucp_pm_viewmessage.php | 7 | 
4 files changed, 79 insertions, 28 deletions
diff --git a/phpBB/includes/functions_compatibility.php b/phpBB/includes/functions_compatibility.php index ea092c83bc..fbb1f0e03d 100644 --- a/phpBB/includes/functions_compatibility.php +++ b/phpBB/includes/functions_compatibility.php @@ -165,3 +165,30 @@ function update_foes($group_id = false, $user_id = false)  	global $db, $auth;  	return phpbb_update_foes($db, $auth, $group_id, $user_id);  } + +/** +* Get user rank title and image +* +* @param int $user_rank the current stored users rank id +* @param int $user_posts the users number of posts +* @param string &$rank_title the rank title will be stored here after execution +* @param string &$rank_img the rank image as full img tag is stored here after execution +* @param string &$rank_img_src the rank image source is stored here after execution +* +* @deprecated 3.1.0-RC5 (To be removed: 3.3.0) +* +* Note: since we do not want to break backwards-compatibility, this function will only properly assign ranks to guests if you call it for them with user_posts == false +*/ +function get_user_rank($user_rank, $user_posts, &$rank_title, &$rank_img, &$rank_img_src) +{ +	global $phpbb_root_path, $phpEx; +	if (!function_exists('phpbb_get_user_rank')) +	{ +		include($phpbb_root_path . 'includes/functions_display.' . $phpEx); +	} + +	$rank_data = phpbb_get_user_rank(array('user_rank' => $user_rank), $user_posts); +	$rank_title = $rank_data['title']; +	$rank_img = $rank_data['img']; +	$rank_img_src = $rank_data['img_src']; +} diff --git a/phpBB/includes/functions_display.php b/phpBB/includes/functions_display.php index 85d9496061..77447c62f6 100644 --- a/phpBB/includes/functions_display.php +++ b/phpBB/includes/functions_display.php @@ -1402,17 +1402,34 @@ function watch_topic_forum($mode, &$s_watching, $user_id, $forum_id, $topic_id,  /**  * Get user rank title and image  * -* @param int $user_rank the current stored users rank id +* @param array $user_data the current stored users data  * @param int $user_posts the users number of posts -* @param string &$rank_title the rank title will be stored here after execution -* @param string &$rank_img the rank image as full img tag is stored here after execution -* @param string &$rank_img_src the rank image source is stored here after execution +* +* @return array An associative array containing the rank title (title), the rank image source (img) and the rank image as full img tag (img)  *  * Note: since we do not want to break backwards-compatibility, this function will only properly assign ranks to guests if you call it for them with user_posts == false  */ -function get_user_rank($user_rank, $user_posts, &$rank_title, &$rank_img, &$rank_img_src) +function phpbb_get_user_rank($user_data, $user_posts)  { -	global $ranks, $config, $phpbb_root_path, $phpbb_path_helper; +	global $ranks, $config, $phpbb_root_path, $phpbb_path_helper, $phpbb_dispatcher; + +	$user_rank_data = array( +		'title'		=> null, +		'img'		=> null, +		'img_src'	=> null, +	); + +	/** +	* Preparing a user's rank before displaying +	* +	* @event core.modify_user_rank +	* @var	array	user_data		Array with user's data +	* @var	int		user_posts		User_posts to change +	* @since 3.1.0-RC4 +	*/ + +	$vars = array('user_data', 'user_posts'); +	extract($phpbb_dispatcher->trigger_event('core.modify_user_rank', compact($vars)));  	if (empty($ranks))  	{ @@ -1420,11 +1437,14 @@ function get_user_rank($user_rank, $user_posts, &$rank_title, &$rank_img, &$rank  		$ranks = $cache->obtain_ranks();  	} -	if (!empty($user_rank)) +	if (!empty($user_data['user_rank']))  	{ -		$rank_title = (isset($ranks['special'][$user_rank]['rank_title'])) ? $ranks['special'][$user_rank]['rank_title'] : ''; -		$rank_img_src = (!empty($ranks['special'][$user_rank]['rank_image'])) ? $phpbb_path_helper->update_web_root_path($phpbb_root_path . $config['ranks_path'] . '/' . $ranks['special'][$user_rank]['rank_image']) : ''; -		$rank_img = (!empty($ranks['special'][$user_rank]['rank_image'])) ? '<img src="' . $rank_img_src . '" alt="' . $ranks['special'][$user_rank]['rank_title'] . '" title="' . $ranks['special'][$user_rank]['rank_title'] . '" />' : ''; + +		$user_rank_data['title'] = (isset($ranks['special'][$user_data['user_rank']]['rank_title'])) ? $ranks['special'][$user_data['user_rank']]['rank_title'] : ''; + +		$user_rank_data['img_src'] = (!empty($ranks['special'][$user_data['user_rank']]['rank_image'])) ? $phpbb_path_helper->update_web_root_path($phpbb_root_path . $config['ranks_path'] . '/' . $ranks['special'][$user_data['user_rank']]['rank_image']) : ''; + +		$user_rank_data['img'] = (!empty($ranks['special'][$user_data['user_rank']]['rank_image'])) ? '<img src="' . $user_rank_data['img_src'] . '" alt="' . $ranks['special'][$user_data['user_rank']]['rank_title'] . '" title="' . $ranks['special'][$user_data['user_rank']]['rank_title'] . '" />' : '';  	}  	else if ($user_posts !== false)  	{ @@ -1434,14 +1454,16 @@ function get_user_rank($user_rank, $user_posts, &$rank_title, &$rank_img, &$rank  			{  				if ($user_posts >= $rank['rank_min'])  				{ -					$rank_title = $rank['rank_title']; -					$rank_img_src = (!empty($rank['rank_image'])) ? $phpbb_path_helper->update_web_root_path($phpbb_root_path . $config['ranks_path'] . '/' . $rank['rank_image']) : ''; -					$rank_img = (!empty($rank['rank_image'])) ? '<img src="' . $rank_img_src . '" alt="' . $rank['rank_title'] . '" title="' . $rank['rank_title'] . '" />' : ''; +					$user_rank_data['title'] = $rank['rank_title']; +					$user_rank_data['img_src'] = (!empty($rank['rank_image'])) ? $phpbb_path_helper->update_web_root_path($phpbb_root_path . $config['ranks_path'] . '/' . $rank['rank_image']) : ''; +					$user_rank_data['img'] = (!empty($rank['rank_image'])) ? '<img src="' . $user_rank_data['img_src'] . '" alt="' . $rank['rank_title'] . '" title="' . $rank['rank_title'] . '" />' : '';  					break;  				}  			}  		}  	} + +	return $user_rank_data;  }  /** @@ -1454,8 +1476,7 @@ function phpbb_show_profile($data, $user_notes_enabled = false, $warn_user_enabl  	$username = $data['username'];  	$user_id = $data['user_id']; -	$rank_title = $rank_img = $rank_img_src = ''; -	get_user_rank($data['user_rank'], (($user_id == ANONYMOUS) ? false : $data['user_posts']), $rank_title, $rank_img, $rank_img_src); +	$user_rank_data = phpbb_get_user_rank($data, (($user_id == ANONYMOUS) ? false : $data['user_posts']));  	if ((!empty($data['user_allow_viewemail']) && $auth->acl_get('u_sendemail')) || $auth->acl_get('a_user'))  	{ @@ -1536,7 +1557,7 @@ function phpbb_show_profile($data, $user_notes_enabled = false, $warn_user_enabl  	// Dump it out to the template  	$template_data = array(  		'AGE'			=> $age, -		'RANK_TITLE'	=> $rank_title, +		'RANK_TITLE'	=> $user_rank_data['title'],  		'JOINED'		=> $user->format_date($data['user_regdate']),  		'LAST_ACTIVE'	=> (empty($last_active)) ? ' - ' : $user->format_date($last_active),  		'POSTS'			=> ($data['user_posts']) ? $data['user_posts'] : 0, @@ -1552,8 +1573,8 @@ function phpbb_show_profile($data, $user_notes_enabled = false, $warn_user_enabl  		'AVATAR_IMG'		=> phpbb_get_user_avatar($data),  		'ONLINE_IMG'		=> (!$config['load_onlinetrack']) ? '' : (($online) ? $user->img('icon_user_online', 'ONLINE') : $user->img('icon_user_offline', 'OFFLINE')),  		'S_ONLINE'			=> ($config['load_onlinetrack'] && $online) ? true : false, -		'RANK_IMG'			=> $rank_img, -		'RANK_IMG_SRC'		=> $rank_img_src, +		'RANK_IMG'			=> $user_rank_data['img'], +		'RANK_IMG_SRC'		=> $user_rank_data['img_src'],  		'S_JABBER_ENABLED'	=> ($config['jab_enable']) ? true : false,  		'S_WARNINGS'	=> ($auth->acl_getf_global('m_') || $auth->acl_get('m_warn')) ? true : false, diff --git a/phpBB/includes/mcp/mcp_warn.php b/phpBB/includes/mcp/mcp_warn.php index 106b025757..425c3ac235 100644 --- a/phpBB/includes/mcp/mcp_warn.php +++ b/phpBB/includes/mcp/mcp_warn.php @@ -336,12 +336,12 @@ class mcp_warn  		$message = generate_text_for_display($user_row['post_text'], $user_row['bbcode_uid'], $user_row['bbcode_bitfield'], $parse_flags, true);  		// Generate the appropriate user information for the user we are looking at -		if (!function_exists('get_user_rank')) +		if (!function_exists('phpbb_get_user_rank'))  		{  			include($phpbb_root_path . 'includes/functions_display.' . $phpEx);  		} -		get_user_rank($user_row['user_rank'], $user_row['user_posts'], $rank_title, $rank_img, $rank_img_src); +		$user_rank_data = phpbb_get_user_rank($user_row, $user_row['user_posts']);  		$avatar_img = phpbb_get_user_avatar($user_row);  		$template->assign_vars(array( @@ -350,13 +350,13 @@ class mcp_warn  			'POST'				=> $message,  			'USERNAME'			=> $user_row['username'],  			'USER_COLOR'		=> (!empty($user_row['user_colour'])) ? $user_row['user_colour'] : '', -			'RANK_TITLE'		=> $rank_title, +			'RANK_TITLE'		=> $user_rank_data['title'],  			'JOINED'			=> $user->format_date($user_row['user_regdate']),  			'POSTS'				=> ($user_row['user_posts']) ? $user_row['user_posts'] : 0,  			'WARNINGS'			=> ($user_row['user_warnings']) ? $user_row['user_warnings'] : 0,  			'AVATAR_IMG'		=> $avatar_img, -			'RANK_IMG'			=> $rank_img, +			'RANK_IMG'			=> $user_rank_data['img'],  			'L_WARNING_POST_DEFAULT'	=> sprintf($user->lang['WARNING_POST_DEFAULT'], generate_board_url() . "/viewtopic.$phpEx?f=$forum_id&p=$post_id#p$post_id"), @@ -486,18 +486,18 @@ class mcp_warn  		}  		// Generate the appropriate user information for the user we are looking at -		if (!function_exists('get_user_rank')) +		if (!function_exists('phpbb_get_user_rank'))  		{  			include($phpbb_root_path . 'includes/functions_display.' . $phpEx);  		} -		get_user_rank($user_row['user_rank'], $user_row['user_posts'], $rank_title, $rank_img, $rank_img_src); +		$user_rank_data = phpbb_get_user_rank($user_row, $user_row['user_posts']);  		$avatar_img = phpbb_get_user_avatar($user_row);  		// OK, they didn't submit a warning so lets build the page for them to do so  		$template->assign_vars(array(  			'U_POST_ACTION'		=> $this->u_action, -			'RANK_TITLE'		=> $rank_title, +			'RANK_TITLE'		=> $user_rank_data['title'],  			'JOINED'			=> $user->format_date($user_row['user_regdate']),  			'POSTS'				=> ($user_row['user_posts']) ? $user_row['user_posts'] : 0,  			'WARNINGS'			=> ($user_row['user_warnings']) ? $user_row['user_warnings'] : 0, @@ -508,7 +508,7 @@ class mcp_warn  			'U_PROFILE'			=> get_username_string('profile', $user_row['user_id'], $user_row['username'], $user_row['user_colour']),  			'AVATAR_IMG'		=> $avatar_img, -			'RANK_IMG'			=> $rank_img, +			'RANK_IMG'			=> $user_rank_data['img'],  			'S_CAN_NOTIFY'		=> $s_can_notify,  		)); diff --git a/phpBB/includes/ucp/ucp_pm_viewmessage.php b/phpBB/includes/ucp/ucp_pm_viewmessage.php index d5a1dbae87..2f34fd64a5 100644 --- a/phpBB/includes/ucp/ucp_pm_viewmessage.php +++ b/phpBB/includes/ucp/ucp_pm_viewmessage.php @@ -403,12 +403,15 @@ function get_user_information($user_id, $user_row)  	$user_row['avatar'] = ($user->optionget('viewavatars')) ? phpbb_get_user_avatar($user_row) : ''; -	if (!function_exists('get_user_rank')) +	if (!function_exists('phpbb_get_user_rank'))  	{  		include($phpbb_root_path . 'includes/functions_display.' . $phpEx);  	} -	get_user_rank($user_row['user_rank'], $user_row['user_posts'], $user_row['rank_title'], $user_row['rank_image'], $user_row['rank_image_src']); +	$user_rank_data = phpbb_get_user_rank($user_row, $user_row['user_posts']); +	$user_row['rank_title'] = $user_rank_data['title']; +	$user_row['rank_image'] = $user_rank_data['img']; +	$user_row['rank_image_src'] = $user_rank_data['img_src'];  	if ((!empty($user_row['user_allow_viewemail']) && $auth->acl_get('u_sendemail')) || $auth->acl_get('a_email'))  	{  | 
