diff options
Diffstat (limited to 'phpBB/includes/acp/acp_users.php')
| -rw-r--r-- | phpBB/includes/acp/acp_users.php | 121 | 
1 files changed, 75 insertions, 46 deletions
| diff --git a/phpBB/includes/acp/acp_users.php b/phpBB/includes/acp/acp_users.php index 70e08f79f2..82d8ef5cbb 100644 --- a/phpBB/includes/acp/acp_users.php +++ b/phpBB/includes/acp/acp_users.php @@ -2,9 +2,8 @@  /**  *  * @package acp -* @version $Id$  * @copyright (c) 2005 phpBB Group -* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2  *  */ @@ -33,6 +32,7 @@ class acp_users  	{  		global $config, $db, $user, $auth, $template, $cache;  		global $phpbb_root_path, $phpbb_admin_path, $phpEx, $table_prefix, $file_uploads; +		global $phpbb_dispatcher, $request;  		$user->add_lang(array('posting', 'ucp', 'acp/users'));  		$this->tpl_name = 'acp_users'; @@ -56,7 +56,7 @@ class acp_users  			$this->page_title = 'WHOIS';  			$this->tpl_name = 'simple_body'; -			$user_ip = request_var('user_ip', ''); +			$user_ip = phpbb_ip_normalise(request_var('user_ip', ''));  			$domain = gethostbyaddr($user_ip);  			$ipwhois = user_ipwhois($user_ip); @@ -120,7 +120,7 @@ class acp_users  		// Build modes dropdown list  		$sql = 'SELECT module_mode, module_auth  			FROM ' . MODULES_TABLE . " -			WHERE module_basename = 'users' +			WHERE module_basename = 'acp_users'  				AND module_enabled = 1  				AND module_class = 'acp'  			ORDER BY left_id, module_mode"; @@ -129,7 +129,7 @@ class acp_users  		$dropdown_modes = array();  		while ($row = $db->sql_fetchrow($result))  		{ -			if (!$this->p_master->module_auth($row['module_auth'])) +			if (!$this->p_master->module_auth_self($row['module_auth']))  			{  				continue;  			} @@ -750,6 +750,19 @@ class acp_users  							}  						break; + +						default: +							/** +							* Run custom quicktool code +							* +							* @event core.acp_users_overview_run_quicktool +							* @var	array	user_row	Current user data +							* @var	string	action		Quick tool that should be run +							* @since 3.1-A1 +							*/ +							$vars = array('action', 'user_row'); +							extract($phpbb_dispatcher->trigger_event('core.acp_users_overview_run_quicktool', compact($vars))); +						break;  					}  					// Handle registration info updates @@ -757,9 +770,8 @@ class acp_users  						'username'			=> utf8_normalize_nfc(request_var('user', $user_row['username'], true)),  						'user_founder'		=> request_var('user_founder', ($user_row['user_type'] == USER_FOUNDER) ? 1 : 0),  						'email'				=> strtolower(request_var('user_email', $user_row['user_email'])), -						'email_confirm'		=> strtolower(request_var('email_confirm', '')), -						'new_password'		=> request_var('new_password', '', true), -						'password_confirm'	=> request_var('password_confirm', '', true), +						'new_password'		=> $request->variable('new_password', '', true), +						'password_confirm'	=> $request->variable('password_confirm', '', true),  					);  					// Validation data - we do not check the password complexity setting here @@ -789,7 +801,6 @@ class acp_users  								array('string', false, 6, 60),  								array('email', $user_row['user_email'])  							), -							'email_confirm'		=> array('string', true, 6, 60)  						);  					} @@ -800,11 +811,6 @@ class acp_users  						$error[] = 'NEW_PASSWORD_ERROR';  					} -					if ($data['email'] != $user_row['user_email'] && $data['email_confirm'] != $data['email']) -					{ -						$error[] = 'NEW_EMAIL_ERROR'; -					} -  					if (!check_form_key($form_name))  					{  						$error[] = 'FORM_INVALID'; @@ -863,6 +869,18 @@ class acp_users  							}  						} +						/** +						* Modify user data before we update it +						* +						* @event core.acp_users_overview_modify_data +						* @var	array	user_row	Current user data +						* @var	array	data		Submitted user data +						* @var	array	sql_ary		User data we udpate +						* @since 3.1-A1 +						*/ +						$vars = array('user_row', 'data', 'sql_ary'); +						extract($phpbb_dispatcher->trigger_event('core.acp_users_overview_modify_data', compact($vars))); +  						if ($update_username !== false)  						{  							$sql_ary['username'] = $update_username; @@ -915,7 +933,7 @@ class acp_users  					}  					// Replace "error" strings with their real, localised form -					$error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error); +					$error = array_map(array($user, 'lang'), $error);  				}  				if ($user_id == $user->data['user_id']) @@ -953,12 +971,6 @@ class acp_users  					}  				} -				$s_action_options = '<option class="sep" value="">' . $user->lang['SELECT_OPTION'] . '</option>'; -				foreach ($quick_tool_ary as $value => $lang) -				{ -					$s_action_options .= '<option value="' . $value . '">' . $user->lang['USER_ADMIN_' . $lang] . '</option>'; -				} -  				if ($config['load_onlinetrack'])  				{  					$sql = 'SELECT MAX(session_time) AS session_time, MIN(session_viewonline) AS session_viewonline @@ -973,6 +985,23 @@ class acp_users  					unset($row);  				} +				/** +				* Add additional quick tool options and overwrite user data +				* +				* @event core.acp_users_display_overview +				* @var	array	user_row			Array with user data +				* @var	array	quick_tool_ary		Ouick tool options +				* @since 3.1-A1 +				*/ +				$vars = array('user_row', 'quick_tool_ary'); +				extract($phpbb_dispatcher->trigger_event('core.acp_users_display_overview', compact($vars))); + +				$s_action_options = '<option class="sep" value="">' . $user->lang['SELECT_OPTION'] . '</option>'; +				foreach ($quick_tool_ary as $value => $lang) +				{ +					$s_action_options .= '<option value="' . $value . '">' . $user->lang['USER_ADMIN_' . $lang] . '</option>'; +				} +  				$last_visit = (!empty($user_row['session_time'])) ? $user_row['session_time'] : $user_row['user_lastvisit'];  				$inactive_reason = ''; @@ -1017,8 +1046,8 @@ class acp_users  				$db->sql_freeresult($result);  				$template->assign_vars(array( -					'L_NAME_CHARS_EXPLAIN'		=> sprintf($user->lang[$config['allow_name_chars'] . '_EXPLAIN'], $config['min_name_chars'], $config['max_name_chars']), -					'L_CHANGE_PASSWORD_EXPLAIN'	=> sprintf($user->lang[$config['pass_complex'] . '_EXPLAIN'], $config['min_pass_chars'], $config['max_pass_chars']), +					'L_NAME_CHARS_EXPLAIN'		=> $user->lang($config['allow_name_chars'] . '_EXPLAIN', $user->lang('CHARACTERS', (int) $config['min_name_chars']), $user->lang('CHARACTERS', (int) $config['max_name_chars'])), +					'L_CHANGE_PASSWORD_EXPLAIN'	=> $user->lang($config['pass_complex'] . '_EXPLAIN', $user->lang('CHARACTERS', (int) $config['min_pass_chars']), $user->lang('CHARACTERS', (int) $config['max_pass_chars'])),  					'L_POSTS_IN_QUEUE'			=> $user->lang('NUM_POSTS_IN_QUEUE', $user_row['posts_in_queue']),  					'S_FOUNDER'					=> ($user->data['user_type'] == USER_FOUNDER) ? true : false, @@ -1128,10 +1157,12 @@ class acp_users  				$log_count = 0;  				$start = view_log('user', $log_data, $log_count, $config['topics_per_page'], $start, 0, 0, $user_id, $sql_where, $sql_sort); +				$base_url = $this->u_action . "&u=$user_id&$u_sort_param"; +				phpbb_generate_template_pagination($template, $base_url, 'pagination', 'start', $log_count, $config['topics_per_page'], $start); +  				$template->assign_vars(array(  					'S_FEEDBACK'	=> true, -					'S_ON_PAGE'		=> on_page($log_count, $config['topics_per_page'], $start), -					'PAGINATION'	=> generate_pagination($this->u_action . "&u=$user_id&$u_sort_param", $log_count, $config['topics_per_page'], $start, true), +					'S_ON_PAGE'		=> phpbb_on_page($template, $user, $base_url, $log_count, $config['topics_per_page'], $start),  					'S_LIMIT_DAYS'	=> $s_limit_days,  					'S_SORT_KEY'	=> $s_sort_key, @@ -1407,7 +1438,7 @@ class acp_users  					}  					// Replace "error" strings with their real, localised form -					$error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error); +					$error = array_map(array($user, 'lang'), $error);  				}  				$s_birthday_day_options = '<option value="0"' . ((!$data['bday_day']) ? ' selected="selected"' : '') . '>--</option>'; @@ -1466,9 +1497,8 @@ class acp_users  				$data = array(  					'dateformat'		=> utf8_normalize_nfc(request_var('dateformat', $user_row['user_dateformat'], true)),  					'lang'				=> basename(request_var('lang', $user_row['user_lang'])), -					'tz'				=> request_var('tz', (float) $user_row['user_timezone']), +					'tz'				=> request_var('tz', $user_row['user_timezone']),  					'style'				=> request_var('style', $user_row['user_style']), -					'dst'				=> request_var('dst', $user_row['user_dst']),  					'viewemail'			=> request_var('viewemail', $user_row['user_allow_viewemail']),  					'massemail'			=> request_var('massemail', $user_row['user_allow_massemail']),  					'hideonline'		=> request_var('hideonline', !$user_row['user_allow_viewonline']), @@ -1503,7 +1533,7 @@ class acp_users  					$error = validate_data($data, array(  						'dateformat'	=> array('string', false, 1, 30),  						'lang'			=> array('match', false, '#^[a-z_\-]{2,}$#i'), -						'tz'			=> array('num', false, -14, 14), +						'tz'			=> array('timezone'),  						'topic_sk'		=> array('string', false, 1, 1),  						'topic_sd'		=> array('string', false, 1, 1), @@ -1539,7 +1569,6 @@ class acp_users  							'user_notify_type'		=> $data['notifymethod'],  							'user_notify_pm'		=> $data['notifypm'], -							'user_dst'				=> $data['dst'],  							'user_dateformat'		=> $data['dateformat'],  							'user_lang'				=> $data['lang'],  							'user_timezone'			=> $data['tz'], @@ -1570,7 +1599,7 @@ class acp_users  								|| $user_row['user_allow_viewonline'] && !$sql_ary['user_allow_viewonline'])  							{  								// We also need to check if the user has the permission to cloak. -								$user_auth = new auth(); +								$user_auth = new phpbb_auth();  								$user_auth->acl($user_row);  								$session_sql_ary = array( @@ -1590,7 +1619,7 @@ class acp_users  					}  					// Replace "error" strings with their real, localised form -					$error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error); +					$error = array_map(array($user, 'lang'), $error);  				}  				$dateformat_options = ''; @@ -1649,6 +1678,7 @@ class acp_users  					${'s_sort_' . $sort_option . '_dir'} .= '</select>';  				} +				$timezone_selects = phpbb_timezone_select($user, $data['tz'], true);  				$template->assign_vars(array(  					'S_PREFS'			=> true,  					'S_JABBER_DISABLED'	=> ($config['jab_enable'] && $user_row['user_jabber'] && @extension_loaded('xml')) ? false : true, @@ -1662,7 +1692,6 @@ class acp_users  					'NOTIFY_BOTH'		=> ($data['notifymethod'] == NOTIFY_BOTH) ? true : false,  					'NOTIFY_PM'			=> $data['notifypm'],  					'POPUP_PM'			=> $data['popuppm'], -					'DST'				=> $data['dst'],  					'BBCODE'			=> $data['bbcode'],  					'SMILIES'			=> $data['smilies'],  					'ATTACH_SIG'		=> $data['sig'], @@ -1689,7 +1718,8 @@ class acp_users  					'S_LANG_OPTIONS'	=> language_select($data['lang']),  					'S_STYLE_OPTIONS'	=> style_select($data['style']), -					'S_TZ_OPTIONS'		=> tz_select($data['tz'], true), +					'S_TZ_OPTIONS'			=> $timezone_selects['tz_select'], +					'S_TZ_DATE_OPTIONS'		=> $timezone_selects['tz_dates'],  					)  				); @@ -1716,7 +1746,7 @@ class acp_users  					}  					// Replace "error" strings with their real, localised form -					$error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error); +					$error = array_map(array($user, 'lang'), $error);  				}  				if (!$config['allow_avatar'] && $user_row['user_avatar_type']) @@ -1756,8 +1786,8 @@ class acp_users  					'USER_AVATAR_WIDTH'		=> $user_row['user_avatar_width'],  					'USER_AVATAR_HEIGHT'	=> $user_row['user_avatar_height'], -					'L_AVATAR_EXPLAIN'	=> sprintf($user->lang['AVATAR_EXPLAIN'], $config['avatar_max_width'], $config['avatar_max_height'], round($config['avatar_filesize'] / 1024))) -				); +					'L_AVATAR_EXPLAIN'	=> phpbb_avatar_explanation_string(), +				));  			break; @@ -1859,7 +1889,7 @@ class acp_users  					}  					// Replace "error" strings with their real, localised form -					$error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error); +					$error = array_map(array($user, 'lang'), $error);  				}  				$signature_preview = ''; @@ -1889,7 +1919,7 @@ class acp_users  					'FLASH_STATUS'			=> ($config['allow_sig_flash']) ? $user->lang['FLASH_IS_ON'] : $user->lang['FLASH_IS_OFF'],  					'URL_STATUS'			=> ($config['allow_sig_links']) ? $user->lang['URL_IS_ON'] : $user->lang['URL_IS_OFF'], -					'L_SIGNATURE_EXPLAIN'	=> sprintf($user->lang['SIGNATURE_EXPLAIN'], $config['max_sig_chars']), +					'L_SIGNATURE_EXPLAIN'	=> $user->lang('SIGNATURE_EXPLAIN', (int) $config['max_sig_chars']),  					'S_BBCODE_ALLOWED'		=> $config['allow_sig_bbcode'],  					'S_SMILIES_ALLOWED'		=> $config['allow_sig_smilies'], @@ -1950,7 +1980,7 @@ class acp_users  						$message = (sizeof($log_attachments) == 1) ? $user->lang['ATTACHMENT_DELETED'] : $user->lang['ATTACHMENTS_DELETED']; -						add_log('admin', 'LOG_ATTACHMENTS_DELETED', implode(', ', $log_attachments)); +						add_log('admin', 'LOG_ATTACHMENTS_DELETED', implode($user->lang['COMMA_SEPARATOR'], $log_attachments));  						trigger_error($message . adm_back_link($this->u_action . '&u=' . $user_id));  					}  					else @@ -2043,14 +2073,15 @@ class acp_users  				}  				$db->sql_freeresult($result); +				$base_url = $this->u_action . "&u=$user_id&sk=$sort_key&sd=$sort_dir"; +				phpbb_generate_template_pagination($template, $base_url, 'pagination', 'start', $num_attachments, $config['topics_per_page'], $start); +  				$template->assign_vars(array(  					'S_ATTACHMENTS'		=> true, -					'S_ON_PAGE'			=> on_page($num_attachments, $config['topics_per_page'], $start), +					'S_ON_PAGE'			=> phpbb_on_page($template, $user, $base_url, $num_attachments, $config['topics_per_page'], $start),  					'S_SORT_KEY'		=> $s_sort_key,  					'S_SORT_DIR'		=> $s_sort_dir, - -					'PAGINATION'		=> generate_pagination($this->u_action . "&u=$user_id&sk=$sort_key&sd=$sort_dir", $num_attachments, $config['topics_per_page'], $start, true)) -				); +				));  			break; @@ -2405,5 +2436,3 @@ class acp_users  		return phpbb_optionget($user->keyoptions[$key], $var);  	}  } - -?>
\ No newline at end of file | 
