Note that these changes are as yet untested

git-svn-id: file:///svn/phpbb/trunk@4657 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
Paul S. Owen 2003-11-10 14:18:54 +00:00
parent 4a05ef300b
commit d5df8a33a5
3 changed files with 121 additions and 49 deletions

View file

@ -17,9 +17,9 @@ class ucp_profile extends module
{ {
global $censors, $config, $db, $user, $auth, $SID, $template, $phpbb_root_path, $phpEx; global $censors, $config, $db, $user, $auth, $SID, $template, $phpbb_root_path, $phpEx;
$preview = (!empty($_POST['preview'])) ? true : false; $preview = (!empty($_POST['preview'])) ? true : false;
$submit = (!empty($_POST['submit'])) ? true : false; $submit = (!empty($_POST['submit'])) ? true : false;
$delete = (!empty($_POST['delete'])) ? true : false; $delete = (!empty($_POST['delete'])) ? true : false;
$error = $data = array(); $error = $data = array();
switch ($mode) switch ($mode)
@ -80,6 +80,79 @@ class ucp_profile extends module
'user_password' => ($auth->acl_get('u_chgpasswd') && $new_password) ? md5($new_password) : $user->data['user_password'] 'user_password' => ($auth->acl_get('u_chgpasswd') && $new_password) ? md5($new_password) : $user->data['user_password']
); );
if ($config['email_enable'] && $email != $user->data['user_email'] && ($config['require_activation'] == USER_ACTIVATION_SELF || $config['require_activation'] == USER_ACTIVATION_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();
$messenger->template($email_template, $lang);
$messenger->subject($subject);
$messenger->replyto($user->data['board_contact']);
$messenger->to($email, $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(
'SITENAME' => $config['sitename'],
'WELCOME_MSG' => sprintf($user->lang['WELCOME_SUBJECT'], $config['sitename']),
'USERNAME' => $username,
'PASSWORD' => $password_confirm,
'EMAIL_SIG' => str_replace('<br />', "\n", "-- \n" . $config['board_email_sig']),
'U_ACTIVATE' => "$server_url/ucp.$phpEx?mode=activate&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
$admin_ary = discover_auth(false, 'a_user', false);
$sql = 'SELECT user_id, username, user_email, user_jabber, user_notify_type
FROM ' . USERS_TABLE . '
WHERE user_id IN (' . implode(', ', $admin_ary[0]['a_user']) .')';
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
$messenger->use_template('admin_activate', $row['user_lang']);
$messenger->replyto($config['board_contact']);
$messenger->to($row['user_email'], $row['username']);
$messenger->im($row['user_jabber'], $row['username']);
$messenger->assign_vars(array(
'USERNAME' => $row['username'],
'EMAIL_SIG' => str_replace('<br />', "\n", "-- \n" . $config['board_email_sig']),
'U_ACTIVATE' => "$server_url/ucp.$phpEx?mode=activate&k=$user_actkey")
);
$messenger->send($row['user_notify_type']);
}
$db->sql_freeresult($result);
}
$messenger->queue->save();
$sql_ary += array(
'user_type' => USER_INACTIVE,
'user_actkey' => $user_actkey
);
}
$sql = 'UPDATE ' . USERS_TABLE . ' $sql = 'UPDATE ' . USERS_TABLE . '
SET ' . $db->sql_build_array('UPDATE', $sql_ary) . ' SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
WHERE user_id = ' . $user->data['user_id']; WHERE user_id = ' . $user->data['user_id'];
@ -91,9 +164,6 @@ class ucp_profile extends module
update_username($user->data['username'], $username); update_username($user->data['username'], $username);
} }
// TODO
// If email changed and email activation enabled, deactivate and notify
meta_refresh(3, "ucp.$phpEx$SID&amp;i=$id&amp;mode=$mode"); meta_refresh(3, "ucp.$phpEx$SID&amp;i=$id&amp;mode=$mode");
$message = $user->lang['PROFILE_UPDATED'] . '<br /><br />' . sprintf($user->lang['RETURN_UCP'], "<a href=\"ucp.$phpEx$SID&amp;i=$id&amp;mode=$mode\">", '</a>'); $message = $user->lang['PROFILE_UPDATED'] . '<br /><br />' . sprintf($user->lang['RETURN_UCP'], "<a href=\"ucp.$phpEx$SID&amp;i=$id&amp;mode=$mode\">", '</a>');
trigger_error($message); trigger_error($message);
@ -432,7 +502,7 @@ class ucp_profile extends module
// Delete old avatar if present // Delete old avatar if present
if ($user->data['user_avatar'] != '' && $data['filename'] != $user->data['user_avatar']) if ($user->data['user_avatar'] != '' && $data['filename'] != $user->data['user_avatar'])
{ {
avatar_delete(); avatar_delete($user->data['user_avatar']);
} }
} }

