Vergleich inc/datahandlers/user.php - 1.4.0 - 1.4.9

  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 4052 2008-07-29 15:45:49Z Tikitiki $

 * $Id: user.php 4384 2009-06-19 11:49:42Z Tomm $

 */

// 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 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 253Zeile 254
		}

// Check signed up emails

		}

// Check signed up emails

		if($mybb->settings['allowmultipleemails'] == 0)


		// Ignore the ACP because the Merge System sometimes produces users with duplicate email addresses (Not A Bug)
if($mybb->settings['allowmultipleemails'] == 0 && !defined("IN_ADMINCP"))

		{
if(email_already_in_use($user['email'], $user['uid']))
{

		{
if(email_already_in_use($user['email'], $user['uid']))
{

Zeile 264Zeile 266

// If we have an "email2", verify it matches the existing email
if(isset($user['email2']) && $user['email'] != $user['email2'])


// 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;
}
}

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





	/**
* Verifies if a website is valid or not.
*
* @return boolean True when valid, false when invalid.
*/
function verify_website()

	/**
* Verifies if a website is valid or not.
*
* @return boolean True when valid, false when invalid.
*/
function verify_website()

	{
$website = &$this->data['website'];


	{
$website = &$this->data['website'];


		if(empty($website) || my_strtolower($website) == 'http://' || my_strtolower($website) == 'https://')
{
$website = '';
return true;

		if(empty($website) || my_strtolower($website) == 'http://' || my_strtolower($website) == 'https://')
{
$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;

		// 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;

		}

return true;
}

		}

return true;
}


/**
* Verifies if an ICQ number is valid or not.


/**
* Verifies if an ICQ number is valid or not.

Zeile 307Zeile 309
		if($icq != '' && !is_numeric($icq))
{
$this->set_error("invalid_icq_number");

		if($icq != '' && !is_numeric($icq))
{
$this->set_error("invalid_icq_number");

			return false;

			return false;

		}
$icq = intval($icq);
return true;

		}
$icq = intval($icq);
return true;

Zeile 336Zeile 338
	* @return boolean True when valid, false when invalid.
*/
function verify_birthday()

	* @return boolean True when valid, false when invalid.
*/
function verify_birthday()

	{

	{

		global $mybb;

$user = &$this->data;

		global $mybb;

$user = &$this->data;

Zeile 345Zeile 347
		if(!is_array($birthday))
{
return true;

		if(!is_array($birthday))
{
return true;

		}

		}


// Sanitize any input we have
$birthday['day'] = intval($birthday['day']);
$birthday['month'] = intval($birthday['month']);
$birthday['year'] = intval($birthday['year']);


// Sanitize any input we have
$birthday['day'] = intval($birthday['day']);
$birthday['month'] = intval($birthday['month']);
$birthday['year'] = intval($birthday['year']);





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

		// 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'] < 1 || $birthday['day'] > 31 || $birthday['month'] < 1 || $birthday['month'] > 12 || ($birthday['month'] == 2 && $birthday['day'] > 29))
{
$this->set_error("invalid_birthday");
return false;
}

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

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

		}

// Error if a year exists and the year is out of range

Zeile 528Zeile 527
		$this->verify_yesno_option($options, 'showavatars', 1);
$this->verify_yesno_option($options, 'showquickreply', 1);
$this->verify_yesno_option($options, 'showredirect', 1);

		$this->verify_yesno_option($options, 'showavatars', 1);
$this->verify_yesno_option($options, 'showquickreply', 1);
$this->verify_yesno_option($options, 'showredirect', 1);

		$this->verify_yesno_option($options, 'classicpostbit', 0);










		
if($mybb->settings['postlayout'] == 'classic')
{
$this->verify_yesno_option($options, 'classicpostbit', 1);
}
else
{
$this->verify_yesno_option($options, 'classicpostbit', 0);
}


		if(array_key_exists('subscriptionmethod', $options))
{
// Value out of range

		if(array_key_exists('subscriptionmethod', $options))
{
// Value out of range

Zeile 575Zeile 582
		if($this->method == "insert" || (isset($options['threadmode']) && $options['threadmode'] != "linear" && $options['threadmode'] != "threaded"))
{
if($mybb->settings['threadusenetstyle'])

		if($this->method == "insert" || (isset($options['threadmode']) && $options['threadmode'] != "linear" && $options['threadmode'] != "threaded"))
{
if($mybb->settings['threadusenetstyle'])

			{

			{

				$options['threadmode'] = 'threaded';
}
else

				$options['threadmode'] = 'threaded';
}
else

Zeile 585Zeile 592
		}

// Verify the "threads per page" option.

		}

// Verify the "threads per page" option.

		if($this->method == "insert" || (array_key_exists('tpp', $options) && $mybb->settings['usetppoptions']))

		if($this->method == "insert" || (array_key_exists('tpp', $options) && $mybb->settings['usertppoptions']))

		{
$explodedtpp = explode(",", $mybb->settings['usertppoptions']);
if(is_array($explodedtpp))

		{
$explodedtpp = explode(",", $mybb->settings['usertppoptions']);
if(is_array($explodedtpp))

Zeile 605Zeile 612
		{
$explodedppp = explode(",", $mybb->settings['userpppoptions']);
if(is_array($explodedppp))

		{
$explodedppp = explode(",", $mybb->settings['userpppoptions']);
if(is_array($explodedppp))

			{

			{

				@asort($explodedppp);
$biggest = $explodedppp[count($explodedppp)-1];
// Is the selected option greater than the allowed options?

				@asort($explodedppp);
$biggest = $explodedppp[count($explodedppp)-1];
// Is the selected option greater than the allowed options?

Zeile 634Zeile 641
	 * @return boolean True when valid, false when invalid.
*/
function verify_regdate()

	 * @return boolean True when valid, false when invalid.
*/
function verify_regdate()

	{

	{

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

$regdate = intval($regdate);

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

$regdate = intval($regdate);

Zeile 648Zeile 655

/**
* Verifies if a last visit date is valid or not.


/**
* Verifies if a last visit date is valid or not.

	 *
* @return boolean True when valid, false when invalid.

	 *
* @return boolean True when valid, false when invalid.

	 */
function verify_lastvisit()
{

	 */
function verify_lastvisit()
{

Zeile 660Zeile 667
		if($lastvisit <= 0)
{
$lastvisit = TIME_NOW;

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

		}
return true;

}

		}
return true;

}


/**
* Verifies if a last active date is valid or not.


/**
* Verifies if a last active date is valid or not.

Zeile 692Zeile 699
	function verify_away()
{
global $mybb;

	function verify_away()
{
global $mybb;





		$user = &$this->data;
// If the board does not allow "away mode" or the user is marking as not away, set defaults.
if($mybb->settings['allowaway'] == 0 || $user['away']['away'] != 1)

		$user = &$this->data;
// If the board does not allow "away mode" or the user is marking as not away, set defaults.
if($mybb->settings['allowaway'] == 0 || $user['away']['away'] != 1)

		{

		{

			$user['away']['away'] = 0;
$user['away']['date'] = 0;
$user['away']['returndate'] = 0;

			$user['away']['away'] = 0;
$user['away']['date'] = 0;
$user['away']['returndate'] = 0;

Zeile 707Zeile 714
		{
list($returnday, $returnmonth, $returnyear) = explode('-', $user['away']['returndate']);
if(!$returnday || !$returnmonth || !$returnyear)

		{
list($returnday, $returnmonth, $returnyear) = explode('-', $user['away']['returndate']);
if(!$returnday || !$returnmonth || !$returnyear)

			{

			{

				$this->set_error("missing_returndate");
}
}

				$this->set_error("missing_returndate");
}
}

Zeile 721Zeile 728
	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?

Zeile 750Zeile 757
		}
return true;
}

		}
return true;
}





	/**
* Validate all user assets.
*

	/**
* Validate all user assets.
*

Zeile 794Zeile 801
			$this->verify_usergroup();
}
if($this->method == "insert" || array_key_exists('email', $user))

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

		{

		{

			$this->verify_email();

			$this->verify_email();

		}

		}

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

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

		{

		{

			$this->verify_website();

			$this->verify_website();

		}

		}

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

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

Zeile 808Zeile 815
		if($this->method == "insert" || array_key_exists('msn', $user))
{
$this->verify_msn();

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

		}

		}

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

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

		{

		{

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

Zeile 824Zeile 831
		if($this->method == "insert" || array_key_exists('options', $user))
{
$this->verify_options();

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

		}

		}

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

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

Zeile 840Zeile 847
		if($this->method == "insert" || array_key_exists('away', $user))
{
$this->verify_away();

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

		}

		}

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

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

Zeile 849Zeile 856
		{
$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 958Zeile 968
		{
$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);

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

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

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

Zeile 972Zeile 985
			{
continue;
}

			{
continue;
}

			$user['user_fields']["ufid{$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 1093Zeile 1106
		}
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 1149Zeile 1162
		{
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) 
{
return false;

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

Zeile 1161Zeile 1177
		$db->update_query("users", $this->user_update_data, "uid='{$user['uid']}'");

$cache->update_moderators();

		$db->update_query("users", $this->user_update_data, "uid='{$user['uid']}'");

$cache->update_moderators();

 
		if(isset($user['bday']))
{
$cache->update_birthdays();
}


// Maybe some userfields need to be updated?
if(is_array($user['user_fields']))


// Maybe some userfields need to be updated?
if(is_array($user['user_fields']))

Zeile 1184Zeile 1204
				}
$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.