mirror of
https://github.com/phpbb/phpbb.git
synced 2025-05-06 23:55:26 +02:00
Some re-arrangement of validation routines to improve extensibility
git-svn-id: file:///svn/phpbb/trunk@4487 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
parent
924684b000
commit
7d4b42c68e
@ -14,166 +14,123 @@
|
||||
//
|
||||
// User functions
|
||||
//
|
||||
|
||||
function normalise_data(&$data, &$normalise)
|
||||
function request_var($var_name, $default)
|
||||
{
|
||||
|
||||
$valid_data = array();
|
||||
foreach ($normalise as $var_type => $var_ary)
|
||||
if (!isset($_REQUEST[$var_name]))
|
||||
{
|
||||
foreach ($var_ary as $var_name => $var_limits)
|
||||
return $default;
|
||||
}
|
||||
else
|
||||
{
|
||||
$var = $_REQUEST[$var_name];
|
||||
$type = gettype($default);
|
||||
settype($var, $type);
|
||||
|
||||
// Prevent use of , excess spaces or other html entity forms in profile strings,
|
||||
// not generally applicable elsewhere
|
||||
if ($type == 'string')
|
||||
{
|
||||
$var_name = (is_string($var_name)) ? $var_name : $var_limits;
|
||||
$l_prefix = strtoupper($var_name);
|
||||
$var = trim(preg_replace("#\s{2,}#s", ' ', strtr($var, array_flip(get_html_translation_table(HTML_ENTITIES)))));
|
||||
}
|
||||
|
||||
if (isset($data[$var_name]))
|
||||
return $var;
|
||||
}
|
||||
}
|
||||
|
||||
function validate_data($data, $val_ary)
|
||||
{
|
||||
$error = array();
|
||||
|
||||
foreach ($val_ary as $var => $val_seq)
|
||||
{
|
||||
if (!is_array($val_seq[0]))
|
||||
{
|
||||
$val_seq = array($val_seq);
|
||||
}
|
||||
|
||||
foreach ($val_seq as $validate)
|
||||
{
|
||||
$function = array_shift($validate);
|
||||
array_unshift($validate, $data[$var]);
|
||||
|
||||
if ($result = call_user_func_array('validate_' . $function, $validate))
|
||||
{
|
||||
switch ($var_type)
|
||||
{
|
||||
case 'i':
|
||||
$valid_data[$var_name] = (int) $data[$var_name];
|
||||
break;
|
||||
|
||||
case 'f':
|
||||
$valid_data[$var_name] = (double) $data[$var_name];
|
||||
break;
|
||||
|
||||
case 'b':
|
||||
$valid_data[$var_name] = ($data[$var_name] <= 0) ? 0 : 1;
|
||||
break;
|
||||
|
||||
case 's':
|
||||
// Cleanup data, remove excess spaces, convert entity forms
|
||||
$valid_data[$var_name] = trim(preg_replace('#\s{2,}#s', ' ', strtr((string) $data[$var_name], array_flip(get_html_translation_table(HTML_ENTITIES)))));
|
||||
|
||||
// How should we check this data?
|
||||
if (!is_array($var_limits))
|
||||
{
|
||||
// Is the match a string? If it is, process it further, else we'll
|
||||
// assume it's a maximum length
|
||||
if (is_string($var_limits))
|
||||
{
|
||||
if (strstr($var_limits, ','))
|
||||
{
|
||||
list($min_value, $max_value) = explode(',', $var_limits);
|
||||
if (!empty($valid_data[$var_name]) && strlen($valid_data[$var_name]) < $min_value)
|
||||
{
|
||||
$this->error[] = $l_prefix . '_TOO_SHORT';
|
||||
}
|
||||
|
||||
if (strlen($valid_data[$var_name]) > $max_value)
|
||||
{
|
||||
$this->error[] = $l_prefix . '_TOO_LONG';
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (strlen($valid_data[$var_name]) > $var_limits)
|
||||
{
|
||||
$this->error[] = $l_prefix . '_TOO_LONG';
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
$error[] = $result . '_' . strtoupper($var);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $valid_data;
|
||||
return $error;
|
||||
}
|
||||
|
||||
// Validates data subject to supplied requirements, errors appropriately
|
||||
function validate_data(&$data, &$validate)
|
||||
function validate_string($string, $optional = false, $min = 0, $max = 0)
|
||||
{
|
||||
global $db, $user, $config;
|
||||
|
||||
foreach ($validate as $operation => $var_ary)
|
||||
if (empty($string) && $optional)
|
||||
{
|
||||
foreach ($var_ary as $var_name => $compare)
|
||||
{
|
||||
$l_prefix = strtoupper($var_name);
|
||||
|
||||
if (!empty($compare))
|
||||
{
|
||||
switch ($operation)
|
||||
{
|
||||
case 'm':
|
||||
if (is_array($compare))
|
||||
{
|
||||
foreach ($compare as $match)
|
||||
{
|
||||
if (!preg_match($match, $data[$var_name]))
|
||||
{
|
||||
$this->error[] = $l_prefix . '_WRONG_DATA';
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (!preg_match($compare, $data[$var_name]))
|
||||
{
|
||||
$this->error[] = $l_prefix . '_WRONG_DATA';
|
||||
}
|
||||
break;
|
||||
|
||||
case 'c':
|
||||
if (is_array($compare))
|
||||
{
|
||||
if (!in_array($data[$var_name], $compare))
|
||||
{
|
||||
$this->error[] = $l_prefix . '_MISMATCH';
|
||||
}
|
||||
}
|
||||
else if ($data[$var_name] != $compare)
|
||||
{
|
||||
$this->error[] = $l_prefix . '_MISMATCH';
|
||||
}
|
||||
break;
|
||||
|
||||
case 'f':
|
||||
if ($result = $compare($data[$var_name]))
|
||||
{
|
||||
$this->error[] = $result;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 'r':
|
||||
if (!isset($data[$compare]) || (is_string($data[$compare]) && $data[$compare] === ''))
|
||||
{
|
||||
$this->error[] = strtoupper($compare) . '_MISSING_DATA';
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($min && strlen($string) < $min)
|
||||
{
|
||||
return 'TOO_SHORT';
|
||||
}
|
||||
else if ($max && strlen($string) > $max)
|
||||
{
|
||||
return 'TOO_LONG';
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// Generates an alphanumeric random string of given length
|
||||
function gen_rand_string($num_chars)
|
||||
function validate_num($num, $optional = false, $min = 0, $max = 1E99)
|
||||
{
|
||||
$chars = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '1', '2', '3', '4', '5', '6', '7', '8', '9');
|
||||
|
||||
list($usec, $sec) = explode(' ', microtime());
|
||||
mt_srand($sec * $usec);
|
||||
|
||||
$max_chars = count($chars) - 1;
|
||||
$rand_str = '';
|
||||
for ($i = 0; $i < $num_chars; $i++)
|
||||
if (empty($num) && $optional)
|
||||
{
|
||||
$rand_str .= $chars[mt_rand(0, $max_chars)];
|
||||
return false;
|
||||
}
|
||||
|
||||
return $rand_str;
|
||||
}
|
||||
if ($num < $min)
|
||||
{
|
||||
return 'TOO_SMALL';
|
||||
}
|
||||
else if ($num > $max)
|
||||
{
|
||||
return 'TOO_LARGE';
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function validate_match($string, $optional = false, $match)
|
||||
{
|
||||
if (empty($string) && $optional)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!preg_match($match, $string))
|
||||
{
|
||||
return 'WRONG_DATA';
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check to see if the username has been taken, or if it is disallowed.
|
||||
// Also checks if it includes the " character, which we don't allow in usernames.
|
||||
// Used for registering, changing names, and posting anonymously with a username
|
||||
function validate_username($username)
|
||||
{
|
||||
global $db, $user;
|
||||
global $config, $db, $user;
|
||||
|
||||
if (strtolower($user->data['username']) == strtolower($username))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!preg_match('#^' . $config['allow_name_chars'] . '$#i', $username))
|
||||
{
|
||||
return 'INVALID_CHARS';
|
||||
}
|
||||
|
||||
$sql = 'SELECT username
|
||||
FROM ' . USERS_TABLE . "
|
||||
@ -231,39 +188,44 @@ function validate_email($email)
|
||||
{
|
||||
global $config, $db, $user;
|
||||
|
||||
if (preg_match('#^[a-z0-9\.\-_\+]+?@(.*?\.)*?[a-z0-9\-_]+?\.[a-z]{2,4}$#i', $email))
|
||||
if (strtolower($user->data['user_email']) == strtolower($email))
|
||||
{
|
||||
$sql = 'SELECT ban_email
|
||||
FROM ' . BANLIST_TABLE;
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
if (preg_match('#^' . str_replace('*', '.*?', $row['ban_email']) . '$#i', $email))
|
||||
{
|
||||
return 'EMAIL_BANNED';
|
||||
}
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
if (!$config['allow_emailreuse'])
|
||||
{
|
||||
$sql = 'SELECT user_email
|
||||
FROM ' . USERS_TABLE . "
|
||||
WHERE user_email = '" . $db->sql_escape($email) . "'";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
if ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
return 'EMAIL_TAKEN';
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return 'EMAIL_INVALID';
|
||||
if (!preg_match('#^[a-z0-9\.\-_\+]+?@(.*?\.)*?[a-z0-9\-_]+?\.[a-z]{2,4}$#i', $email))
|
||||
{
|
||||
return 'EMAIL_INVALID';
|
||||
}
|
||||
|
||||
$sql = 'SELECT ban_email
|
||||
FROM ' . BANLIST_TABLE;
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
if (preg_match('#^' . str_replace('*', '.*?', $row['ban_email']) . '$#i', $email))
|
||||
{
|
||||
return 'EMAIL_BANNED';
|
||||
}
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
if (!$config['allow_emailreuse'])
|
||||
{
|
||||
$sql = 'SELECT user_email
|
||||
FROM ' . USERS_TABLE . "
|
||||
WHERE user_email = '" . $db->sql_escape($email) . "'";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
if ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
return 'EMAIL_TAKEN';
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function update_username($old_name, $new_name)
|
||||
@ -464,6 +426,25 @@ function avatar_upload(&$data)
|
||||
return false;
|
||||
}
|
||||
|
||||
// Generates an alphanumeric random string of given length
|
||||
function gen_rand_string($num_chars)
|
||||
{
|
||||
$chars = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '1', '2', '3', '4', '5', '6', '7', '8', '9');
|
||||
|
||||
list($usec, $sec) = explode(' ', microtime());
|
||||
mt_srand($sec * $usec);
|
||||
|
||||
$max_chars = count($chars) - 1;
|
||||
$rand_str = '';
|
||||
for ($i = 0; $i < $num_chars; $i++)
|
||||
{
|
||||
$rand_str .= $chars[mt_rand(0, $max_chars)];
|
||||
}
|
||||
|
||||
return $rand_str;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Usergroup functions
|
||||
//
|
||||
|
@ -1,23 +1,15 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
* usercp_activate.php
|
||||
* -------------------
|
||||
* begin : Saturday, Feb 13, 2001
|
||||
* copyright : (C) 2001 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
***************************************************************************/
|
||||
// -------------------------------------------------------------
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// FILENAME : usercp_activate.php
|
||||
// STARTED : Mon May 19, 2003
|
||||
// COPYRIGHT : © 2001, 2003 phpBB Group
|
||||
// WWW : http://www.phpbb.com/
|
||||
// LICENCE : GPL vs2.0 [ see /docs/COPYING ]
|
||||
//
|
||||
// -------------------------------------------------------------
|
||||
|
||||
class ucp_activate extends ucp
|
||||
{
|
||||
@ -25,9 +17,11 @@ class ucp_activate extends ucp
|
||||
{
|
||||
global $censors, $config, $db, $user, $auth, $SID, $template, $phpbb_root_path, $phpEx;
|
||||
|
||||
$sql = "SELECT user_active, user_id, user_email, user_newpasswd, user_lang, user_actkey, username
|
||||
FROM " . USERS_TABLE . "
|
||||
WHERE user_id = " . intval($_GET['u']);
|
||||
$user_id = (isset($_REQUEST['u'])) ? intval($_REQUEST['u']) : false;
|
||||
|
||||
$sql = 'SELECT user_id, username, user_active, user_email, user_newpasswd, user_lang, user_actkey
|
||||
FROM ' . USERS_TABLE . "
|
||||
WHERE user_id = $user_id";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
if ($row = $db->sql_fetchrow($result))
|
||||
@ -40,7 +34,7 @@ class ucp_activate extends ucp
|
||||
else if ($row['user_actkey'] == $_GET['k'])
|
||||
{
|
||||
$sql_update_pass = ($row['user_newpasswd'] != '') ? ", user_password = '" . $db->sql_escape($row['user_newpasswd']) . "', user_newpasswd = ''" : '';
|
||||
z
|
||||
|
||||
$sql = "UPDATE " . USERS_TABLE . "
|
||||
SET user_active = 1, user_actkey = ''" . $sql_update_pass . "
|
||||
WHERE user_id = " . $row['user_id'];
|
||||
@ -84,7 +78,7 @@ z
|
||||
}
|
||||
else
|
||||
{
|
||||
trigger_error($user->lang['No_such_user']);
|
||||
trigger_error($user->lang['NO_USER']);
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
}
|
||||
|
@ -1,23 +1,15 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
* ucp_confirm.php
|
||||
* -------------------
|
||||
* begin : Saturday, Jan 15, 2003
|
||||
* copyright : (C) 2001 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
***************************************************************************/
|
||||
// -------------------------------------------------------------
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// FILENAME : ucp_confirm.php
|
||||
// STARTED : Mon May 19, 2003
|
||||
// COPYRIGHT : © 2003 phpBB Group
|
||||
// WWW : http://www.phpbb.com/
|
||||
// LICENCE : GPL vs2.0 [ see /docs/COPYING ]
|
||||
//
|
||||
// -------------------------------------------------------------
|
||||
|
||||
// Note to potential users of this code ...
|
||||
//
|
||||
@ -44,10 +36,10 @@ class ucp_confirm extends ucp
|
||||
$chars = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '1', '2', '3', '4', '5', '6', '7', '8', '9');
|
||||
|
||||
// Try and grab code for this id and session
|
||||
$sql = "SELECT code
|
||||
FROM " . CONFIRM_TABLE . "
|
||||
WHERE session_id = '" . $user->data['session_id'] . "'
|
||||
AND confirm_id = '$confirm_id'";
|
||||
$sql = 'SELECT code
|
||||
FROM ' . CONFIRM_TABLE . "
|
||||
WHERE session_id = '" . $db->sql_escape($user->data['session_id']) . "'
|
||||
AND confirm_id = '" . $db->sql_escape($confirm_id) . "'";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
// If we have a row then grab data else create a new id
|
||||
|
@ -1,23 +1,15 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
* ucp_prefs.php
|
||||
* -------------------
|
||||
* begin : Saturday, Feb 21, 2003
|
||||
* copyright : (C) 2001 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
***************************************************************************/
|
||||
// -------------------------------------------------------------
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// FILENAME : ucp_prefs.php
|
||||
// STARTED : Mon May 19, 2003
|
||||
// COPYRIGHT : © 2001, 2003 phpBB Group
|
||||
// WWW : http://www.phpbb.com/
|
||||
// LICENCE : GPL vs2.0 [ see /docs/COPYING ]
|
||||
//
|
||||
// -------------------------------------------------------------
|
||||
|
||||
class ucp_prefs extends ucp
|
||||
{
|
||||
@ -25,7 +17,9 @@ class ucp_prefs extends ucp
|
||||
{
|
||||
global $censors, $config, $db, $user, $auth, $SID, $template, $phpbb_root_path, $phpEx;
|
||||
|
||||
$submode = ($_REQUEST['mode']) ? htmlspecialchars($_REQUEST['mode']) : 'personal';
|
||||
$submode = (!empty($_REQUEST['mode'])) ? htmlspecialchars($_REQUEST['mode']) : 'personal';
|
||||
$submit = (isset($_POST['submit'])) ? true : false;
|
||||
$error = $data = array();
|
||||
|
||||
// Setup internal subsection display
|
||||
$submodules['PERSONAL'] = "i=$id&mode=personal";
|
||||
@ -39,41 +33,50 @@ class ucp_prefs extends ucp
|
||||
{
|
||||
case 'personal':
|
||||
|
||||
if (isset($_POST['submit']))
|
||||
if ($submit)
|
||||
{
|
||||
$data = array();
|
||||
$normalise = array(
|
||||
's' => array(
|
||||
'dateformat'=> '3,15',
|
||||
'lang' => '2,5',
|
||||
),
|
||||
'i' => array('dst', 'style'),
|
||||
'f' => array('tz'),
|
||||
'b' => array('viewemail', 'massemail', 'hideonline', 'notifypm', 'popuppm')
|
||||
$var_ary = array(
|
||||
'dateformat' => (string) $config['default_dateformat'],
|
||||
'lang' => (string) $config['default_lang'],
|
||||
'tz' => (float) $config['board_timezone'],
|
||||
'style' => (int) $config['default_style'],
|
||||
'dst' => (bool) $config['board_dst'],
|
||||
'viewemail' => false,
|
||||
'massemail' => true,
|
||||
'hideonline' => false,
|
||||
'notifypm' => true,
|
||||
'popuppm' => false,
|
||||
);
|
||||
$data = normalise_data($_POST, $normalise);
|
||||
|
||||
$validate = array(
|
||||
'r' => array('lang', 'tz', 'dateformat', 'style'),
|
||||
'm' => array(
|
||||
'lang' => ($data['lang']) ? '#^[a-z_]+$#i' : '',
|
||||
),
|
||||
foreach ($var_ary as $var => $default)
|
||||
{
|
||||
$data[$var] = request_var($var, $default);
|
||||
}
|
||||
|
||||
$var_ary = array(
|
||||
'dateformat' => array('string', false, 3, 15),
|
||||
'lang' => array('match', false, '#^[a-z_]{2,}$#i'),
|
||||
'tz' => array('num', false, -13, 13),
|
||||
);
|
||||
validate_data($data, $validate);
|
||||
|
||||
if (!sizeof($this->error))
|
||||
$error = validate_data($data, $var_ary);
|
||||
extract($data);
|
||||
unset($data);
|
||||
|
||||
if (!sizeof($error))
|
||||
{
|
||||
$sql_ary = array(
|
||||
'user_allow_viewemail' => $data['viewemail'],
|
||||
'user_allow_massemail' => $data['massemail'],
|
||||
'user_allow_viewonline' => ($auth->acl_get('u_hideonline')) ? !$data['hideonline'] : $user->data['user_allow_viewonline'],
|
||||
'user_notify_pm' => $data['notifypm'],
|
||||
'user_popup_pm' => $data['popuppm'],
|
||||
'user_dst' => $data['dst'],
|
||||
'user_dateformat' => $data['dateformat'],
|
||||
'user_lang' => $data['lang'],
|
||||
'user_timezone' => $data['tz'],
|
||||
'user_style' => $data['style'],
|
||||
'user_allow_viewemail' => $viewemail,
|
||||
'user_allow_massemail' => $massemail,
|
||||
'user_allow_viewonline' => ($auth->acl_get('u_hideonline')) ? !$hideonline : $user->data['user_allow_viewonline'],
|
||||
'user_notify_pm' => $notifypm,
|
||||
'user_popup_pm' => $popuppm,
|
||||
|
||||
'user_dst' => $dst,
|
||||
'user_dateformat' => $dateformat,
|
||||
'user_lang' => $lang,
|
||||
'user_timezone' => $tz,
|
||||
'user_style' => $style,
|
||||
);
|
||||
|
||||
$sql = 'UPDATE ' . USERS_TABLE . '
|
||||
@ -85,10 +88,6 @@ class ucp_prefs extends ucp
|
||||
$message = $user->lang['PREFERENCES_UPDATED'] . '<br /><br />' . sprintf($user->lang['RETURN_UCP'], "<a href=\"ucp.$phpEx$SID&i=$id&mode=$submode\">", '</a>');
|
||||
trigger_error($message);
|
||||
}
|
||||
|
||||
//
|
||||
extract($data);
|
||||
unset($data);
|
||||
}
|
||||
|
||||
$viewemail = (isset($viewemail)) ? $viewemail : $user->data['user_allow_viewemail'];
|
||||
@ -116,7 +115,7 @@ class ucp_prefs extends ucp
|
||||
$tz = (isset($tz)) ? $tz : $user->data['user_timezone'];
|
||||
|
||||
$template->assign_vars(array(
|
||||
'ERROR' => (sizeof($this->error)) ? implode('<br />', $this->error) : '',
|
||||
'ERROR' => (sizeof($error)) ? implode('<br />', $error) : '',
|
||||
|
||||
'VIEW_EMAIL_YES' => $view_email_yes,
|
||||
'VIEW_EMAIL_NO' => $view_email_no,
|
||||
@ -143,32 +142,48 @@ class ucp_prefs extends ucp
|
||||
|
||||
case 'view':
|
||||
|
||||
if (isset($_POST['submit']))
|
||||
if ($submit)
|
||||
{
|
||||
$data = array();
|
||||
$normalise = array(
|
||||
's' => array(
|
||||
'sk' => '1,1',
|
||||
'sd' => '1,1',
|
||||
),
|
||||
'i' => array('st', 'minkarma'),
|
||||
'b' => array('images', 'flash', 'smilies', 'sigs', 'avatars', 'wordcensor'),
|
||||
$var_ary = array(
|
||||
'sk' => (string) 't',
|
||||
'sd' => (string) 'd',
|
||||
'st' => 0,
|
||||
'minkarma' => (int) -5,
|
||||
'images' => true,
|
||||
'flash' => false,
|
||||
'smilies' => true,
|
||||
'sigs' => true,
|
||||
'avatars' => true,
|
||||
'wordcensor'=> false,
|
||||
);
|
||||
$data = normalise_data($_POST, $normalise);
|
||||
|
||||
if (!sizeof($this->error))
|
||||
foreach ($var_ary as $var => $default)
|
||||
{
|
||||
$data[$var] = request_var($var, $default);
|
||||
}
|
||||
|
||||
$var_ary = array(
|
||||
'sk' => array('string', false, 1, 1),
|
||||
'sd' => array('string', false, 1, 1),
|
||||
);
|
||||
|
||||
$error = validate_data($data, $var_ary);
|
||||
extract($data);
|
||||
unset($data);
|
||||
|
||||
if (!sizeof($error))
|
||||
{
|
||||
$sql_ary = array(
|
||||
'user_viewimg' => $data['images'],
|
||||
'user_viewflash' => $data['flash'],
|
||||
'user_viewsmilies' => $data['smilies'],
|
||||
'user_viewsigs' => $data['sigs'],
|
||||
'user_viewavatars' => $data['avatars'],
|
||||
'user_viewcensors' => ($auth->acl_get('u_chgcensors')) ? $data['wordcensor'] : $user->data['user_viewcensors'],
|
||||
'user_sortby_type' => $data['sk'],
|
||||
'user_sortby_dir' => $data['sd'],
|
||||
'user_show_days' => $data['st'],
|
||||
'user_min_karma' => $data['minkarma'],
|
||||
'user_viewimg' => $images,
|
||||
'user_viewflash' => $flash,
|
||||
'user_viewsmilies' => $smilies,
|
||||
'user_viewsigs' => $sigs,
|
||||
'user_viewavatars' => $avatars,
|
||||
'user_viewcensors' => ($auth->acl_get('u_chgcensors')) ? $wordcensor : $user->data['user_viewcensors'],
|
||||
'user_sortby_type' => $sk,
|
||||
'user_sortby_dir' => $sd,
|
||||
'user_show_days' => $st,
|
||||
'user_min_karma' => $minkarma,
|
||||
);
|
||||
|
||||
$sql = 'UPDATE ' . USERS_TABLE . '
|
||||
@ -180,10 +195,6 @@ class ucp_prefs extends ucp
|
||||
$message = $user->lang['PREFERENCES_UPDATED'] . '<br /><br />' . sprintf($user->lang['RETURN_UCP'], "<a href=\"ucp.$phpEx$SID&i=$id&mode=$submode\">", '</a>');
|
||||
trigger_error($message);
|
||||
}
|
||||
|
||||
//
|
||||
extract($data);
|
||||
unset($data);
|
||||
}
|
||||
|
||||
$sk = (isset($sk)) ? $sk : ((!empty($user->data['user_sortby_type'])) ? $user->data['user_sortby_type'] : 't');
|
||||
@ -227,7 +238,7 @@ class ucp_prefs extends ucp
|
||||
$wordcensor_no = (!$wordcensor) ? ' checked="checked"' : '';
|
||||
|
||||
$template->assign_vars(array(
|
||||
'ERROR' => (sizeof($this->error)) ? implode('<br />', $this->error) : '',
|
||||
'ERROR' => (sizeof($error)) ? implode('<br />', $error) : '',
|
||||
|
||||
'VIEW_IMAGES_YES' => $images_yes,
|
||||
'VIEW_IMAGES_NO' => $images_no,
|
||||
@ -253,22 +264,29 @@ class ucp_prefs extends ucp
|
||||
|
||||
case 'post':
|
||||
|
||||
if (isset($_POST['submit']))
|
||||
if ($submit)
|
||||
{
|
||||
$data = array();
|
||||
$normalise = array(
|
||||
'b' => array('bbcode', 'html', 'smilies', 'sig', 'notify'),
|
||||
$var_ary = array(
|
||||
'bbcode' => true,
|
||||
'html' => false,
|
||||
'smilies' => true,
|
||||
'sig' => true,
|
||||
'notify' => false,
|
||||
);
|
||||
$data = normalise_data($_POST, $normalise);
|
||||
|
||||
if (!sizeof($this->error))
|
||||
foreach ($var_ary as $var => $default)
|
||||
{
|
||||
$$var = request_var($var, $default);
|
||||
}
|
||||
|
||||
if (!sizeof($error))
|
||||
{
|
||||
$sql_ary = array(
|
||||
'user_allowbbcode' => $data['bbcode'],
|
||||
'user_allowhtml' => $data['html'],
|
||||
'user_allowsmile' => $data['smilies'],
|
||||
'user_attachsig' => $data['sig'],
|
||||
'user_notify' => $data['notify'],
|
||||
'user_allowbbcode' => $bbcode,
|
||||
'user_allowhtml' => $html,
|
||||
'user_allowsmile' => $smilies,
|
||||
'user_attachsig' => $sig,
|
||||
'user_notify' => $notify,
|
||||
);
|
||||
|
||||
$sql = 'UPDATE ' . USERS_TABLE . '
|
||||
@ -280,10 +298,6 @@ class ucp_prefs extends ucp
|
||||
$message = $user->lang['PREFERENCES_UPDATED'] . '<br /><br />' . sprintf($user->lang['RETURN_UCP'], "<a href=\"ucp.$phpEx$SID&i=$id&mode=$submode\">", '</a>');
|
||||
trigger_error($message);
|
||||
}
|
||||
|
||||
//
|
||||
extract($data);
|
||||
unset($data);
|
||||
}
|
||||
|
||||
$bbcode = (isset($bbcode)) ? $bbcode : $user->data['user_allowbbcode'];
|
||||
@ -303,7 +317,7 @@ class ucp_prefs extends ucp
|
||||
$notify_no = (!$notify) ? ' checked="checked"' : '';
|
||||
|
||||
$template->assign_vars(array(
|
||||
'ERROR' => (sizeof($this->error)) ? implode('<br />', $this->error) : '',
|
||||
'ERROR' => (sizeof($error)) ? implode('<br />', $error) : '',
|
||||
|
||||
'DEFAULT_BBCODE_YES' => $bbcode_yes,
|
||||
'DEFAULT_BBCODE_NO' => $bbcode_no,
|
||||
|
@ -23,7 +23,8 @@ class ucp_profile extends ucp
|
||||
$submode = (isset($_GET['mode'])) ? htmlspecialchars($_GET['mode']) : 'reg_details';
|
||||
$preview = (isset($_POST['preview'])) ? true : false;
|
||||
$submit = (isset($_POST['submit'])) ? true : false;
|
||||
$error = array();
|
||||
$delete = (isset($_POST['delete'])) ? true : false;
|
||||
$error = $data = array();
|
||||
|
||||
$submodules['REG_DETAILS'] = "i=$id&mode=reg_details";
|
||||
$submodules['PROFILE_INFO'] = "i=$id&mode=profile_info";
|
||||
@ -39,48 +40,56 @@ class ucp_profile extends ucp
|
||||
|
||||
if ($submit)
|
||||
{
|
||||
|
||||
|
||||
$normalise = array(
|
||||
's' => array(
|
||||
'username' => $config['min_name_chars'] . ',' . $config['max_name_chars'],
|
||||
'password_confirm' => $config['min_pass_chars'] . ',' . $config['max_pass_chars'],
|
||||
'new_password' => $config['min_pass_chars'] . ',' . $config['max_pass_chars'],
|
||||
'cur_password' => $config['min_pass_chars'] . ',' . $config['max_pass_chars'],
|
||||
'email' => '7,60',
|
||||
'email_confirm' => '7,60',
|
||||
)
|
||||
$var_ary = array(
|
||||
'username' => $user->data['username'],
|
||||
'email' => $user->data['user_email'],
|
||||
'email_confirm' => (string) '',
|
||||
'new_password' => (string) '',
|
||||
'cur_password' => (string) '',
|
||||
'password_confirm' => (string) '',
|
||||
);
|
||||
$data = normalise_data($_POST, $normalise);
|
||||
|
||||
// md5 current password for checking
|
||||
$data['cur_password'] = md5($data['cur_password']);
|
||||
foreach ($var_ary as $var => $default)
|
||||
{
|
||||
$data[$var] = request_var($var, $default);
|
||||
}
|
||||
|
||||
$validate = array(
|
||||
'r' => array('username', 'email'),
|
||||
'c' => array(
|
||||
'password_confirm' => ($data['new_password']) ? $data['new_password'] : '',
|
||||
'cur_password' => ($data['new_password'] || $data['email'] != $user->data['user_email'] || $data['username'] != $user->data['username']) ? $user->data['user_password'] : '',
|
||||
'email_confirm' => ($data['email'] != $user->data['user_email']) ? $data['email'] : '',
|
||||
),
|
||||
'm' => array(
|
||||
'username' => ($data['username'] != $user->data['username']) ? '#^' . preg_replace('#/{1}#', '\\', $config['allow_name_chars']) . '$#iu' : '',
|
||||
),
|
||||
'f' => array(
|
||||
'username' => ($data['username'] != $user->data['username']) ? 'validate_username' : '',
|
||||
'email' => ($data['email'] != $user->data['user_email']) ? 'validate_email' : '',
|
||||
),
|
||||
$var_ary = array(
|
||||
'username' => array(
|
||||
array('string', false, $config['min_name_chars'], $config['max_name_chars']),
|
||||
array('username', $username)),
|
||||
'password_confirm' => array('string', true, $config['min_pass_chars'], $config['max_pass_chars']),
|
||||
'new_password' => array('string', true, $config['min_pass_chars'], $config['max_pass_chars']),
|
||||
'cur_password' => array('string', true, $config['min_pass_chars'], $config['max_pass_chars']),
|
||||
'email' => array(
|
||||
array('string', false, 6, 60),
|
||||
array('email', $email)),
|
||||
'email_confirm' => array('string', true, 6, 60),
|
||||
);
|
||||
validate_data($data, $validate);
|
||||
|
||||
$error = validate_data($data, $var_ary);
|
||||
extract($data);
|
||||
unset($data);
|
||||
|
||||
if ($auth->acl_get('u_chgpasswd') && $new_password && md5($password_confirm) != $user->data['user_password'])
|
||||
{
|
||||
$error[] = 'NEW_PASSWORD_ERROR';
|
||||
}
|
||||
if ((($auth->acl_get('u_chgemail') && $email != $user->data['user_email']) || ($username != $user->data['username'] && $auth->acl_get('u_chgname') && $config['allow_namechange'])) && md5($cur_password) != $user->data['user_password'])
|
||||
{
|
||||
$error[] = 'CUR_PASSWORD_ERROR';
|
||||
}
|
||||
if ($auth->acl_get('u_chgemail') && $email != $user->data['user_email'] && $email_confirm != $email)
|
||||
{
|
||||
$error[] = 'NEW_EMAIL_ERROR';
|
||||
}
|
||||
|
||||
if (!sizeof($this->error))
|
||||
if (!sizeof($error))
|
||||
{
|
||||
$sql_ary = array(
|
||||
'username' => ($auth->acl_get('u_chgname') && $config['allow_namechange']) ? $data['username'] : $user->data['username'],
|
||||
'user_email' => ($auth->acl_get('u_chgemail')) ? $data['email'] : $user->data['user_email'],
|
||||
'user_password' => ($auth->acl_get('u_chgpasswd') && !empty($data['user_password'])) ? md5($data['username']) : $user->data['user_password']
|
||||
'username' => ($auth->acl_get('u_chgname') && $config['allow_namechange']) ? $username : $user->data['username'],
|
||||
'user_email' => ($auth->acl_get('u_chgemail')) ? $email : $user->data['user_email'],
|
||||
'user_password' => ($auth->acl_get('u_chgpasswd')) ? md5($user_password) : $user->data['user_password']
|
||||
);
|
||||
|
||||
$sql = 'UPDATE ' . USERS_TABLE . '
|
||||
@ -89,25 +98,21 @@ class ucp_profile extends ucp
|
||||
$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'])
|
||||
if ($username != $user->data['username'] && $auth->acl_get('u_chgname') && $config['allow_namechange'])
|
||||
{
|
||||
update_username($user->data['username'], $data['username']);
|
||||
update_username($user->data['username'], $username);
|
||||
}
|
||||
|
||||
meta_refresh(3, "ucp.$phpEx$SID&i=$id&mode=$submode");
|
||||
$message = $user->lang['PROFILE_UPDATED'] . '<br /><br />' . sprintf($user->lang['RETURN_UCP'], "<a href=\"ucp.$phpEx$SID&i=$id&mode=$submode\">", '</a>');
|
||||
trigger_error($message);
|
||||
}
|
||||
|
||||
//
|
||||
extract($data);
|
||||
unset($data);
|
||||
}
|
||||
|
||||
$user_char_ary = array('.*' => 'USERNAME_CHARS_ANY', '[\w]+' => 'USERNAME_ALPHA_ONLY', '[\w_\+\. \-\[\]]+' => 'USERNAME_ALPHA_SPACERS');
|
||||
|
||||
$template->assign_vars(array(
|
||||
'ERROR' => (sizeof($this->error)) ? implode('<br />', $this->error) : '',
|
||||
'ERROR' => (sizeof($error)) ? implode('<br />', $error) : '',
|
||||
|
||||
'USERNAME' => (isset($username)) ? stripslashes($username) : $user->data['username'],
|
||||
'EMAIL' => (isset($email)) ? stripslashes($email) : $user->data['user_email'],
|
||||
@ -122,51 +127,70 @@ class ucp_profile extends ucp
|
||||
'S_CHANGE_EMAIL' => ($auth->acl_get('u_chgemail')) ? true : false,
|
||||
'S_CHANGE_PASSWORD' => ($auth->acl_get('u_chgpasswd')) ? true : false)
|
||||
);
|
||||
|
||||
break;
|
||||
|
||||
case 'profile_info':
|
||||
|
||||
if (isset($_POST['submit']))
|
||||
if ($submit)
|
||||
{
|
||||
$data = array();
|
||||
$normalise = array(
|
||||
's' => array(
|
||||
'icq' => '3,15',
|
||||
'aim' => '5,255',
|
||||
'msn' => '5,255',
|
||||
'yim' => '5,255',
|
||||
'jabber' => '5,255',
|
||||
'website' => '12,255',
|
||||
'location' => '2,100',
|
||||
'occupation'=> '2,500',
|
||||
'interests' => '2,500',
|
||||
),
|
||||
'i' => array('bday_day', 'bday_month', 'bday_year')
|
||||
$var_ary = array(
|
||||
'icq' => (string) '',
|
||||
'aim' => (string) '',
|
||||
'msn' => (string) '',
|
||||
'yim' => (string) '',
|
||||
'jabber' => (string) '',
|
||||
'website' => (string) '',
|
||||
'location' => (string) '',
|
||||
'occupation' => (string) '',
|
||||
'interests' => (string) '',
|
||||
'bday_day' => 0,
|
||||
'bday_month' => 0,
|
||||
'bday_year' => 0,
|
||||
);
|
||||
$data = normalise_data($_POST, $normalise);
|
||||
|
||||
$validate = array(
|
||||
'm' => array(
|
||||
'icq' => ($data['icq']) ? '#^[0-9]+$#i' : '',
|
||||
'website' => ($data['website']) ? '#^http[s]?://(.*?\.)*?[a-z0-9\-]+\.[a-z]{2,4}#i' : '',
|
||||
),
|
||||
foreach ($var_ary as $var => $default)
|
||||
{
|
||||
$data[$var] = request_var($var, $default);
|
||||
}
|
||||
|
||||
$var_ary = array(
|
||||
'icq' => array(
|
||||
array('string', true, 3, 15),
|
||||
array('match', true, '#^[0-9]+$#i')),
|
||||
'aim' => array('string', true, 5, 255),
|
||||
'msn' => array('string', true, 5, 255),
|
||||
'jabber' => array(
|
||||
array('string', true, 5, 255),
|
||||
array('match', true, '#^[a-z0-9\.\-_\+]+?@(.*?\.)*?[a-z0-9\-_]+?\.[a-z]{2,4}(/.*)?$#i')),
|
||||
'yim' => array('string', true, 5, 255),
|
||||
'website' => array(
|
||||
array('string', true, 12, 255),
|
||||
array('match', true, '#^http[s]?://(.*?\.)*?[a-z0-9\-]+\.[a-z]{2,4}#i')),
|
||||
'location' => array('string', true, 2, 255),
|
||||
'occupation' => array('string', true, 2, 500),
|
||||
'interests' => array('string', true, 2, 500),
|
||||
'bday_day' => array('num', true, 1, 31),
|
||||
'bday_month' => array('num', true, 1, 12),
|
||||
'bday_year' => array('num', true, 1901, gmdate('Y', time())),
|
||||
);
|
||||
validate_data($data, $validate);
|
||||
|
||||
if (!sizeof($this->error))
|
||||
$error = validate_data($data, $var_ary);
|
||||
extract($data);
|
||||
unset($data);
|
||||
|
||||
if (!sizeof($error))
|
||||
{
|
||||
$sql_ary = array(
|
||||
'user_icq' => $data['icq'],
|
||||
'user_aim' => $data['aim'],
|
||||
'user_msnm' => $data['msn'],
|
||||
'user_yim' => $data['yim'],
|
||||
'user_jabber' => $data['jabber'],
|
||||
'user_website' => $data['website'],
|
||||
'user_from' => $data['location'],
|
||||
'user_occ' => $data['occupation'],
|
||||
'user_interests'=> $data['interests'],
|
||||
'user_birthday' => sprintf('%2d-%2d-%4d', $data['bday_day'], $data['bday_month'], $data['bday_year']),
|
||||
'user_icq' => $icq,
|
||||
'user_aim' => $aim,
|
||||
'user_msnm' => $msn,
|
||||
'user_yim' => $yim,
|
||||
'user_jabber' => $jabber,
|
||||
'user_website' => $website,
|
||||
'user_from' => $location,
|
||||
'user_occ' => $occupation,
|
||||
'user_interests'=> $interests,
|
||||
'user_birthday' => sprintf('%2d-%2d-%4d', $bday_day, $bday_month, $bday_year),
|
||||
);
|
||||
|
||||
$sql = 'UPDATE ' . USERS_TABLE . '
|
||||
@ -178,10 +202,6 @@ class ucp_profile extends ucp
|
||||
$message = $user->lang['PROFILE_UPDATED'] . '<br /><br />' . sprintf($user->lang['RETURN_UCP'], "<a href=\"ucp.$phpEx$SID&i=$id&mode=$submode\">", '</a>');
|
||||
trigger_error($message);
|
||||
}
|
||||
|
||||
//
|
||||
extract($data);
|
||||
unset($data);
|
||||
}
|
||||
|
||||
if (!isset($bday_day))
|
||||
@ -214,7 +234,7 @@ class ucp_profile extends ucp
|
||||
unset($now);
|
||||
|
||||
$template->assign_vars(array(
|
||||
'ERROR' => (sizeof($this->error)) ? implode('<br />', $this->error) : '',
|
||||
'ERROR' => (sizeof($error)) ? implode('<br />', $error) : '',
|
||||
|
||||
'ICQ' => (isset($icq)) ? $icq : $user->data['user_icq'],
|
||||
'YIM' => (isset($yim)) ? $yim : $user->data['user_yim'],
|
||||
@ -349,43 +369,50 @@ class ucp_profile extends ucp
|
||||
// Can we upload?
|
||||
$can_upload = ($config['allow_avatar_upload'] && file_exists($phpbb_root_path . $config['avatar_path']) && is_writeable($phpbb_root_path . $config['avatar_path']) && $auth->acl_get('u_chgavatar') && (@ini_get('file_uploads') || @ini_get('file_uploads') == 'On')) ? true : false;
|
||||
|
||||
if (isset($_POST['submit']))
|
||||
if ($submit)
|
||||
{
|
||||
$data = array();
|
||||
if (!empty($_FILES['uploadfile']['tmp_name']) && $can_upload)
|
||||
{
|
||||
$this->error = avatar_upload($data);
|
||||
}
|
||||
else if (!empty($_POST['uploadurl']) && $can_upload)
|
||||
{
|
||||
$normalise = array(
|
||||
's' => array(
|
||||
'uploadurl' => '1,255',
|
||||
)
|
||||
);
|
||||
$data = normalise_data($_POST, $normalise);
|
||||
$var_ary = array(
|
||||
'uploadurl' => (string) '',
|
||||
'remotelink' => (string) '',
|
||||
'width' => (string) '',
|
||||
'height' => (string) '',
|
||||
);
|
||||
|
||||
$this->error = avatar_upload($data);
|
||||
}
|
||||
else if (!empty($_POST['remotelink']) && $auth->acl_get('u_chgavatar') && $config['allow_avatar_remote'])
|
||||
foreach ($var_ary as $var => $default)
|
||||
{
|
||||
$normalise = array(
|
||||
's' => array(
|
||||
'remotelink' => '1,255',
|
||||
'width' => '1,3',
|
||||
'height' => '1,3',
|
||||
)
|
||||
);
|
||||
$data = normalise_data($_POST, $normalise);
|
||||
|
||||
$this->error = avatar_remote($data);
|
||||
}
|
||||
else if (!empty($_POST['delete']) && $auth->acl_get('u_chgavatar'))
|
||||
{
|
||||
$data['filename'] = $data['width'] = $data['height'] = '';
|
||||
$data[$var] = request_var($var, $default);
|
||||
}
|
||||
|
||||
if (!$this->error)
|
||||
$var_ary = array(
|
||||
'uploadurl' => array('string', false, 5, 255),
|
||||
'remotelink' => array('string', true, 5, 255),
|
||||
'width' => array('string', true, 1, 3),
|
||||
'height' => array('string', true, 1, 3),
|
||||
);
|
||||
|
||||
$error = validate_data($data, $var_ary);
|
||||
|
||||
if (!sizeof($error))
|
||||
{
|
||||
if (!empty($_FILES['uploadfile']['tmp_name']) && $can_upload)
|
||||
{
|
||||
$error = avatar_upload($data);
|
||||
}
|
||||
else if ($data['uploadurl'] && $can_upload)
|
||||
{
|
||||
$error = avatar_upload($uploadurl);
|
||||
}
|
||||
else if ($data['remotelink'] && $auth->acl_get('u_chgavatar') && $config['allow_avatar_remote'])
|
||||
{
|
||||
$error = avatar_remote($data);
|
||||
}
|
||||
else if ($delete && $auth->acl_get('u_chgavatar'))
|
||||
{
|
||||
$data['filename'] = $data['width'] = $data['height'] = '';
|
||||
}
|
||||
}
|
||||
|
||||
if (!sizeof($error))
|
||||
{
|
||||
// Do we actually have any data to update?
|
||||
if (sizeof($data))
|
||||
@ -414,12 +441,10 @@ class ucp_profile extends ucp
|
||||
trigger_error($message);
|
||||
}
|
||||
|
||||
//
|
||||
extract($data);
|
||||
unset($data);
|
||||
}
|
||||
|
||||
|
||||
// Generate users avatar
|
||||
$avatar_img = '';
|
||||
if ($user->data['user_avatar'])
|
||||
@ -434,13 +459,11 @@ class ucp_profile extends ucp
|
||||
break;
|
||||
}
|
||||
$avatar_img .= $user->data['user_avatar'];
|
||||
|
||||
$avatar_img = '<img src="' . $avatar_img . '" width="' . $user->data['user_avatar_width'] . '" height="' . $user->data['user_avatar_height'] . '" border="0" alt="" />';
|
||||
}
|
||||
|
||||
|
||||
$template->assign_vars(array(
|
||||
'ERROR' => ($this->error) ? $this->error : '',
|
||||
'ERROR' => ($error) ? $error : '',
|
||||
|
||||
'AVATAR' => $avatar_img,
|
||||
'AVATAR_SIZE' => $config['avatar_filesize'],
|
||||
|
@ -1,23 +1,15 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
* ucp_register.php
|
||||
* -------------------
|
||||
* begin : Saturday, Feb 13, 2001
|
||||
* copyright : (C) 2001 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
***************************************************************************/
|
||||
// -------------------------------------------------------------
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// FILENAME : ucp_register.php
|
||||
// STARTED : Mon May 19, 2003
|
||||
// COPYRIGHT : © 2003 phpBB Group
|
||||
// WWW : http://www.phpbb.com/
|
||||
// LICENCE : GPL vs2.0 [ see /docs/COPYING ]
|
||||
//
|
||||
// -------------------------------------------------------------
|
||||
|
||||
class ucp_register extends ucp
|
||||
{
|
||||
@ -33,6 +25,9 @@ class ucp_register extends ucp
|
||||
|
||||
$coppa = (isset($_REQUEST['coppa'])) ? ((!empty($_REQUEST['coppa'])) ? 1 : 0) : false;
|
||||
$agreed = (!empty($_POST['agreed'])) ? 1 : 0;
|
||||
$confirm_id = (!empty($_POST['confirm_id'])) ? $_POST['confirm_id'] : 0;
|
||||
$submit = (isset($_POST['submit'])) ? true : false;
|
||||
$error = $data = array();
|
||||
|
||||
//
|
||||
if (!$agreed)
|
||||
@ -68,77 +63,83 @@ class ucp_register extends ucp
|
||||
}
|
||||
|
||||
// Check and initialize some variables if needed
|
||||
$error = $data = array();
|
||||
if (isset($_POST['submit']))
|
||||
if ($submit)
|
||||
{
|
||||
$normalise = array(
|
||||
's' => array(
|
||||
'username' => $config['min_name_chars'] . ',' . $config['max_name_chars'],
|
||||
'password_confirm' => $config['min_pass_chars'] . ',' . $config['max_pass_chars'],
|
||||
'new_password' => $config['min_pass_chars'] . ',' . $config['max_pass_chars'],
|
||||
'lang' => '1,50',
|
||||
'confirm_code' => '6,6',
|
||||
'email' => '7,60',
|
||||
'email_confirm' => '7,60',
|
||||
),
|
||||
'f' => array('tz')
|
||||
$var_ary = array(
|
||||
'username' => (string) '',
|
||||
'password_confirm' => (string) '',
|
||||
'new_password' => (string) '',
|
||||
'cur_password' => (string) '',
|
||||
'email' => (string) '',
|
||||
'email_confirm' => (string) '',
|
||||
'confirm_code' => (string) '',
|
||||
'lang' => (string) $config['default_lang'],
|
||||
'tz' => (float) $config['board_timezone'],
|
||||
);
|
||||
$data = normalise_data($_POST, $normalise);
|
||||
|
||||
$validate = array(
|
||||
'r' => array('username', 'email', 'email_confirm', 'new_password', 'password_confirm', 'lang', 'confirm_code', 'tz'),
|
||||
'c' => array(
|
||||
'password_confirm' => $data['new_password'],
|
||||
'email_confirm' => $data['email'],
|
||||
),
|
||||
'm' => array(
|
||||
'username' => '#^' . preg_replace('#/{1}#', '\\', $config['allow_name_chars']) . '$#iu',
|
||||
),
|
||||
'f' => array(
|
||||
'username' => 'validate_username',
|
||||
'email' => 'validate_email',
|
||||
),
|
||||
foreach ($var_ary as $var => $default)
|
||||
{
|
||||
$data[$var] = request_var($var, $default);
|
||||
}
|
||||
|
||||
$var_ary = array(
|
||||
'username' => array(
|
||||
array('string', false, $config['min_name_chars'], $config['max_name_chars']),
|
||||
array('username', $username)),
|
||||
'password_confirm' => array('string', false, $config['min_pass_chars'], $config['max_pass_chars']),
|
||||
'new_password' => array('string', false, $config['min_pass_chars'], $config['max_pass_chars']),
|
||||
'email' => array(
|
||||
array('string', false, 6, 60),
|
||||
array('email', $email)),
|
||||
'email_confirm' => array('string', false, 6, 60),
|
||||
'confirm_code' => array('string', !$config['enable_confirm'], 6, 6),
|
||||
'dateformat' => array('string', false, 3, 15),
|
||||
'tz' => array('num', false, -13, 13),
|
||||
'lang' => array('match', false, '#^[a-z_]{2,}$#i'),
|
||||
);
|
||||
validate_data($data, $validate);
|
||||
|
||||
$error = validate_data($data, $var_ary);
|
||||
extract($data);
|
||||
unset($data);
|
||||
|
||||
// Visual Confirmation handling
|
||||
if ($config['enable_confirm'])
|
||||
{
|
||||
if (empty($_POST['confirm_id']))
|
||||
if (!$confirm_id)
|
||||
{
|
||||
$this->error[] = $user->lang['CONFIRM_CODE_WRONG'];
|
||||
$error[] = $user->lang['CONFIRM_CODE_WRONG'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$sql = 'SELECT code
|
||||
FROM ' . CONFIRM_TABLE . "
|
||||
WHERE confirm_id = '" . $_POST['confirm_id'] . "'
|
||||
AND session_id = '" . $user->data['session_id'] . "'";
|
||||
WHERE confirm_id = '" . $db->sql_escape($confirm_id) . "'
|
||||
AND session_id = '" . $db->sql_escape($user->data['session_id']) . "'";
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
if ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
if ($row['code'] != $data['confirm_code'])
|
||||
{
|
||||
$this->error[] = $user->lang['CONFIRM_CODE_WRONG'];
|
||||
$error[] = $user->lang['CONFIRM_CODE_WRONG'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$sql = 'DELETE FROM ' . CONFIRM_TABLE . "
|
||||
WHERE confirm_id = '" . $_POST['confirm_id'] . "'
|
||||
AND session_id = '" . $user->data['session_id'] . "'";
|
||||
WHERE confirm_id = '" . $db->sql_escape($confirm_id) . "'
|
||||
AND session_id = '" . $db->sql_escape($user->data['session_id']) . "'";
|
||||
$db->sql_query($sql);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->error[] = $user->lang['CONFIRM_CODE_WRONG'];
|
||||
$error[] = $user->lang['CONFIRM_CODE_WRONG'];
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
}
|
||||
}
|
||||
|
||||
if (!sizeof($this->error))
|
||||
if (!sizeof($error))
|
||||
{
|
||||
$server_url = generate_board_url();
|
||||
|
||||
@ -162,16 +163,16 @@ class ucp_register extends ucp
|
||||
$db->sql_transaction();
|
||||
|
||||
$sql_ary = array(
|
||||
'user_ip' => $user->ip,
|
||||
'user_regdate' => time(),
|
||||
'username' => $data['username'],
|
||||
'user_password' => md5($data['new_password']),
|
||||
'user_email' => $data['email'],
|
||||
'username' => $username,
|
||||
'user_password' => md5($new_password),
|
||||
'user_email' => $email,
|
||||
'user_timezone' => (float) $tz,
|
||||
'user_lang' => $lang,
|
||||
'user_allow_pm' => 1,
|
||||
'user_timezone' => (float) $data['tz'],
|
||||
'user_lang' => $data['lang'],
|
||||
'user_active' => $user_active,
|
||||
'user_actkey' => $user_actkey
|
||||
'user_ip' => $user->ip,
|
||||
'user_regdate' => time(),
|
||||
);
|
||||
|
||||
$sql = 'INSERT INTO ' . USERS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary);
|
||||
@ -183,7 +184,7 @@ class ucp_register extends ucp
|
||||
$group_reg = ($coppa) ? 'REGISTERED_COPPA' : 'REGISTERED';
|
||||
$group_inactive = ($coppa) ? 'INACTIVE_COPPA' : 'INACTIVE';
|
||||
$group_name = ($config['require_activation'] == USER_ACTIVATION_NONE) ? $group_reg : $group_inactive;
|
||||
$sql = "INSERT INTO " . USER_GROUP_TABLE . " (user_id, group_id, user_pending)
|
||||
$sql = 'INSERT INTO ' . USER_GROUP_TABLE . " (user_id, group_id, user_pending)
|
||||
SELECT $user_id, group_id, 0
|
||||
FROM " . GROUPS_TABLE . "
|
||||
WHERE group_name = '$group_name'
|
||||
@ -218,15 +219,15 @@ class ucp_register extends ucp
|
||||
include($phpbb_root_path . 'includes/emailer.'.$phpEx);
|
||||
$emailer = new emailer();
|
||||
|
||||
$emailer->template($email_template, $user->data['user_lang']);
|
||||
$emailer->template($email_template, $lang);
|
||||
$emailer->replyto($config['board_contact']);
|
||||
$emailer->to($data['email'], $data['username']);
|
||||
$emailer->to($email, $username);
|
||||
|
||||
$emailer->assign_vars(array(
|
||||
'SITENAME' => $config['sitename'],
|
||||
'WELCOME_MSG' => sprintf($user->lang['Welcome_subject'], $config['sitename']),
|
||||
'USERNAME' => $data['username'],
|
||||
'PASSWORD' => $data['password_confirm'],
|
||||
'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")
|
||||
@ -235,16 +236,18 @@ class ucp_register extends ucp
|
||||
if ($coppa)
|
||||
{
|
||||
$emailer->assign_vars(array(
|
||||
'FAX_INFO' => $config['coppa_fax'],
|
||||
'MAIL_INFO' => $config['coppa_mail'],
|
||||
'FAX_INFO' => $config['coppa_fax'],
|
||||
'MAIL_INFO' => $config['coppa_mail'],
|
||||
'EMAIL_ADDRESS' => $email,
|
||||
'SITENAME' => $config['sitename'])
|
||||
'SITENAME' => $config['sitename'])
|
||||
);
|
||||
}
|
||||
|
||||
$emailer->send();
|
||||
$emailer->reset();
|
||||
|
||||
// TODO
|
||||
// Email admins with user management permissions
|
||||
if ($config['require_activation'] == USER_ACTIVATION_ADMIN)
|
||||
{
|
||||
$emailer->use_template('admin_activate', $config['default_lang']);
|
||||
@ -252,10 +255,10 @@ class ucp_register extends ucp
|
||||
$emailer->to($config['board_contact']);
|
||||
|
||||
$emailer->assign_vars(array(
|
||||
'USERNAME' => $data['username'],
|
||||
'EMAIL_SIG' => str_replace('<br />', "\n", "-- \n" . $config['board_email_sig']),
|
||||
'USERNAME' => $username,
|
||||
'EMAIL_SIG' => str_replace('<br />', "\n", "-- \n" . $config['board_email_sig']),
|
||||
|
||||
'U_ACTIVATE' => generate_board_url() . "/ucp.$phpEx?mode=activate&k=$user_actkey")
|
||||
'U_ACTIVATE' => generate_board_url() . "/ucp.$phpEx?mode=activate&k=$user_actkey")
|
||||
);
|
||||
|
||||
$emailer->send();
|
||||
@ -266,7 +269,7 @@ class ucp_register extends ucp
|
||||
if ($config['require_activation'] == USER_ACTIVATION_NONE || !$config['email_enable'])
|
||||
{
|
||||
set_config('newest_user_id', $user_id);
|
||||
set_config('newest_username', $data['username']);
|
||||
set_config('newest_username', $username);
|
||||
set_config('num_users', $config['num_users'] + 1, TRUE);
|
||||
}
|
||||
unset($data);
|
||||
@ -358,7 +361,7 @@ class ucp_register extends ucp
|
||||
'EMAIL' => $email,
|
||||
'EMAIL_CONFIRM' => $email_confirm,
|
||||
'CONFIRM_IMG' => $confirm_image,
|
||||
'ERROR' => (sizeof($this->error)) ? implode('<br />', $this->error) : '',
|
||||
'ERROR' => (sizeof($error)) ? implode('<br />', $error) : '',
|
||||
|
||||
'L_CONFIRM_EXPLAIN' => sprintf($user->lang['CONFIRM_EXPLAIN'], '<a href="mailto:' . htmlentities($config['board_contact']) . '">', '</a>'),
|
||||
'L_ITEMS_REQUIRED' => $l_reg_cond,
|
||||
|
@ -1,23 +1,15 @@
|
||||
<?php
|
||||
/***************************************************************************
|
||||
* ucp_remind.php
|
||||
* -------------------
|
||||
* begin : Saturday, Feb 13, 2001
|
||||
* copyright : (C) 2001 The phpBB Group
|
||||
* email : support@phpbb.com
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
***************************************************************************/
|
||||
// -------------------------------------------------------------
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// FILENAME : ucp_remind.php
|
||||
// STARTED : Mon May 19, 2003
|
||||
// COPYRIGHT : © 2003 phpBB Group
|
||||
// WWW : http://www.phpbb.com/
|
||||
// LICENCE : GPL vs2.0 [ see /docs/COPYING ]
|
||||
//
|
||||
// -------------------------------------------------------------
|
||||
|
||||
class ucp_remind extends ucp
|
||||
{
|
||||
@ -27,11 +19,11 @@ class ucp_remind extends ucp
|
||||
|
||||
if (isset($_POST['submit']))
|
||||
{
|
||||
$username = (!empty($_POST['username'])) ? trim(strip_tags($_POST['username'])) : '';
|
||||
$email = (!empty($_POST['email'])) ? trim(strip_tags(htmlspecialchars($_POST['email']))) : '';
|
||||
$username = (!empty($_POST['username'])) ? trim($_POST['username']) : '';
|
||||
$email = (!empty($_POST['email'])) ? trim($_POST['email']) : '';
|
||||
|
||||
$sql = "SELECT user_id, username, user_email, user_active, user_lang
|
||||
FROM " . USERS_TABLE . "
|
||||
$sql = 'SELECT user_id, username, user_email, user_active, user_lang
|
||||
FROM ' . USERS_TABLE . "
|
||||
WHERE user_email = '" . $db->sql_escape($email) . "'
|
||||
AND username = '" . . $db->sql_escape($username) . "'";
|
||||
if ($result = $db->sql_query($sql))
|
||||
@ -64,12 +56,12 @@ class ucp_remind extends ucp
|
||||
$emailer->to($row['user_email']);
|
||||
|
||||
$emailer->assign_vars(array(
|
||||
'SITENAME' => $config['sitename'],
|
||||
'USERNAME' => $username,
|
||||
'PASSWORD' => $user_password,
|
||||
'EMAIL_SIG' => str_replace('<br />', "\n", "-- \n" . $config['board_email_sig']),
|
||||
'SITENAME' => $config['sitename'],
|
||||
'USERNAME' => $username,
|
||||
'PASSWORD' => $user_password,
|
||||
'EMAIL_SIG' => str_replace('<br />', "\n", "-- \n" . $config['board_email_sig']),
|
||||
|
||||
'U_ACTIVATE' => $server_url . "/ucp.$phpEx?mode=activate&k=$user_actkey")
|
||||
'U_ACTIVATE' => $server_url . "/ucp.$phpEx?mode=activate&k=$user_actkey")
|
||||
);
|
||||
$emailer->send();
|
||||
$emailer->reset();
|
||||
|
Loading…
x
Reference in New Issue
Block a user