Vergleich inc/datahandlers/user.php - 1.4.4 - 1.4.13

  Keine Änderungen   Hinzugefügt   Modifiziert   Entfernt
Zeile 1Zeile 1
<?php
/**
* MyBB 1.4

<?php
/**
* MyBB 1.4

 * Copyright � 2008 MyBB Group, All Rights Reserved

 * Copyright © 2008 MyBB Group, All Rights Reserved

 *
* Website: http://www.mybboard.net
* License: http://www.mybboard.net/about/license
*

 *
* Website: http://www.mybboard.net
* License: http://www.mybboard.net/about/license
*

 * $Id: user.php 4261 2008-11-03 01:11:33Z Tikitiki $

 * $Id: user.php 4860 2010-04-09 06:31:50Z Huji $

 */

// Disallow direct access to this file for security reasons

 */

// Disallow direct access to this file for security reasons

Zeile 70Zeile 70

// Fix bad characters
$username = trim($username);


// Fix bad characters
$username = trim($username);

		$username = str_replace(array(unicode_chr(160), unicode_chr(173), unicode_chr(0xCA), dec_to_utf8(8238), dec_to_utf8(8237)), array(" ", "-", "", "", ""), $username);

		$username = str_replace(array(unicode_chr(160), unicode_chr(173), unicode_chr(0xCA), dec_to_utf8(8238), dec_to_utf8(8237), dec_to_utf8(8203)), array(" ", "-", "", "", "", ""), $username);


// Remove multiple spaces from the username
$username = preg_replace("#\s{2,}#", " ", $username);


// Remove multiple spaces from the username
$username = preg_replace("#\s{2,}#", " ", $username);

Zeile 170Zeile 170
		$user = &$this->data;

// Always check for the length of the password.

		$user = &$this->data;

// Always check for the length of the password.

		if(my_strlen($user['password']) < $mybb->settings['minpasswordlength'])

		if(my_strlen($user['password']) < $mybb->settings['minpasswordlength'] || my_strlen($user['password']) > $mybb->settings['maxpasswordlength'])

		{
$this->set_error('invalid_password_length', array($mybb->settings['minpasswordlength'], $mybb->settings['maxpasswordlength']));
return false;

		{
$this->set_error('invalid_password_length', array($mybb->settings['minpasswordlength'], $mybb->settings['maxpasswordlength']));
return false;

Zeile 220Zeile 220
		$user = &$this->data;
return true;
}

		$user = &$this->data;
return true;
}

 
	

	/**
* Verifies if an email address is valid or not.
*

	/**
* Verifies if an email address is valid or not.
*

Zeile 242Zeile 243
		if(!validate_email_format($user['email']))
{
$this->set_error('invalid_email_format');

		if(!validate_email_format($user['email']))
{
$this->set_error('invalid_email_format');

			return false;
}


			return false;
}


		// Check banned emails
if(is_banned_email($user['email'], true))
{
$this->set_error('banned_email');

		// Check banned emails
if(is_banned_email($user['email'], true))
{
$this->set_error('banned_email');

			return false;
}

			return false;
}

		
// Check signed up emails
// Ignore the ACP because the Merge System sometimes produces users with duplicate email addresses (Not A Bug)

		
// Check signed up emails
// Ignore the ACP because the Merge System sometimes produces users with duplicate email addresses (Not A Bug)

Zeile 261Zeile 262
				$this->set_error('email_already_in_use');
return false;
}

				$this->set_error('email_already_in_use');
return false;
}

		}


		}


		// If we have an "email2", verify it matches the existing email
if(isset($user['email2']) && $user['email'] != $user['email2'])
{
$this->set_error("emails_dont_match");
return false;
}

		// If we have an "email2", verify it matches the existing email
if(isset($user['email2']) && $user['email'] != $user['email2'])
{
$this->set_error("emails_dont_match");
return false;
}

 

return true;

	}

/**

	}

/**

Zeile 354Zeile 357
		$birthday['year'] = intval($birthday['year']);

// Error if a day and month exists, and the birthday day and range is not in range

		$birthday['year'] = intval($birthday['year']);

// Error if a day and month exists, and the birthday day and range is not in range

		if($birthday['day'] && $birthday['month'])

		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))

		{
if($birthday['day'] < 1 || $birthday['day'] > 31 || $birthday['month'] < 1 || $birthday['month'] > 12 || ($birthday['month'] == 2 && $birthday['day'] > 29))

			{
$this->set_error("invalid_birthday");
return false;
}

// Check if the day actually exists.
$months = get_bdays($birthday['year']);
if($birthday['day'] > $months[$birthday['month']-1])

 
			{
$this->set_error("invalid_birthday");
return false;
}

			{
$this->set_error("invalid_birthday");
return false;
}

 
		}

// Check if the day actually exists.
$months = get_bdays($birthday['year']);
if($birthday['day'] > $months[$birthday['month']-1])
{
$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"))
{
$this->set_error("invalid_birthday");

		}

// 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"))
{
$this->set_error("invalid_birthday");

			return false;






















			return false;
}
else if($birthday['year'] == date("Y"))
{
// Error if birth date is in future
if($birthday['month'] > date("m") || ($birthday['month'] == date("m") && $bithday['day'] > date("d")))
{
$this->set_error("invalid_birthday");
return false;
}
}

// 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");
return false;
}
elseif(($mybb->settings['coppa'] == "deny" || $mybb->settings['coppa'] == "enabled") && $birthday['year'] > (date("Y")-13))
{
$this->set_error("invalid_birthday_coppa2");
return false;

		}

// Make the user's birthday field

		}

// Make the user's birthday field

Zeile 394Zeile 418
			// No field is specified, so return an empty string for an unknown birthday
$user['bday'] = '';
}

			// No field is specified, so return an empty string for an unknown birthday
$user['bday'] = '';
}

 
		return true;
}

/**
* Verifies if the post count field is filled in correctly.
*
* @return boolean True when valid, false when invalid.
*/
function verify_postnum()
{
$user = &$this->data;

if($user['postnum'] < 0)
{
$this->set_error("invalid_postnum");
return false;
}


		return true;
}


		return true;
}


