Author: cfinck
Date: Sun Jun 15 08:42:58 2008
New Revision: 33983
URL:
http://svn.reactos.org/svn/reactos?rev=33983&view=rev
Log:
Die with an error message if a user tries to edit his account settings using the phpBB
Control Panel.
This message is only shown if the board administrator forgot to disable the "Edit
account settings" page in the phpBB Administration Control Panel (so a user usually
never sees this message).
Modified:
trunk/web/reactos.org/htdocs/forum/includes/ucp/ucp_profile.php
Modified:
trunk/web/reactos.org/htdocs/forum/includes/ucp/ucp_profile.php
URL:
http://svn.reactos.org/svn/reactos/trunk/web/reactos.org/htdocs/forum/inclu…
==============================================================================
---
trunk/web/reactos.org/htdocs/forum/includes/ucp/ucp_profile.php [iso-8859-1]
(original)
+++
trunk/web/reactos.org/htdocs/forum/includes/ucp/ucp_profile.php [iso-8859-1] Sun Jun
15 08:42:58 2008
@@ -42,226 +42,7 @@
switch ($mode)
{
case 'reg_details':
-
- $data = array(
- 'username' => utf8_normalize_nfc(request_var('username',
$user->data['username'], true)),
- 'email' => strtolower(request_var('email',
$user->data['user_email'])),
- 'email_confirm' => strtolower(request_var('email_confirm',
'')),
- 'new_password' => request_var('new_password', '',
true),
- 'cur_password' => request_var('cur_password', '',
true),
- 'password_confirm' => request_var('password_confirm', '',
true),
- );
-
- add_form_key('ucp_reg_details');
-
- if ($submit)
- {
- // Do not check cur_password, it is the old one.
- $check_ary = array(
- 'new_password' => array(
- array('string', true, $config['min_pass_chars'],
$config['max_pass_chars']),
- array('password')),
- 'password_confirm' => array('string', true,
$config['min_pass_chars'], $config['max_pass_chars']),
- 'email' => array(
- array('string', false, 6, 60),
- array('email')),
- 'email_confirm' => array('string', true, 6, 60),
- );
-
- if ($auth->acl_get('u_chgname') &&
$config['allow_namechange'])
- {
- $check_ary['username'] = array(
- array('string', false, $config['min_name_chars'],
$config['max_name_chars']),
- array('username'),
- );
- }
-
- $error = validate_data($data, $check_ary);
-
- if ($auth->acl_get('u_chgpasswd') &&
$data['new_password'] && $data['password_confirm'] !=
$data['new_password'])
- {
- $error[] = 'NEW_PASSWORD_ERROR';
- }
-
- if (($data['new_password'] || ($auth->acl_get('u_chgemail')
&& $data['email'] != $user->data['user_email']) ||
($data['username'] != $user->data['username'] &&
$auth->acl_get('u_chgname') && $config['allow_namechange']))
&& !phpbb_check_hash($data['cur_password'],
$user->data['user_password']))
- {
- $error[] = 'CUR_PASSWORD_ERROR';
- }
-
- // Only check the new password against the previous password if there have been no
errors
- if (!sizeof($error) && $auth->acl_get('u_chgpasswd') &&
$data['new_password'] && phpbb_check_hash($data['new_password'],
$user->data['user_password']))
- {
- $error[] = 'SAME_PASSWORD_ERROR';
- }
-
- if ($auth->acl_get('u_chgemail') && $data['email'] !=
$user->data['user_email'] && $data['email_confirm'] !=
$data['email'])
- {
- $error[] = 'NEW_EMAIL_ERROR';
- }
-
- if (!check_form_key('ucp_reg_details'))
- {
- $error[] = 'FORM_INVALID';
- }
-
- if (!sizeof($error))
- {
- $sql_ary = array(
- 'username' => ($auth->acl_get('u_chgname') &&
$config['allow_namechange']) ? $data['username'] :
$user->data['username'],
- 'username_clean' => ($auth->acl_get('u_chgname') &&
$config['allow_namechange']) ? utf8_clean_string($data['username']) :
$user->data['username_clean'],
- 'user_email' => ($auth->acl_get('u_chgemail')) ?
$data['email'] : $user->data['user_email'],
- 'user_email_hash' => ($auth->acl_get('u_chgemail')) ?
crc32($data['email']) . strlen($data['email']) :
$user->data['user_email_hash'],
- 'user_password' => ($auth->acl_get('u_chgpasswd')
&& $data['new_password']) ? phpbb_hash($data['new_password']) :
$user->data['user_password'],
- 'user_passchg' => ($auth->acl_get('u_chgpasswd') &&
$data['new_password']) ? time() : 0,
- );
-
- if ($auth->acl_get('u_chgname') &&
$config['allow_namechange'] && $data['username'] !=
$user->data['username'])
- {
- add_log('user', $user->data['user_id'],
'LOG_USER_UPDATE_NAME', $user->data['username'],
$data['username']);
- }
-
- if ($auth->acl_get('u_chgpasswd') &&
$data['new_password'] && !phpbb_check_hash($data['new_password'],
$user->data['user_password']))
- {
- $user->reset_login_keys();
- add_log('user', $user->data['user_id'],
'LOG_USER_NEW_PASSWORD', $data['username']);
- }
-
- if ($auth->acl_get('u_chgemail') && $data['email'] !=
$user->data['user_email'])
- {
- add_log('user', $user->data['user_id'],
'LOG_USER_UPDATE_EMAIL', $data['username'],
$user->data['user_email'], $data['email']);
- }
-
- $message = 'PROFILE_UPDATED';
-
- if ($config['email_enable'] && $data['email'] !=
$user->data['user_email'] && $user->data['user_type'] !=
USER_FOUNDER && ($config['require_activation'] == USER_ACTIVATION_SELF ||
$config['require_activation'] == USER_ACTIVATION_ADMIN))
- {
- $message = ($config['require_activation'] == USER_ACTIVATION_SELF) ?
'ACCOUNT_EMAIL_CHANGED' : 'ACCOUNT_EMAIL_CHANGED_ADMIN';
-
- include_once($phpbb_root_path . 'includes/functions_messenger.' .
$phpEx);
-
- $server_url = generate_board_url();
-
- $user_actkey = gen_rand_string(10);
- $key_len = 54 - (strlen($server_url));
- $key_len = ($key_len > 6) ? $key_len : 6;
- $user_actkey = substr($user_actkey, 0, $key_len);
-
- $messenger = new messenger(false);
-
- $template_file = ($config['require_activation'] == USER_ACTIVATION_ADMIN)
? 'user_activate_inactive' : 'user_activate';
- $messenger->template($template_file, $user->data['user_lang']);
-
- $messenger->to($data['email'], $data['username']);
-
- $messenger->headers('X-AntiAbuse: Board servername - ' .
$config['server_name']);
- $messenger->headers('X-AntiAbuse: User_id - ' .
$user->data['user_id']);
- $messenger->headers('X-AntiAbuse: Username - ' .
$user->data['username']);
- $messenger->headers('X-AntiAbuse: User IP - ' . $user->ip);
-
- $messenger->assign_vars(array(
- 'USERNAME' => htmlspecialchars_decode($data['username']),
- 'U_ACTIVATE' =>
"$server_url/ucp.$phpEx?mode=activate&u={$user->data['user_id']}&k=$user_actkey")
- );
-
- $messenger->send(NOTIFY_EMAIL);
-
- if ($config['require_activation'] == USER_ACTIVATION_ADMIN)
- {
- // Grab an array of user_id's with a_user permissions ... these users can
activate a user
- $admin_ary = $auth->acl_get_list(false, 'a_user', false);
- $admin_ary = (!empty($admin_ary[0]['a_user'])) ?
$admin_ary[0]['a_user'] : array();
-
- // Also include founders
- $where_sql = ' WHERE user_type = ' . USER_FOUNDER;
-
- if (sizeof($admin_ary))
- {
- $where_sql .= ' OR ' . $db->sql_in_set('user_id',
$admin_ary);
- }
-
- $sql = 'SELECT user_id, username, user_email, user_lang, user_jabber,
user_notify_type
- FROM ' . USERS_TABLE . ' ' .
- $where_sql;
- $result = $db->sql_query($sql);
-
- while ($row = $db->sql_fetchrow($result))
- {
- $messenger->template('admin_activate', $row['user_lang']);
- $messenger->to($row['user_email'], $row['username']);
- $messenger->im($row['user_jabber'], $row['username']);
-
- $messenger->assign_vars(array(
- 'USERNAME' => htmlspecialchars_decode($data['username']),
- 'U_USER_DETAILS' =>
"$server_url/memberlist.$phpEx?mode=viewprofile&u={$user->data['user_id']}",
- 'U_ACTIVATE' =>
"$server_url/ucp.$phpEx?mode=activate&u={$user->data['user_id']}&k=$user_actkey")
- );
-
- $messenger->send($row['user_notify_type']);
- }
- $db->sql_freeresult($result);
- }
-
- user_active_flip('deactivate', $user->data['user_id'],
INACTIVE_PROFILE);
-
- // Because we want the profile to be reactivated we set user_newpasswd to empty
(else the reactivation will fail)
- $sql_ary['user_actkey'] = $user_actkey;
- $sql_ary['user_newpasswd'] = '';
- }
-
- if (sizeof($sql_ary))
- {
- $sql = 'UPDATE ' . USERS_TABLE . '
- SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
- WHERE user_id = ' . $user->data['user_id'];
- $db->sql_query($sql);
- }
-
- // Need to update config, forum, topic, posting, messages, etc.
- if ($data['username'] != $user->data['username'] &&
$auth->acl_get('u_chgname') && $config['allow_namechange'])
- {
- user_update_name($user->data['username'], $data['username']);
- }
-
- // Now, we can remove the user completely (kill the session) - NOT BEFORE!!!
- if (!empty($sql_ary['user_actkey']))
- {
- meta_refresh(5, append_sid($phpbb_root_path . 'index.' . $phpEx));
- $message = $user->lang[$message] . '<br /><br />' .
sprintf($user->lang['RETURN_INDEX'], '<a href="' .
append_sid($phpbb_root_path . 'index.' . $phpEx) . '">',
'</a>');
-
- // Because the user gets deactivated we log him out too, killing his session
- $user->session_kill();
- }
- else
- {
- meta_refresh(3, $this->u_action);
- $message = $user->lang[$message] . '<br /><br />' .
sprintf($user->lang['RETURN_UCP'], '<a href="' .
$this->u_action . '">', '</a>');
- }
-
- trigger_error($message);
- }
-
- // Replace "error" strings with their real, localised form
- $error = preg_replace('#^([A-Z_]+)$#e',
"(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] :
'\\1'", $error);
- }
-
- $template->assign_vars(array(
- 'ERROR' => (sizeof($error)) ? implode('<br />', $error)
: '',
-
- 'USERNAME' => $data['username'],
- 'EMAIL' => $data['email'],
- 'PASSWORD_CONFIRM' => $data['password_confirm'],
- 'NEW_PASSWORD' => $data['new_password'],
- 'CUR_PASSWORD' => '',
-
- 'L_USERNAME_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']),
-
- 'S_FORCE_PASSWORD' => ($auth->acl_get('u_chgpasswd')
&& $config['chg_passforce'] &&
$user->data['user_passchg'] < time() - ($config['chg_passforce'] *
86400)) ? true : false,
- 'S_CHANGE_USERNAME' => ($config['allow_namechange'] &&
$auth->acl_get('u_chgname')) ? true : false,
- 'S_CHANGE_EMAIL' => ($auth->acl_get('u_chgemail')) ? true :
false,
- 'S_CHANGE_PASSWORD' => ($auth->acl_get('u_chgpasswd')) ? true
: false)
- );
- break;
+ die('You can modify your account settings using the <a
href="/roscms/?page=user&sec=account&sec2=edit">myReactOS
Settings</a> page.<br /><br />Please tell an Administrator to disable
this page in the phpBB Administration Panel.');
case 'profile_info':