View file

@ -23,11 +23,11 @@ class ucp_register extends module
trigger_error($user->lang['UCP_REGISTER_DISABLE']); trigger_error($user->lang['UCP_REGISTER_DISABLE']);
} }
// Do not alter this first one to use request_var!
$coppa = (isset($_REQUEST['coppa'])) ? ((!empty($_REQUEST['coppa'])) ? 1 : 0) : false; $coppa = (isset($_REQUEST['coppa'])) ? ((!empty($_REQUEST['coppa'])) ? 1 : 0) : false;
$confirm_id = request_var('confirm_id', 0);
$agreed = (!empty($_POST['agreed'])) ? 1 : 0; $agreed = (!empty($_POST['agreed'])) ? 1 : 0;
$submit = (isset($_POST['submit'])) ? true : false; $submit = (isset($_POST['submit'])) ? true : false;
$confirm_id = (!empty($_POST['confirm_id'])) ? $_POST['confirm_id'] : 0;
$error = $data = array(); $error = $data = array();
@ -254,22 +254,34 @@ class ucp_register extends module
$messenger->send(NOTIFY_EMAIL); $messenger->send(NOTIFY_EMAIL);
// TODO
// Email admins with user management permissions
if ($config['require_activation'] == USER_ACTIVATION_ADMIN) if ($config['require_activation'] == USER_ACTIVATION_ADMIN)
{ {
$messenger->use_template('admin_activate', $config['default_lang']); // Grab an array of user_id's with a_user permissions ... these users
$messenger->replyto($config['board_contact']); // can activate a user
$messenger->to($config['board_contact']); $admin_ary = discover_auth(false, 'a_user', false);
$messenger->assign_vars(array( $sql = 'SELECT user_id, username, user_email, user_jabber, user_notify_type
'USERNAME' => $username, FROM ' . USERS_TABLE . '
'EMAIL_SIG' => str_replace('<br />', "\n", "-- \n" . $config['board_email_sig']), WHERE user_id IN (' . implode(', ', $admin_ary[0]['a_user']) .')';
$result = $db->sql_query($sql);
'U_ACTIVATE' => generate_board_url() . "/ucp.$phpEx?mode=activate&k=$user_actkey") while ($row = $db->sql_fetchrow($result))
); {
$messenger->use_template('admin_activate', $row['user_lang']);
$messenger->replyto($config['board_contact']);
$messenger->to($row['user_email'], $row['username']);
$messenger->im($row['user_jabber'], $row['username']);
$messenger->send(NOTIFY_EMAIL); $messenger->assign_vars(array(
'USERNAME' => $row['username'],
'EMAIL_SIG' => str_replace('<br />', "\n", "-- \n" . $config['board_email_sig']),
'U_ACTIVATE' => "$server_url/ucp.$phpEx?mode=activate&k=$user_actkey")
);
$messenger->send($row['user_notify_type']);
}
$db->sql_freeresult($result);
} }
$messenger->queue->save(); $messenger->queue->save();
@ -288,15 +300,6 @@ class ucp_register extends module
} }
} }
// If an error occured we need to stripslashes on returned data
$username = (isset($_POST['username'])) ? stripslashes(htmlspecialchars($_POST['username'])) : '';
$password = (isset($_POST['new_password'])) ? stripslashes(htmlspecialchars($_POST['new_password'])) : '';
$password_confirm = (isset($_POST['password_confirm'])) ? stripslashes(htmlspecialchars($_POST['password_confirm'])) : '';
$email = (isset($_POST['email'])) ? stripslashes(htmlspecialchars($_POST['email'])) : '';
$email_confirm = (isset($_POST['email_confirm'])) ? stripslashes(htmlspecialchars($_POST['email_confirm'])) : '';
$lang = (isset($_POST['lang'])) ? htmlspecialchars($_POST['lang']) : '';
$tz = (isset($_POST['tz'])) ? intval($_POST['tz']) : $config['board_timezone'];
$s_hidden_fields = '<input type="hidden" name="agreed" value="true" /><input type="hidden" name="coppa" value="' . $coppa . '" />'; $s_hidden_fields = '<input type="hidden" name="agreed" value="true" /><input type="hidden" name="coppa" value="' . $coppa . '" />';
$confirm_image = ''; $confirm_image = '';
@ -309,15 +312,15 @@ class ucp_register extends module
if ($row = $db->sql_fetchrow($result)) if ($row = $db->sql_fetchrow($result))
{ {
$confirm_sql = ''; $sql_in = array();
do do
{ {
$confirm_sql .= (($confirm_sql != '') ? ', ' : '') . "'" . $row['session_id'] . "'"; $sql_in[] = "'" . $db->sql_escape($row['session_id']) . "'";
} }
while ($row = $db->sql_fetchrow($result)); while ($row = $db->sql_fetchrow($result));
$sql = 'DELETE FROM ' . CONFIRM_TABLE . " $sql = 'DELETE FROM ' . CONFIRM_TABLE . '
WHERE session_id NOT IN ($confirm_sql)"; WHERE session_id NOT IN (' . implode(', ', $sql_in) . ')';
$db->sql_query($sql); $db->sql_query($sql);
} }
$db->sql_freeresult($result); $db->sql_freeresult($result);
@ -329,7 +332,7 @@ class ucp_register extends module
if ($row = $db->sql_fetchrow($result)) if ($row = $db->sql_fetchrow($result))
{ {
if ($row['attempts'] > 3) if ($row['attempts'] >= 3)
{ {
trigger_error($user->lang['TOO_MANY_REGISTERS']); trigger_error($user->lang['TOO_MANY_REGISTERS']);
} }
@ -362,15 +365,18 @@ class ucp_register extends module
$user_char_ary = array('.*' => 'USERNAME_CHARS_ANY', '[\w]+' => 'USERNAME_ALPHA_ONLY', '[\w_\+\. \-\[\]]+' => 'USERNAME_ALPHA_SPACERS'); $user_char_ary = array('.*' => 'USERNAME_CHARS_ANY', '[\w]+' => 'USERNAME_ALPHA_ONLY', '[\w_\+\. \-\[\]]+' => 'USERNAME_ALPHA_SPACERS');
$lang = (isset($lang)) ? $lang : $config['default_lang'];
$tz = (isset($tz)) ? $tz : $config['board_timezone'];
// //
$template->assign_vars(array( $template->assign_vars(array(
'USERNAME' => $username,
'PASSWORD' => $password,
'PASSWORD_CONFIRM' => $password_confirm,
'EMAIL' => $email,
'EMAIL_CONFIRM' => $email_confirm,
'CONFIRM_IMG' => $confirm_image,
'ERROR' => (sizeof($error)) ? implode('<br />', $error) : '', 'ERROR' => (sizeof($error)) ? implode('<br />', $error) : '',
'USERNAME' => (isset($username)) ? $username : '',
'PASSWORD' => (isset($password)) ? $password : '',
'PASSWORD_CONFIRM' => (isset($password_confirm)) ? $password_confirm : '',
'EMAIL' => (isset($email)) ? $email : '',
'EMAIL_CONFIRM' => (isset($email_confirm)) ? $email_confirm : '',
'CONFIRM_IMG' => $confirm_image,
'L_CONFIRM_EXPLAIN' => sprintf($user->lang['CONFIRM_EXPLAIN'], '<a href="mailto:' . htmlentities($config['board_contact']) . '">', '</a>'), 'L_CONFIRM_EXPLAIN' => sprintf($user->lang['CONFIRM_EXPLAIN'], '<a href="mailto:' . htmlentities($config['board_contact']) . '">', '</a>'),
'L_ITEMS_REQUIRED' => $l_reg_cond, 'L_ITEMS_REQUIRED' => $l_reg_cond,

View file

@ -93,15 +93,11 @@ class ucp_zebra extends module
if ($mode == 'foes') if ($mode == 'foes')
{ {
$perms = array(); $perms = array();
foreach (discover_auth($user_id_ary, array('a_', 'm_')) as $user_id => $forum_ary) foreach (discover_auth($user_id_ary, array('a_', 'm_') as $forum_id => $forum_ary)
{ {
foreach ($forum_ary as $forum_id => $option_ary) foreach ($forum_ary as $auth_option => $user_ary)
{ {
if (array_sum(array_values($option_ary))) $perms += $user_ary;
{
$perms[] = $user_id;
break;
}
} }
} }