Zeile 434Zeile 476
			$field = "fid{$profilefield['fid']}";

// If the profile field is required, but not filled in, present error.

			$field = "fid{$profilefield['fid']}";

// If the profile field is required, but not filled in, present error.

			if(trim($profile_fields[$field]) == "" && $profilefield['required'] == 1 && !defined('IN_ADMINCP'))








			if($type != "multiselect" && $type != "checkbox")
{
if(trim($profile_fields[$field]) == "" && $profilefield['required'] == 1 && !defined('IN_ADMINCP'))
{
$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->set_error('missing_required_profile_field', array($profilefield['name']));
}

			{
$this->set_error('missing_required_profile_field', array($profilefield['name']));
}

Zeile 456Zeile 505
						$options .= "\n";
}
$options .= $db->escape_string($value);

						$options .= "\n";
}
$options .= $db->escape_string($value);

				}
}

				}
}

			elseif($type == "select" || $type == "radio")

			elseif($type == "select" || $type == "radio")

			{

			{

				$expoptions = explode("\n", $thing[1]);
$expoptions = array_map('trim', $expoptions);
if(!in_array(htmlspecialchars_uni($profile_fields[$field]), $expoptions) && trim($profile_fields[$field]) != "")

				$expoptions = explode("\n", $thing[1]);
$expoptions = array_map('trim', $expoptions);
if(!in_array(htmlspecialchars_uni($profile_fields[$field]), $expoptions) && trim($profile_fields[$field]) != "")

				{

				{

					$this->set_error('bad_profile_field_values', array($profilefield['name']));
}

					$this->set_error('bad_profile_field_values', array($profilefield['name']));
}

 
				$options = $db->escape_string($profile_fields[$field]);
}
elseif($type == "textarea")
{
if($profilefield['maxlength'] > 0 && my_strlen($profile_fields[$field]) > $profilefield['maxlength'])
{
$this->set_error('max_limit_reached', array($profilefield['name'], $profilefield['maxlength']));
}


				$options = $db->escape_string($profile_fields[$field]);
}
else

				$options = $db->escape_string($profile_fields[$field]);
}
else

Zeile 688Zeile 746
		if($lastactive <= 0)
{
$lastactive = TIME_NOW;

		if($lastactive <= 0)
{
$lastactive = TIME_NOW;

		}
return true;

		}
return true;


}



}


Zeile 718Zeile 776
			if(!$returnday || !$returnmonth || !$returnyear)
{
$this->set_error("missing_returndate");

			if(!$returnday || !$returnmonth || !$returnyear)
{
$this->set_error("missing_returndate");

			}





				return false;
}

