Zeile 211 | Zeile 211 |
---|
$this->set_error("passwords_dont_match"); return false; }
|
$this->set_error("passwords_dont_match"); return false; }
|
// MD5 the password $user['md5password'] = md5($user['password']);
// Generate our salt $user['salt'] = generate_salt();
// Combine the password and salt $user['saltedpw'] = salt_password($user['md5password'], $user['salt']);
| |
// Generate the user login key $user['loginkey'] = generate_loginkey();
|
// Generate the user login key $user['loginkey'] = generate_loginkey();
|
| // Combine the password and salt $password_fields = create_password($user['password'], false, $user); $user = array_merge($user, $password_fields);
|
return true; }
| return true; }
|
Zeile 303 | Zeile 298 |
---|
{ $website = &$this->data['website'];
|
{ $website = &$this->data['website'];
|
if(empty($website) || my_strtolower($website) == 'http://' || my_strtolower($website) == 'https://')
| if(!empty($website) && !my_validate_url($website))
|
{
|
{
|
$website = ''; return true; }
// Does the website start with http(s)://? if(my_strtolower(substr($website, 0, 4)) != "http") { // Website does not start with http://, let's see if the user forgot. $website = "http://".$website;
| $website = 'http://'.$website;
|
}
|
}
|
if(!filter_var($website, FILTER_VALIDATE_URL))
| if(!empty($website) && !my_validate_url($website))
|
{ $this->set_error('invalid_website');
|
{ $this->set_error('invalid_website');
|
return false; }
| return false; }
|
return true; }
| return true; }
|
Zeile 367 | Zeile 354 |
---|
// Error if a day and month exists, and the birthday day and range is not in range if($birthday['day'] != 0 || $birthday['month'] != 0)
|
// Error if a day and month exists, and the birthday day and range is not in range if($birthday['day'] != 0 || $birthday['month'] != 0)
|
{
| {
|
if($birthday['day'] < 1 || $birthday['day'] > 31 || $birthday['month'] < 1 || $birthday['month'] > 12 || ($birthday['month'] == 2 && $birthday['day'] > 29)) { $this->set_error("invalid_birthday");
| if($birthday['day'] < 1 || $birthday['day'] > 31 || $birthday['month'] < 1 || $birthday['month'] > 12 || ($birthday['month'] == 2 && $birthday['day'] > 29)) { $this->set_error("invalid_birthday");
|
Zeile 378 | Zeile 365 |
---|
// Check if the day actually exists. $months = get_bdays($birthday['year']); if($birthday['month'] != 0 && $birthday['day'] > $months[$birthday['month']-1])
|
// Check if the day actually exists. $months = get_bdays($birthday['year']); if($birthday['month'] != 0 && $birthday['day'] > $months[$birthday['month']-1])
|
{ $this->set_error("invalid_birthday"); return false; }
| { $this->set_error("invalid_birthday"); return false; }
|
// Error if a year exists and the year is out of range if($birthday['year'] != 0 && ($birthday['year'] < (date("Y")-100)) || $birthday['year'] > date("Y"))
| // Error if a year exists and the year is out of range if($birthday['year'] != 0 && ($birthday['year'] < (date("Y")-100)) || $birthday['year'] > date("Y"))
|
Zeile 390 | Zeile 377 |
---|
return false; } else if($birthday['year'] == date("Y"))
|
return false; } else if($birthday['year'] == date("Y"))
|
{
| {
|
// Error if birth date is in future if($birthday['month'] > date("m") || ($birthday['month'] == date("m") && $birthday['day'] > date("d"))) {
| // Error if birth date is in future if($birthday['month'] > date("m") || ($birthday['month'] == date("m") && $birthday['day'] > date("d"))) {
|
Zeile 401 | Zeile 388 |
---|
// Error if COPPA is on, and the user hasn't verified their age / under 13 if($mybb->settings['coppa'] == "enabled" && ($birthday['year'] == 0 || !$birthday['year']))
|
// Error if COPPA is on, and the user hasn't verified their age / under 13 if($mybb->settings['coppa'] == "enabled" && ($birthday['year'] == 0 || !$birthday['year']))
|
{
| {
|
$this->set_error("invalid_birthday_coppa");
|
$this->set_error("invalid_birthday_coppa");
|
return false; }
| return false; }
|
elseif(($mybb->settings['coppa'] == "deny" && $birthday['year'] > (date("Y")-13)) && !is_moderator()) { $this->set_error("invalid_birthday_coppa2");
| elseif(($mybb->settings['coppa'] == "deny" && $birthday['year'] > (date("Y")-13)) && !is_moderator()) { $this->set_error("invalid_birthday_coppa2");
|
Zeile 413 | Zeile 400 |
---|
// Make the user's birthday field if($birthday['year'] != 0)
|
// Make the user's birthday field if($birthday['year'] != 0)
|
{
| {
|
// If the year is specified, put together a d-m-y string $user['bday'] = $birthday['day']."-".$birthday['month']."-".$birthday['year'];
|
// If the year is specified, put together a d-m-y string $user['bday'] = $birthday['day']."-".$birthday['month']."-".$birthday['year'];
|
}
| }
|
elseif($birthday['day'] && $birthday['month']) { // If only a day and month are specified, put together a d-m string
| elseif($birthday['day'] && $birthday['month']) { // If only a day and month are specified, put together a d-m string
|
Zeile 436 | Zeile 423 |
---|
* @return boolean True when valid, false when invalid. */ function verify_birthday_privacy()
|
* @return boolean True when valid, false when invalid. */ function verify_birthday_privacy()
|
{
| {
|
$birthdayprivacy = &$this->data['birthdayprivacy']; $accepted = array( 'none',
| $birthdayprivacy = &$this->data['birthdayprivacy']; $accepted = array( 'none',
|
Zeile 457 | Zeile 444 |
---|
* @return boolean True when valid, false when invalid. */ function verify_postnum()
|
* @return boolean True when valid, false when invalid. */ function verify_postnum()
|
{ $user = &$this->data;
| { $user = &$this->data;
|
if(isset($user['postnum']) && $user['postnum'] < 0) { $this->set_error("invalid_postnum"); return false; }
|
if(isset($user['postnum']) && $user['postnum'] < 0) { $this->set_error("invalid_postnum"); return false; }
|
|
|
return true; }
|
return true; }
|
|
|
/** * Verifies if the thread count field is filled in correctly. *
| /** * Verifies if the thread count field is filled in correctly. *
|
Zeile 482 | Zeile 469 |
---|
{ $this->set_error("invalid_threadnum"); return false;
|
{ $this->set_error("invalid_threadnum"); return false;
|
}
| }
|
return true; }
| return true; }
|
Zeile 530 | Zeile 517 |
---|
$thing = explode("\n", $profilefield['type'], "2"); $type = trim($thing[0]); $field = "fid{$profilefield['fid']}";
|
$thing = explode("\n", $profilefield['type'], "2"); $type = trim($thing[0]); $field = "fid{$profilefield['fid']}";
|
|
|
if(!isset($profile_fields[$field]))
|
if(!isset($profile_fields[$field]))
|
{
| {
|
$profile_fields[$field] = '';
|
$profile_fields[$field] = '';
|
}
| }
|
// If the profile field is required, but not filled in, present error. if($type != "multiselect" && $type != "checkbox")
|
// If the profile field is required, but not filled in, present error. if($type != "multiselect" && $type != "checkbox")
|
{
| {
|
if(trim($profile_fields[$field]) == "" && $profilefield['required'] == 1 && !defined('IN_ADMINCP') && THIS_SCRIPT != "modcp.php") { $this->set_error('missing_required_profile_field', array($profilefield['name'])); }
|
if(trim($profile_fields[$field]) == "" && $profilefield['required'] == 1 && !defined('IN_ADMINCP') && THIS_SCRIPT != "modcp.php") { $this->set_error('missing_required_profile_field', array($profilefield['name'])); }
|
}
| }
|
elseif(($type == "multiselect" || $type == "checkbox") && $profile_fields[$field] == "" && $profilefield['required'] == 1 && !defined('IN_ADMINCP') && THIS_SCRIPT != "modcp.php") { $this->set_error('missing_required_profile_field', array($profilefield['name']));
| elseif(($type == "multiselect" || $type == "checkbox") && $profile_fields[$field] == "" && $profilefield['required'] == 1 && !defined('IN_ADMINCP') && THIS_SCRIPT != "modcp.php") { $this->set_error('missing_required_profile_field', array($profilefield['name']));
|
Zeile 552 | Zeile 539 |
---|
// Sort out multiselect/checkbox profile fields. $options = ''; if(($type == "multiselect" || $type == "checkbox") && is_array($profile_fields[$field]))
|
// Sort out multiselect/checkbox profile fields. $options = ''; if(($type == "multiselect" || $type == "checkbox") && is_array($profile_fields[$field]))
|
{ $expoptions = explode("\n", $thing[1]); $expoptions = array_map('trim', $expoptions);
| { $expoptions = explode("\n", $thing[1]); $expoptions = array_map('trim', $expoptions);
|
foreach($profile_fields[$field] as $value) { if(!in_array(htmlspecialchars_uni($value), $expoptions)) { $this->set_error('bad_profile_field_values', array($profilefield['name']));
|
foreach($profile_fields[$field] as $value) { if(!in_array(htmlspecialchars_uni($value), $expoptions)) { $this->set_error('bad_profile_field_values', array($profilefield['name']));
|
}
| }
|
if($options) { $options .= "\n"; } $options .= $db->escape_string($value);
|
if($options) { $options .= "\n"; } $options .= $db->escape_string($value);
|
}
| }
|
} elseif($type == "select" || $type == "radio") {
| } elseif($type == "select" || $type == "radio") {
|
Zeile 575 | Zeile 562 |
---|
if(!in_array(htmlspecialchars_uni($profile_fields[$field]), $expoptions) && trim($profile_fields[$field]) != "") { $this->set_error('bad_profile_field_values', array($profilefield['name']));
|
if(!in_array(htmlspecialchars_uni($profile_fields[$field]), $expoptions) && trim($profile_fields[$field]) != "") { $this->set_error('bad_profile_field_values', array($profilefield['name']));
|
} $options = $db->escape_string($profile_fields[$field]); }
| } $options = $db->escape_string($profile_fields[$field]); }
|
else { if($profilefield['maxlength'] > 0 && my_strlen($profile_fields[$field]) > $profilefield['maxlength']) { $this->set_error('max_limit_reached', array($profilefield['name'], $profilefield['maxlength']));
|
else { if($profilefield['maxlength'] > 0 && my_strlen($profile_fields[$field]) > $profilefield['maxlength']) { $this->set_error('max_limit_reached', array($profilefield['name'], $profilefield['maxlength']));
|
}
| }
|
if(!empty($profilefield['regex']) && !preg_match("#".$profilefield['regex']."#i", $profile_fields[$field])) { $this->set_error('bad_profile_field_value', array($profilefield['name'])); }
|
if(!empty($profilefield['regex']) && !preg_match("#".$profilefield['regex']."#i", $profile_fields[$field])) { $this->set_error('bad_profile_field_value', array($profilefield['name'])); }
|
|
|
$options = $db->escape_string($profile_fields[$field]); } $user['user_fields'][$field] = $options; } }
|
$options = $db->escape_string($profile_fields[$field]); } $user['user_fields'][$field] = $options; } }
|
|
|
return true; }
/** * Verifies if an optionally entered referrer exists or not.
|
return true; }
/** * Verifies if an optionally entered referrer exists or not.
|
* * @return boolean True when valid, false when invalid.
| * * @return boolean True when valid, false when invalid.
|
*/ function verify_referrer() {
| */ function verify_referrer() {
|
Zeile 921 | Zeile 908 |
---|
}
/**
|
}
/**
|
* Verifies if the user timezone is valid.
| * Verifies if the user timezone is valid.
|
* If the timezone is invalid, the board default is used. * * @return boolean True when timezone was valid, false otherwise
| * If the timezone is invalid, the board default is used. * * @return boolean True when timezone was valid, false otherwise
|
Zeile 982 | Zeile 969 |
---|
if($this->method == "insert" || array_key_exists('usergroup', $user)) { $this->verify_usergroup();
|
if($this->method == "insert" || array_key_exists('usergroup', $user)) { $this->verify_usergroup();
|
}
| }
|
if($this->method == "insert" || array_key_exists('email', $user)) { $this->verify_email();
| if($this->method == "insert" || array_key_exists('email', $user)) { $this->verify_email();
|
Zeile 1012 | Zeile 999 |
---|
$this->verify_profile_fields(); } if($this->method == "insert" || array_key_exists('referrer', $user))
|
$this->verify_profile_fields(); } if($this->method == "insert" || array_key_exists('referrer', $user))
|
{
| {
|
$this->verify_referrer(); } if($this->method == "insert" || array_key_exists('options', $user))
| $this->verify_referrer(); } if($this->method == "insert" || array_key_exists('options', $user))
|
Zeile 1042 | Zeile 1029 |
---|
if($this->method == "insert" || array_key_exists('timezone', $user)) { $this->verify_timezone();
|
if($this->method == "insert" || array_key_exists('timezone', $user)) { $this->verify_timezone();
|
}
| }
|
if($this->method == "insert" && array_key_exists('regcheck1', $user) && array_key_exists('regcheck2', $user))
|
if($this->method == "insert" && array_key_exists('regcheck1', $user) && array_key_exists('regcheck2', $user))
|
{
| {
|
$this->verify_checkfields();
|
$this->verify_checkfields();
|
}
| }
|
if(array_key_exists('birthdayprivacy', $user)) { $this->verify_birthday_privacy();
|
if(array_key_exists('birthdayprivacy', $user)) { $this->verify_birthday_privacy();
|
}
| }
|
if($this->method == "insert" || array_key_exists('style', $user)) { $this->verify_style();
|
if($this->method == "insert" || array_key_exists('style', $user)) { $this->verify_style();
|
}
$plugins->run_hooks("datahandler_user_validate", $this);
| } if($this->method == "insert" || array_key_exists('signature', $user)) { $this->verify_signature(); }
$plugins->run_hooks("datahandler_user_validate", $this);
|
// We are done validating, return. $this->set_validated(true); if(count($this->get_errors()) > 0)
| // We are done validating, return. $this->set_validated(true); if(count($this->get_errors()) > 0)
|
Zeile 1087 | Zeile 1078 |
---|
if(count($this->get_errors()) > 0) { die("The user is not valid.");
|
if(count($this->get_errors()) > 0) { die("The user is not valid.");
|
}
| }
|
$user = &$this->data;
| $user = &$this->data;
|
Zeile 1102 | Zeile 1093 |
---|
$this->user_insert_data = array( "username" => $db->escape_string($user['username']),
|
$this->user_insert_data = array( "username" => $db->escape_string($user['username']),
|
"password" => $user['saltedpw'],
| "password" => $user['password'],
|
"salt" => $user['salt'], "loginkey" => $user['loginkey'], "email" => $db->escape_string($user['email']),
| "salt" => $user['salt'], "loginkey" => $user['loginkey'], "email" => $db->escape_string($user['email']),
|
Zeile 1265 | Zeile 1256 |
---|
{ $this->user_update_data['username'] = $db->escape_string($user['username']); }
|
{ $this->user_update_data['username'] = $db->escape_string($user['username']); }
|
if(isset($user['saltedpw']))
| if(isset($user['password'])) { $this->user_update_data['password'] = $user['password']; } if(isset($user['salt']))
|
{
|
{
|
$this->user_update_data['password'] = $user['saltedpw'];
| |
$this->user_update_data['salt'] = $user['salt'];
|
$this->user_update_data['salt'] = $user['salt'];
|
| } if(isset($user['loginkey'])) {
|
$this->user_update_data['loginkey'] = $user['loginkey']; } if(isset($user['email']))
| $this->user_update_data['loginkey'] = $user['loginkey']; } if(isset($user['email']))
|
Zeile 1378 | Zeile 1375 |
---|
} if(isset($user['away'])) {
|
} if(isset($user['away'])) {
|
$this->user_update_data['away'] = $user['away']['away'];
| $this->user_update_data['away'] = (int)$user['away']['away'];
|
$this->user_update_data['awaydate'] = $db->escape_string($user['away']['date']); $this->user_update_data['returndate'] = $db->escape_string($user['away']['returndate']); $this->user_update_data['awayreason'] = $db->escape_string($user['away']['awayreason']);
| $this->user_update_data['awaydate'] = $db->escape_string($user['away']['date']); $this->user_update_data['returndate'] = $db->escape_string($user['away']['returndate']); $this->user_update_data['awayreason'] = $db->escape_string($user['away']['awayreason']);
|
Zeile 1517 | Zeile 1514 |
---|
$plugins->run_hooks('datahandler_user_delete_start', $this);
$this->delete_uids = implode(',', $this->delete_uids);
|
$plugins->run_hooks('datahandler_user_delete_start', $this);
$this->delete_uids = implode(',', $this->delete_uids);
|
| if(empty($this->delete_uids)) { $this->deleted_users = 0; $this->return_values = array( "deleted_users" => $this->deleted_users );
return $this->return_values; }
|
$this->delete_content();
// Delete the user
| $this->delete_content();
// Delete the user
|
Zeile 1580 | Zeile 1587 |
---|
$cache->update_forumsdisplay(); $cache->update_reportedcontent(); $cache->update_awaitingactivation();
|
$cache->update_forumsdisplay(); $cache->update_reportedcontent(); $cache->update_awaitingactivation();
|
| $cache->update_birthdays();
|
return $this->return_values; }
| return $this->return_values; }
|
Zeile 1596 | Zeile 1604 |
---|
if($delete_uids != false) { $this->delete_uids = array_map('intval', (array)$delete_uids);
|
if($delete_uids != false) { $this->delete_uids = array_map('intval', (array)$delete_uids);
|
|
|
foreach($this->delete_uids as $key => $uid) { if(!$uid || is_super_admin($uid) || $uid == $mybb->user['uid'])
| foreach($this->delete_uids as $key => $uid) { if(!$uid || is_super_admin($uid) || $uid == $mybb->user['uid'])
|
Zeile 1605 | Zeile 1613 |
---|
unset($this->delete_uids[$key]); } }
|
unset($this->delete_uids[$key]); } }
|
|
|
$this->delete_uids = implode(',', $this->delete_uids);
|
$this->delete_uids = implode(',', $this->delete_uids);
|
}
| }
|
$plugins->run_hooks('datahandler_user_delete_content', $this);
|
$plugins->run_hooks('datahandler_user_delete_content', $this);
|
| if(empty($this->delete_uids)) { return; }
|
$db->delete_query('userfields', "ufid IN({$this->delete_uids})"); $db->delete_query('privatemessages', "uid IN({$this->delete_uids})");
| $db->delete_query('userfields', "ufid IN({$this->delete_uids})"); $db->delete_query('privatemessages', "uid IN({$this->delete_uids})");
|
Zeile 1641 | Zeile 1654 |
---|
$db->update_query('reportedcontent', array('uid' => 0), "uid IN({$this->delete_uids})");
// Remove any of the user(s) uploaded avatars
|
$db->update_query('reportedcontent', array('uid' => 0), "uid IN({$this->delete_uids})");
// Remove any of the user(s) uploaded avatars
|
$query = $db->simple_select('users', 'avatar', "uid IN({$this->delete_uids}) AND avatartype='upload'"); while($avatar = $db->fetch_field($query, 'avatar'))
| require_once MYBB_ROOT.'inc/functions_upload.php'; foreach(explode(',', $this->delete_uids) as $uid)
|
{
|
{
|
$avatar = substr($avatar, 2, -20); @unlink(MYBB_ROOT.$avatar);
| remove_avatars($uid);
|
} }
| } }
|
Zeile 1655 | Zeile 1667 |
---|
* @param array|bool $delete_uids Array of user ids, false if they're already set (eg when using the delete_user function) */ function delete_posts($delete_uids=false)
|
* @param array|bool $delete_uids Array of user ids, false if they're already set (eg when using the delete_user function) */ function delete_posts($delete_uids=false)
|
{ global $db, $plugins, $mybb;
| { global $db, $plugins, $mybb;
|
if($delete_uids != false) { $this->delete_uids = array_map('intval', (array)$delete_uids);
| if($delete_uids != false) { $this->delete_uids = array_map('intval', (array)$delete_uids);
|
Zeile 1676 | Zeile 1688 |
---|
require_once MYBB_ROOT.'inc/class_moderation.php'; $moderation = new Moderation();
|
require_once MYBB_ROOT.'inc/class_moderation.php'; $moderation = new Moderation();
|
|
|
$plugins->run_hooks('datahandler_user_delete_posts', $this);
|
$plugins->run_hooks('datahandler_user_delete_posts', $this);
|
| if(empty($this->delete_uids)) { return; }
|
// Threads $query = $db->simple_select('threads', 'tid', "uid IN({$this->delete_uids})");
| // Threads $query = $db->simple_select('threads', 'tid', "uid IN({$this->delete_uids})");
|
Zeile 1748 | Zeile 1765 |
---|
}
$plugins->run_hooks('datahandler_user_clear_profile', $this);
|
}
$plugins->run_hooks('datahandler_user_clear_profile', $this);
|
| if(empty($this->delete_uids)) { return; }
|
$db->update_query("users", $update, "uid IN({$this->delete_uids})"); $db->delete_query('userfields', "ufid IN({$this->delete_uids})");
|
$db->update_query("users", $update, "uid IN({$this->delete_uids})"); $db->delete_query('userfields', "ufid IN({$this->delete_uids})");
|
| // Remove any of the user(s) uploaded avatars require_once MYBB_ROOT.'inc/functions_upload.php'; foreach(explode(',', $this->delete_uids) as $uid) { remove_avatars($uid); } }
public function verify_signature() { global $mybb, $parser;
if(!isset($parser)) { require_once MYBB_ROOT."inc/class_parser.php"; $parser = new postParser; }
$parser_options = array( 'allow_html' => $mybb->settings['sightml'], 'filter_badwords' => 1, 'allow_mycode' => $mybb->settings['sigmycode'], 'allow_smilies' => $mybb->settings['sigsmilies'], 'allow_imgcode' => $mybb->settings['sigimgcode'], "filter_badwords" => 1 );
$parsed_sig = $parser->parse_message($this->data['signature'], $parser_options);
if((($mybb->settings['sigimgcode'] == 0 && $mybb->settings['sigsmilies'] != 1) && substr_count($parsed_sig, "<img") > 0) || (($mybb->settings['sigimgcode'] == 1 || $mybb->settings['sigsmilies'] == 1) && substr_count($parsed_sig, "<img") > $mybb->settings['maxsigimages']) ) { $imgsallowed = 0;
if($mybb->settings['sigimgcode'] == 1) { $imgsallowed = $mybb->settings['maxsigimages']; }
$this->set_error('too_many_sig_images2', array($imgsallowed)); }
if($mybb->settings['sigcountmycode'] == 0) { $parsed_sig = $parser->text_parse_message($this->data['signature']); } else { $parsed_sig = $this->data['signature']; }
$parsed_sig = preg_replace("#\s#", "", $parsed_sig); $sig_length = my_strlen($parsed_sig);
if($sig_length > $mybb->settings['siglength']) { $this->set_error('sig_too_long', array($mybb->settings['siglength']));
if($sig_length - $mybb->settings['siglength'] > 1) { $this->set_error('sig_remove_chars_plural', array($sig_length-$mybb->settings['siglength'])); } else { $this->set_error('sig_remove_chars_singular'); } }
if(count($this->get_errors()) > 0) { return false; } return true;
|
} }
| } }
|