// Validate the return date lengths
$user['away']['returndate'] = substr($returnday, 0, 2).'-'.substr($returnmonth, 0, 2).'-'.substr($returnyear, 0, 4);

		}

		}

 
		return true;

	}

	}





	/**
* Verifies if a langage is valid for this user or not.
*

	/**
* Verifies if a langage is valid for this user or not.
*

Zeile 730Zeile 793
	function verify_language()
{
global $lang;

	function verify_language()
{
global $lang;


$language = &$this->data['language'];

// An invalid language has been specified?


$language = &$this->data['language'];

// An invalid language has been specified?

		if($language != '' && !$lang->language_exists($language))
{
$this->set_error("invalid_language");

		if($language != '' && !$lang->language_exists($language))
{
$this->set_error("invalid_language");

Zeile 791Zeile 854
			}
}
if($this->method == "insert" || array_key_exists('usertitle', $user))

			}
}
if($this->method == "insert" || array_key_exists('usertitle', $user))

		{

		{

			$this->verify_usertitle();

			$this->verify_usertitle();

		}

		}

		if($this->method == "insert" || array_key_exists('password', $user))

		if($this->method == "insert" || array_key_exists('password', $user))

		{

		{

			$this->verify_password();

			$this->verify_password();

		}

		}

		if($this->method == "insert" || array_key_exists('usergroup', $user))
{
$this->verify_usergroup();

		if($this->method == "insert" || array_key_exists('usergroup', $user))
{
$this->verify_usergroup();

Zeile 805Zeile 868
		if($this->method == "insert" || array_key_exists('email', $user))
{
$this->verify_email();

		if($this->method == "insert" || array_key_exists('email', $user))
{
$this->verify_email();

		}

		}

		if($this->method == "insert" || array_key_exists('website', $user))
{
$this->verify_website();

		if($this->method == "insert" || array_key_exists('website', $user))
{
$this->verify_website();

Zeile 818Zeile 881
		{
$this->verify_msn();
}

		{
$this->verify_msn();
}

		if($this->method == "insert" || is_array($user['birthday']))





		if($this->method == "insert" || array_key_exists('postnum', $user))
{
$this->verify_postnum();
}
if($this->method == "insert" || is_array($user['birthday']))

		{
$this->verify_birthday();
}

		{
$this->verify_birthday();
}

Zeile 839Zeile 906
			$this->verify_regdate();
}
if($this->method == "insert" || array_key_exists('lastvisit', $user))

			$this->verify_regdate();
}
if($this->method == "insert" || array_key_exists('lastvisit', $user))

		{

		{

			$this->verify_lastvisit();
}
if($this->method == "insert" || array_key_exists('lastactive', $user))

			$this->verify_lastvisit();
}
if($this->method == "insert" || array_key_exists('lastactive', $user))

Zeile 853Zeile 920
		if($this->method == "insert" || array_key_exists('language', $user))
{
$this->verify_language();

		if($this->method == "insert" || array_key_exists('language', $user))
{
$this->verify_language();

		}

		}

		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();
}


$plugins->run_hooks_by_ref("datahandler_user_validate", $this);





		
if(method_exists($plugins, "run_hooks_by_ref"))
{
$plugins->run_hooks_by_ref("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 967Zeile 1037
		{
$this->user_insert_data['dst'] = 0;
}

		{
$this->user_insert_data['dst'] = 0;
}


$plugins->run_hooks_by_ref("datahandler_user_insert", $this);





		
if(method_exists($plugins, "run_hooks_by_ref"))
{
$plugins->run_hooks_by_ref("datahandler_user_insert", $this);
}


		$this->uid = $db->insert_query("users", $this->user_insert_data);

		$this->uid = $db->insert_query("users", $this->user_insert_data);





		$user['user_fields']['ufid'] = $this->uid;

$query = $db->simple_select("profilefields", "fid");
while($profile_field = $db->fetch_array($query))

		$user['user_fields']['ufid'] = $this->uid;

$query = $db->simple_select("profilefields", "fid");
while($profile_field = $db->fetch_array($query))

		{

		{

			if(array_key_exists("fid{$profile_field['fid']}", $user['user_fields']))
{
continue;

			if(array_key_exists("fid{$profile_field['fid']}", $user['user_fields']))
{
continue;

Zeile 984Zeile 1057
			$user['user_fields']["fid{$profile_field['fid']}"] = '';
}


			$user['user_fields']["fid{$profile_field['fid']}"] = '';
}


		$db->insert_query("userfields", $user['user_fields']);

		$db->insert_query("userfields", $user['user_fields'], false);


// Update forum stats
update_stats(array('numusers' => '+1'));


// Update forum stats
update_stats(array('numusers' => '+1'));

Zeile 1022Zeile 1095

// Set up the update data.
if(isset($user['username']))


// Set up the update data.
if(isset($user['username']))

		{

		{

			$this->user_update_data['username'] = $db->escape_string($user['username']);
}
if(isset($user['saltedpw']))

			$this->user_update_data['username'] = $db->escape_string($user['username']);
}
if(isset($user['saltedpw']))

Zeile 1040Zeile 1113
			$this->user_update_data['postnum'] = intval($user['postnum']);
}
if(isset($user['avatar']))

			$this->user_update_data['postnum'] = intval($user['postnum']);
}
if(isset($user['avatar']))

		{

		{

			$this->user_update_data['avatar'] = $db->escape_string($user['avatar']);
$this->user_update_data['avatartype'] = $db->escape_string($user['avatartype']);
}

			$this->user_update_data['avatar'] = $db->escape_string($user['avatar']);
$this->user_update_data['avatartype'] = $db->escape_string($user['avatartype']);
}

Zeile 1055Zeile 1128
		if(isset($user['displaygroup']))
{
$this->user_update_data['displaygroup'] = intval($user['displaygroup']);

		if(isset($user['displaygroup']))
{
$this->user_update_data['displaygroup'] = intval($user['displaygroup']);

		}

		}

		if(isset($user['usertitle']))

		if(isset($user['usertitle']))

		{

		{

			$this->user_update_data['usertitle'] = $db->escape_string(htmlspecialchars_uni($user['usertitle']));

			$this->user_update_data['usertitle'] = $db->escape_string(htmlspecialchars_uni($user['usertitle']));

		}

		}

		if(isset($user['regdate']))

		if(isset($user['regdate']))

		{

		{

			$this->user_update_data['regdate'] = intval($user['regdate']);
}
if(isset($user['lastactive']))

			$this->user_update_data['regdate'] = intval($user['regdate']);
}
if(isset($user['lastactive']))

Zeile 1069Zeile 1142
			$this->user_update_data['lastactive'] = intval($user['lastactive']);
}
if(isset($user['lastvisit']))

			$this->user_update_data['lastactive'] = intval($user['lastactive']);
}
if(isset($user['lastvisit']))

		{

		{

			$this->user_update_data['lastvisit'] = intval($user['lastvisit']);
}
if(isset($user['signature']))

			$this->user_update_data['lastvisit'] = intval($user['lastvisit']);
}
if(isset($user['signature']))

Zeile 1102Zeile 1175
		}
if(isset($user['birthdayprivacy']))
{

		}
if(isset($user['birthdayprivacy']))
{

			$this->user_update_data['birthdayprivacy'] = $user['birthdayprivacy'];

			$this->user_update_data['birthdayprivacy'] = $db->escape_string($user['birthdayprivacy']);

		}
if(isset($user['style']))
{

		}
if(isset($user['style']))
{

Zeile 1154Zeile 1227
		$old_user = get_user($user['uid']);

// If old user has new pmnotice and new user has = yes, keep old value

		$old_user = get_user($user['uid']);

// If old user has new pmnotice and new user has = yes, keep old value

		if($old_user['pmnotice'] == "new" && $this->user_update_data['pmnotice'] == 1)

		if($old_user['pmnotice'] == "2" && $this->user_update_data['pmnotice'] == 1)

		{
unset($this->user_update_data['pmnotice']);
}

		{
unset($this->user_update_data['pmnotice']);
}


$plugins->run_hooks_by_ref("datahandler_user_update", $this);




		
if(method_exists($plugins, "run_hooks_by_ref"))
{
$plugins->run_hooks_by_ref("datahandler_user_update", $this);
}

		
if(count($this->user_update_data) < 1)
{

		
if(count($this->user_update_data) < 1)
{

Zeile 1197Zeile 1273
				}
$db->insert_query("userfields", $user_fields);
}

				}
$db->insert_query("userfields", $user_fields);
}

			$db->update_query("userfields", $user['user_fields'], "ufid='{$user['uid']}'");

			$db->update_query("userfields", $user['user_fields'], "ufid='{$user['uid']}'", false);

		}

// Let's make sure the user's name gets changed everywhere in the db if it changed.

		}

// Let's make sure the user's name gets changed everywhere in the db if it changed.