Zeile 61 | Zeile 61 |
---|
* @var array */ public $return_values = array();
|
* @var array */ public $return_values = array();
|
| /** * @var array */ var $delete_uids = array();
/** * @var int */ var $deleted_users = 0;
|
/** * Verifies if a username is valid or invalid. *
|
/** * Verifies if a username is valid or invalid. *
|
* @param boolean True when valid, false when invalid.
| * @return boolean True when valid, false when invalid.
|
*/ function verify_username() {
| */ function verify_username() {
|
Zeile 85 | Zeile 95 |
---|
if($username == '') { $this->set_error('missing_username');
|
if($username == '') { $this->set_error('missing_username');
|
return false; }
| return false; }
|
// Check if the username belongs to the list of banned usernames. if(is_banned_username($username, true))
|
// Check if the username belongs to the list of banned usernames. if(is_banned_username($username, true))
|
{
| {
|
$this->set_error('banned_username');
|
$this->set_error('banned_username');
|
return false;
| return false;
|
}
// Check for certain characters in username (<, >, &, commas and slashes) if(strpos($username, "<") !== false || strpos($username, ">") !== false || strpos($username, "&") !== false || my_strpos($username, "\\") !== false || strpos($username, ";") !== false || strpos($username, ",") !== false || !validate_utf8_string($username, false, false)) { $this->set_error("bad_characters_username");
|
}
// Check for certain characters in username (<, >, &, commas and slashes) if(strpos($username, "<") !== false || strpos($username, ">") !== false || strpos($username, "&") !== false || my_strpos($username, "\\") !== false || strpos($username, ";") !== false || strpos($username, ",") !== false || !validate_utf8_string($username, false, false)) { $this->set_error("bad_characters_username");
|
return false; }
| return false; }
|
// Check if the username is of the correct length. if(($mybb->settings['maxnamelength'] != 0 && my_strlen($username) > $mybb->settings['maxnamelength']) || ($mybb->settings['minnamelength'] != 0 && my_strlen($username) < $mybb->settings['minnamelength'])) { $this->set_error('invalid_username_length', array($mybb->settings['minnamelength'], $mybb->settings['maxnamelength']));
|
// Check if the username is of the correct length. if(($mybb->settings['maxnamelength'] != 0 && my_strlen($username) > $mybb->settings['maxnamelength']) || ($mybb->settings['minnamelength'] != 0 && my_strlen($username) < $mybb->settings['minnamelength'])) { $this->set_error('invalid_username_length', array($mybb->settings['minnamelength'], $mybb->settings['maxnamelength']));
|
return false; }
return true; }
| return false; }
return true; }
|
/** * Verifies if a usertitle is valid or invalid. *
|
/** * Verifies if a usertitle is valid or invalid. *
|
* @param boolean True when valid, false when invalid.
| * @return boolean True when valid, false when invalid.
|
*/ function verify_usertitle() {
| */ function verify_usertitle() {
|
Zeile 160 | Zeile 170 |
---|
/** * Verifies if a new password is valid or not.
|
/** * Verifies if a new password is valid or not.
|
*
| *
|
* @return boolean True when valid, false when invalid. */ function verify_password()
| * @return boolean True when valid, false when invalid. */ function verify_password()
|
Zeile 168 | Zeile 178 |
---|
global $mybb;
$user = &$this->data;
|
global $mybb;
$user = &$this->data;
|
|
|
// Always check for the length of the password. if(my_strlen($user['password']) < $mybb->settings['minpasswordlength'] || my_strlen($user['password']) > $mybb->settings['maxpasswordlength'])
|
// Always check for the length of the password. 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']));
|
$this->set_error('invalid_password_length', array($mybb->settings['minpasswordlength'], $mybb->settings['maxpasswordlength']));
|
return false; }
| return false; }
|
// Has the user tried to use their email address or username as a password?
|
// Has the user tried to use their email address or username as a password?
|
if($user['email'] == $user['password'] || $user['username'] == $user['password']) {
| if($user['email'] === $user['password'] || $user['username'] === $user['password']) {
|
$this->set_error('bad_password_security'); return false; }
// See if the board has "require complex passwords" enabled.
|
$this->set_error('bad_password_security'); return false; }
// See if the board has "require complex passwords" enabled.
|
if($mybb->settings['requirecomplexpasswords'] == 1) {
| if($mybb->settings['requirecomplexpasswords'] == 1) {
|
// Complex passwords required, do some extra checks. // First, see if there is one or more complex character(s) in the password. if(!preg_match("/^.*(?=.{".$mybb->settings['minpasswordlength'].",})(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$/", $user['password']))
| // Complex passwords required, do some extra checks. // First, see if there is one or more complex character(s) in the password. if(!preg_match("/^.*(?=.{".$mybb->settings['minpasswordlength'].",})(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$/", $user['password']))
|
Zeile 193 | Zeile 203 |
---|
$this->set_error('no_complex_characters', array($mybb->settings['minpasswordlength'])); return false; }
|
$this->set_error('no_complex_characters', array($mybb->settings['minpasswordlength'])); return false; }
|
}
| }
|
// If we have a "password2" check if they both match
|
// If we have a "password2" check if they both match
|
if(isset($user['password2']) && $user['password'] != $user['password2'])
| if(isset($user['password2']) && $user['password'] !== $user['password2'])
|
{ $this->set_error("passwords_dont_match"); return false; }
|
{ $this->set_error("passwords_dont_match"); return false; }
|
|
|
// MD5 the password $user['md5password'] = md5($user['password']);
|
// 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 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();
|
Zeile 224 | Zeile 234 |
---|
*/ function verify_usergroup() {
|
*/ function verify_usergroup() {
|
$user = &$this->data;
| |
return true; } /**
| return true; } /**
|
Zeile 256 | Zeile 265 |
---|
if(is_banned_email($user['email'], true)) { $this->set_error('banned_email');
|
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) if($mybb->settings['allowmultipleemails'] == 0 && !defined("IN_ADMINCP"))
| // Check signed up emails // 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"))
|
Zeile 267 | Zeile 276 |
---|
if(isset($user['uid'])) { $uid = $user['uid'];
|
if(isset($user['uid'])) { $uid = $user['uid'];
|
}
| }
|
if(email_already_in_use($user['email'], $uid)) { $this->set_error('email_already_in_use'); return false; }
|
if(email_already_in_use($user['email'], $uid)) { $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");
|
// 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;
| return false; }
return true;
|
}
/**
| }
/**
|
Zeile 305 | Zeile 314 |
---|
{ // Website does not start with http://, let's see if the user forgot. $website = "http://".$website;
|
{ // Website does not start with http://, let's see if the user forgot. $website = "http://".$website;
|
}
| }
|
if(!filter_var($website, FILTER_VALIDATE_URL)) { $this->set_error('invalid_website');
| if(!filter_var($website, FILTER_VALIDATE_URL)) { $this->set_error('invalid_website');
|
Zeile 378 | Zeile 387 |
---|
if($birthday['year'] != 0 && ($birthday['year'] < (date("Y")-100)) || $birthday['year'] > date("Y")) { $this->set_error("invalid_birthday");
|
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")) {
| } else if($birthday['year'] == date("Y")) {
|
Zeile 448 | Zeile 457 |
---|
* @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) {
| if(isset($user['postnum']) && $user['postnum'] < 0) {
|
Zeile 491 | Zeile 500 |
---|
$profile_fields = &$this->data['profile_fields'];
// Loop through profile fields checking if they exist or not and are filled in.
|
$profile_fields = &$this->data['profile_fields'];
// Loop through profile fields checking if they exist or not and are filled in.
|
$userfields = array(); $comma = '';
| |
// Fetch all profile fields first. $pfcache = $cache->read('profilefields');
| // Fetch all profile fields first. $pfcache = $cache->read('profilefields');
|
Zeile 507 | Zeile 514 |
---|
$profilefield['editableby'] = -1; }
|
$profilefield['editableby'] = -1; }
|
if(empty($profilefield['editableby']) || ($profilefield['editableby'] != -1 && !is_member($profilefield['editableby'], array('usergroup' => $user['usergroup'], 'additionalgroups' => $user['additionalgroups']))))
| if(!is_member($profilefield['editableby'], array('usergroup' => $user['usergroup'], 'additionalgroups' => $user['additionalgroups'])))
|
{ continue; }
| { continue; }
|
Zeile 519 | Zeile 526 |
---|
}
$profilefield['type'] = htmlspecialchars_uni($profilefield['type']);
|
}
$profilefield['type'] = htmlspecialchars_uni($profilefield['type']);
|
| $profilefield['name'] = htmlspecialchars_uni($profilefield['name']);
|
$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']}";
|
Zeile 649 | Zeile 657 |
---|
$this->verify_yesno_option($options, 'showquickreply', 1); $this->verify_yesno_option($options, 'showredirect', 1); $this->verify_yesno_option($options, 'showcodebuttons', 1);
|
$this->verify_yesno_option($options, 'showquickreply', 1); $this->verify_yesno_option($options, 'showredirect', 1); $this->verify_yesno_option($options, 'showcodebuttons', 1);
|
$this->verify_yesno_option($options, 'sourceeditor', 1);
| $this->verify_yesno_option($options, 'sourceeditor', 0); $this->verify_yesno_option($options, 'buddyrequestspm', 1); $this->verify_yesno_option($options, 'buddyrequestsauto', 0);
|
if($mybb->settings['postlayout'] == 'classic') {
| if($mybb->settings['postlayout'] == 'classic') {
|
Zeile 848 | Zeile 858 |
---|
}
/**
|
}
/**
|
* Verifies if a langage is valid for this user or not.
| * Verifies if a language is valid for this user or not.
|
* * @return boolean True when valid, false when invalid. */
| * * @return boolean True when valid, false when invalid. */
|
Zeile 864 | Zeile 874 |
---|
$this->set_error("invalid_language"); return false; }
|
$this->set_error("invalid_language"); return false; }
|
| return true; }
/** * Verifies if a style is valid for this user or not. * * @return boolean True when valid, false when invalid. */ function verify_style() { global $lang;
$user = &$this->data;
if($user['style']) { $theme = get_theme($user['style']);
if(empty($theme) || !is_member($theme['allowedgroups'], $user) && $theme['allowedgroups'] != 'all') { $this->set_error('invalid_style'); return false; } }
|
return true; }
| return true; }
|
Zeile 873 | Zeile 908 |
---|
* @return boolean True when valid, false when invalid. */ function verify_checkfields()
|
* @return boolean True when valid, false when invalid. */ function verify_checkfields()
|
{ $user = &$this->data;
| { $user = &$this->data;
|
// An invalid language has been specified? if($user['regcheck1'] !== "" || $user['regcheck2'] !== "true") { $this->set_error("invalid_checkfield"); return false; }
|
// An invalid language has been specified? if($user['regcheck1'] !== "" || $user['regcheck2'] !== "true") { $this->set_error("invalid_checkfield"); return false; }
|
| return true; }
/** * 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 */ function verify_timezone() { $user = &$this->data;
$timezones = get_supported_timezones();
if(!array_key_exists($user['timezone'], $timezones)) { $user['timezone'] = $mybb->settings['timezoneoffset']; return false; }
|
return true; }
/** * Validate all user assets.
|
return true; }
/** * Validate all user assets.
|
*
| *
|
* @return boolean True when valid, false when invalid. */ function validate_user()
| * @return boolean True when valid, false when invalid. */ function validate_user()
|
Zeile 982 | Zeile 1038 |
---|
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('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)) {
|
Zeile 990 | Zeile 1050 |
---|
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();
|
}
$plugins->run_hooks("datahandler_user_validate", $this);
| }
$plugins->run_hooks("datahandler_user_validate", $this);
|
Zeile 1008 | Zeile 1072 |
---|
/** * Inserts a user into the database.
|
/** * Inserts a user into the database.
|
| * * @return array
|
*/ function insert_user() { global $db, $cache, $plugins;
|
*/ function insert_user() { global $db, $cache, $plugins;
|
|
|
// Yes, validating is required. if(!$this->get_validated())
|
// Yes, validating is required. if(!$this->get_validated())
|
{
| {
|
die("The user needs to be validated before inserting it into the DB.");
|
die("The user needs to be validated before inserting it into the DB.");
|
}
| }
|
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;
$array = array('postnum', 'threadnum', 'avatar', 'avatartype', 'additionalgroups', 'displaygroup', 'icq', 'aim', 'yahoo', 'skype', 'google', 'bday', 'signature', 'style', 'dateformat', 'timeformat', 'notepad'); foreach($array as $value)
|
$user = &$this->data;
$array = array('postnum', 'threadnum', 'avatar', 'avatartype', 'additionalgroups', 'displaygroup', 'icq', 'aim', 'yahoo', 'skype', 'google', 'bday', 'signature', 'style', 'dateformat', 'timeformat', 'notepad'); foreach($array as $value)
|
{
| {
|
if(!isset($user[$value])) { $user[$value] = '';
| if(!isset($user[$value])) { $user[$value] = '';
|
Zeile 1059 | Zeile 1125 |
---|
"google" => $db->escape_string($user['google']), "birthday" => $user['bday'], "signature" => $db->escape_string($user['signature']),
|
"google" => $db->escape_string($user['google']), "birthday" => $user['bday'], "signature" => $db->escape_string($user['signature']),
|
"allownotices" => $user['options']['allownotices'], "hideemail" => $user['options']['hideemail'],
| "allownotices" => (int)$user['options']['allownotices'], "hideemail" => (int)$user['options']['hideemail'],
|
"subscriptionmethod" => (int)$user['options']['subscriptionmethod'],
|
"subscriptionmethod" => (int)$user['options']['subscriptionmethod'],
|
"receivepms" => $user['options']['receivepms'], "receivefrombuddy" => $user['options']['receivefrombuddy'], "pmnotice" => $user['options']['pmnotice'], "pmnotify" => $user['options']['pmnotify'], "showimages" => $user['options']['showimages'], "showvideos" => $user['options']['showvideos'], "showsigs" => $user['options']['showsigs'], "showavatars" => $user['options']['showavatars'], "showquickreply" => $user['options']['showquickreply'], "showredirect" => $user['options']['showredirect'],
| "receivepms" => (int)$user['options']['receivepms'], "receivefrombuddy" => (int)$user['options']['receivefrombuddy'], "pmnotice" => (int)$user['options']['pmnotice'], "pmnotify" => (int)$user['options']['pmnotify'], "showimages" => (int)$user['options']['showimages'], "showvideos" => (int)$user['options']['showvideos'], "showsigs" => (int)$user['options']['showsigs'], "showavatars" => (int)$user['options']['showavatars'], "showquickreply" => (int)$user['options']['showquickreply'], "showredirect" => (int)$user['options']['showredirect'],
|
"tpp" => (int)$user['options']['tpp'], "ppp" => (int)$user['options']['ppp'],
|
"tpp" => (int)$user['options']['tpp'], "ppp" => (int)$user['options']['ppp'],
|
"invisible" => $user['options']['invisible'],
| "invisible" => (int)$user['options']['invisible'],
|
"style" => (int)$user['style'], "timezone" => $db->escape_string($user['timezone']), "dstcorrection" => (int)$user['options']['dstcorrection'],
| "style" => (int)$user['style'], "timezone" => $db->escape_string($user['timezone']), "dstcorrection" => (int)$user['options']['dstcorrection'],
|
Zeile 1084 | Zeile 1150 |
---|
"timeformat" => $db->escape_string($user['timeformat']), "regip" => $db->escape_binary($user['regip']), "language" => $db->escape_string($user['language']),
|
"timeformat" => $db->escape_string($user['timeformat']), "regip" => $db->escape_binary($user['regip']), "language" => $db->escape_string($user['language']),
|
"showcodebuttons" => $user['options']['showcodebuttons'], "sourceeditor" => $user['options']['sourceeditor'], "away" => $user['away']['away'], "awaydate" => $user['away']['date'],
| "showcodebuttons" => (int)$user['options']['showcodebuttons'], "sourceeditor" => (int)$user['options']['sourceeditor'], "buddyrequestspm" => (int)$user['options']['buddyrequestspm'], "buddyrequestsauto" => (int)$user['options']['buddyrequestsauto'], "away" => (int)$user['away']['away'], "awaydate" => (int)$user['away']['date'],
|
"returndate" => $user['away']['returndate'], "awayreason" => $db->escape_string($user['away']['awayreason']), "notepad" => $db->escape_string($user['notepad']),
| "returndate" => $user['away']['returndate'], "awayreason" => $db->escape_string($user['away']['awayreason']), "notepad" => $db->escape_string($user['notepad']),
|
Zeile 1103 | Zeile 1171 |
---|
"suspendposting" => 0, "suspensiontime" => 0, "coppauser" => (int)$user['coppa_user'],
|
"suspendposting" => 0, "suspensiontime" => 0, "coppauser" => (int)$user['coppa_user'],
|
"classicpostbit" => $user['options']['classicpostbit'],
| "classicpostbit" => (int)$user['options']['classicpostbit'],
|
"usernotes" => '' );
if($user['options']['dstcorrection'] == 1)
|
"usernotes" => '' );
if($user['options']['dstcorrection'] == 1)
|
{
| {
|
$this->user_insert_data['dst'] = 1; } else if($user['options']['dstcorrection'] == 0)
| $this->user_insert_data['dst'] = 1; } else if($user['options']['dstcorrection'] == 0)
|
Zeile 1139 | Zeile 1207 |
---|
$db->insert_query("userfields", $user['user_fields'], false);
if($this->user_insert_data['referrer'] != 0)
|
$db->insert_query("userfields", $user['user_fields'], false);
if($this->user_insert_data['referrer'] != 0)
|
{
| {
|
$db->write_query(" UPDATE ".TABLE_PREFIX."users SET referrals=referrals+1
| $db->write_query(" UPDATE ".TABLE_PREFIX."users SET referrals=referrals+1
|
Zeile 1171 | Zeile 1239 |
---|
/** * Updates a user in the database.
|
/** * Updates a user in the database.
|
| * * @return bool
|
*/ function update_user() {
| */ function update_user() {
|
Zeile 1419 | Zeile 1489 |
---|
/** * Provides a method to completely delete a user. *
|
/** * Provides a method to completely delete a user. *
|
* @param array Array of user information * @param integer Whether if delete threads/posts or not * @return boolean True when successful, false if fails
| * @param array $delete_uids Array of user information * @param integer $prunecontent Whether if delete threads/posts or not * @return array
|
*/ function delete_user($delete_uids, $prunecontent=0) {
| */ function delete_user($delete_uids, $prunecontent=0) {
|
Zeile 1446 | Zeile 1516 |
---|
$plugins->run_hooks('datahandler_user_delete_start', $this);
|
$plugins->run_hooks('datahandler_user_delete_start', $this);
|
$this->delete_uids = '\''.implode('\',\'', $this->delete_uids).'\'';
| $this->delete_uids = implode(',', $this->delete_uids);
|
$this->delete_content();
// Delete the user
|
$this->delete_content();
// Delete the user
|
$query = $db->delete_query('users', 'uid IN('.$this->delete_uids.')'); $this->deleted_users = (int)$db->affected_rows($query);
| $query = $db->delete_query('users', "uid IN({$this->delete_uids})"); $this->deleted_users = $db->affected_rows($query);
|
// Are we removing the posts/threads of a user? if((int)$prunecontent == 1) { $this->delete_posts();
|
// Are we removing the posts/threads of a user? if((int)$prunecontent == 1) { $this->delete_posts();
|
| $db->delete_query('announcements', "uid IN({$this->delete_uids})");
|
} else { // We're just updating the UID
|
} else { // We're just updating the UID
|
$db->update_query('posts', array('uid' => 0), 'uid IN('.$this->delete_uids.')'); $db->update_query('threads', array('uid' => 0), 'uid IN('.$this->delete_uids.')');
| $db->update_query('pollvotes', array('uid' => 0), "uid IN({$this->delete_uids})"); $db->update_query('posts', array('uid' => 0), "uid IN({$this->delete_uids})"); $db->update_query('threads', array('uid' => 0), "uid IN({$this->delete_uids})"); $db->update_query('attachments', array('uid' => 0), "uid IN({$this->delete_uids})"); $db->update_query('announcements', array('uid' => 0), "uid IN({$this->delete_uids})");
|
}
|
}
|
| $db->update_query('privatemessages', array('fromid' => 0), "fromid IN({$this->delete_uids})"); $db->update_query('users', array('referrer' => 0), "referrer IN({$this->delete_uids})");
|
// Update thread ratings $query = $db->query("
| // Update thread ratings $query = $db->query("
|
Zeile 1482 | Zeile 1559 |
---|
$db->update_query("threads", $update_thread, "tid='{$rating['tid']}'"); }
|
$db->update_query("threads", $update_thread, "tid='{$rating['tid']}'"); }
|
$db->delete_query('threadratings', 'uid IN('.$this->delete_uids.')');
| $db->delete_query('threadratings', "uid IN({$this->delete_uids})");
|
// Update forums & threads if user is the lastposter
|
// Update forums & threads if user is the lastposter
|
$db->update_query('forums', array('lastposteruid' => 0), 'lastposteruid IN('.$this->delete_uids.')'); $db->update_query('threads', array('lastposteruid' => 0), 'lastposteruid IN('.$this->delete_uids.')');
$cache->update_banned(); $cache->update_moderators();
// Update forum stats update_stats(array('numusers' => '-'.(int)$this->deleted_users));
| $db->update_query('forums', array('lastposteruid' => 0), "lastposteruid IN({$this->delete_uids})"); $db->update_query('threads', array('lastposteruid' => 0), "lastposteruid IN({$this->delete_uids})");
// Update forum stats update_stats(array('numusers' => '-'.$this->deleted_users));
|
$this->return_values = array( "deleted_users" => $this->deleted_users );
|
$this->return_values = array( "deleted_users" => $this->deleted_users );
|
// Update reports cache
| $plugins->run_hooks("datahandler_user_delete_end", $this);
// Update cache $cache->update_banned(); $cache->update_moderators(); $cache->update_forumsdisplay();
|
$cache->update_reportedcontent();
|
$cache->update_reportedcontent();
|
| |
$cache->update_awaitingactivation();
|
$cache->update_awaitingactivation();
|
$plugins->run_hooks("datahandler_user_delete_end", $this);
| |
return $this->return_values;
|
return $this->return_values;
|
}
/** * Provides a method to delete an users content * * @param array Array of user ids, false if they're already set (eg when using the delete_user function) */
| }
/** * Provides a method to delete users' content * * @param array|bool $delete_uids Array of user ids, false if they're already set (eg when using the delete_user function) */
|
function delete_content($delete_uids=false) {
|
function delete_content($delete_uids=false) {
|
global $db, $plugins;
| 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);
|
foreach($this->delete_uids as $key => $uid) { if(!$uid || is_super_admin($uid) || $uid == $mybb->user['uid']) { // Remove super admins unset($this->delete_uids[$key]); } } $this->delete_uids = '\''.implode('\',\'', $this->delete_uids).'\''; }
$plugins->run_hooks('datahandler_user_delete_content', $this);
$db->delete_query('userfields', 'ufid IN('.$this->delete_uids.')'); $db->delete_query('privatemessages', 'uid IN('.$this->delete_uids.')'); $db->delete_query('events', 'uid IN('.$this->delete_uids.')'); $db->delete_query('moderators', 'id IN('.$this->delete_uids.') AND isgroup=\'0\''); $db->delete_query('forumsubscriptions', 'uid IN('.$this->delete_uids.')'); $db->delete_query('threadsubscriptions', 'uid IN('.$this->delete_uids.')'); $db->delete_query('sessions', 'uid IN('.$this->delete_uids.')'); $db->delete_query('banned', 'uid IN('.$this->delete_uids.')'); $db->delete_query('joinrequests', 'uid IN('.$this->delete_uids.')'); $db->delete_query('awaitingactivation', 'uid IN('.$this->delete_uids.')'); $db->delete_query('warnings', 'uid IN('.$this->delete_uids.')'); $db->delete_query('reputation', 'uid IN('.$this->delete_uids.') OR adduid IN('.$this->delete_uids.')'); $db->delete_query('posts', 'uid IN('.$this->delete_uids.') AND visible=\'-2\''); $db->delete_query('threads', 'uid IN('.$this->delete_uids.') AND visible=\'-2\''); $db->delete_query('moderators', 'id IN('.$this->delete_uids.') AND isgroup=\'0\'');
| foreach($this->delete_uids as $key => $uid) { if(!$uid || is_super_admin($uid) || $uid == $mybb->user['uid']) { // Remove super admins unset($this->delete_uids[$key]); } } $this->delete_uids = implode(',', $this->delete_uids); }
$plugins->run_hooks('datahandler_user_delete_content', $this);
$db->delete_query('userfields', "ufid IN({$this->delete_uids})"); $db->delete_query('privatemessages', "uid IN({$this->delete_uids})"); $db->delete_query('events', "uid IN({$this->delete_uids})"); $db->delete_query('moderators', "id IN({$this->delete_uids}) AND isgroup = 0"); $db->delete_query('forumsubscriptions', "uid IN({$this->delete_uids})"); $db->delete_query('threadsubscriptions', "uid IN({$this->delete_uids})"); $db->delete_query('forumsread', "uid IN({$this->delete_uids})"); $db->delete_query('threadsread', "uid IN({$this->delete_uids})"); $db->delete_query('adminviews', "uid IN({$this->delete_uids})"); $db->delete_query('adminoptions', "uid IN({$this->delete_uids})"); $db->delete_query('adminsessions', "uid IN({$this->delete_uids})"); $db->delete_query('sessions', "uid IN({$this->delete_uids})"); $db->delete_query('banned', "uid IN({$this->delete_uids})"); $db->delete_query('joinrequests', "uid IN({$this->delete_uids})"); $db->delete_query('groupleaders', "uid IN({$this->delete_uids})"); $db->delete_query('awaitingactivation', "uid IN({$this->delete_uids})"); $db->delete_query('warnings', "uid IN({$this->delete_uids})"); $db->delete_query('reputation', "uid IN({$this->delete_uids}) OR adduid IN({$this->delete_uids})"); $db->delete_query('buddyrequests', "uid IN({$this->delete_uids}) OR touid IN({$this->delete_uids})"); $db->delete_query('posts', "uid IN({$this->delete_uids}) AND visible = -2"); $db->delete_query('threads', "uid IN({$this->delete_uids}) AND visible = -2");
|
// Delete reports made to the profile or reputation of the deleted users (i.e. made by them)
|
// Delete reports made to the profile or reputation of the deleted users (i.e. made by them)
|
$db->delete_query('reportedcontent', 'type=\'reputation\' AND id3 IN('.$this->delete_uids.') OR type=\'reputation\' AND id2 IN('.$this->delete_uids.')'); $db->delete_query('reportedcontent', 'type=\'profile\' AND id IN('.$this->delete_uids.')');
| $db->delete_query('reportedcontent', "type='reputation' AND id3 IN({$this->delete_uids}) OR type='reputation' AND id2 IN({$this->delete_uids})"); $db->delete_query('reportedcontent', "type='profile' AND id IN({$this->delete_uids})");
|
// Update the reports made by the deleted users by setting the uid to 0
|
// Update the reports made by the deleted users by setting the uid to 0
|
$db->update_query('reportedcontent', array('uid' => 0), 'uid IN('.$this->delete_uids.')');
| $db->update_query('reportedcontent', array('uid' => 0), "uid IN({$this->delete_uids})");
|
// Remove any of the user(s) uploaded avatars
|
// Remove any of the user(s) uploaded avatars
|
$query = $db->simple_select('users', 'avatar', 'uid IN ('.$this->delete_uids.') AND avatartype=\'upload\'');
| $query = $db->simple_select('users', 'avatar', "uid IN({$this->delete_uids}) AND avatartype='upload'");
|
while($avatar = $db->fetch_field($query, 'avatar')) { $avatar = substr($avatar, 2, -20); @unlink(MYBB_ROOT.$avatar); }
|
while($avatar = $db->fetch_field($query, 'avatar')) { $avatar = substr($avatar, 2, -20); @unlink(MYBB_ROOT.$avatar); }
|
| |
}
/** * Provides a method to delete an users posts and threads *
|
}
/** * Provides a method to delete an users posts and threads *
|
* @param array Array of user ids, false if they're already set (eg when using the delete_user function)
| * @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)
|
*/ function delete_posts($delete_uids=false)
|
{ global $db, $plugins;
| { global $db, $plugins, $mybb;
|
if($delete_uids != false) {
| if($delete_uids != false) {
|
Zeile 1590 | Zeile 1671 |
---|
} }
|
} }
|
$this->delete_uids = '\''.implode('\',\'', $this->delete_uids).'\'';
| $this->delete_uids = implode(',', $this->delete_uids);
|
}
require_once MYBB_ROOT.'inc/class_moderation.php';
|
}
require_once MYBB_ROOT.'inc/class_moderation.php';
|
$moderation = new Moderation();
$plugins->run_hooks('datahandler_user_delete_posts', $this);
| $moderation = new Moderation();
$plugins->run_hooks('datahandler_user_delete_posts', $this);
|
// Threads
|
// Threads
|
$query = $db->simple_select('threads', 'tid', 'uid IN('.$this->delete_uids.')');
| $query = $db->simple_select('threads', 'tid', "uid IN({$this->delete_uids})");
|
while($tid = $db->fetch_field($query, 'tid'))
|
while($tid = $db->fetch_field($query, 'tid'))
|
{
| {
|
$moderation->delete_thread($tid);
|
$moderation->delete_thread($tid);
|
}
| }
|
// Posts
|
// Posts
|
$pids = array(); $query = $db->simple_select('posts', 'pid', 'uid IN('.$this->delete_uids.')');
| $query = $db->simple_select('posts', 'pid', "uid IN({$this->delete_uids})");
|
while($pid = $db->fetch_field($query, 'pid'))
|
while($pid = $db->fetch_field($query, 'pid'))
|
{
| {
|
$moderation->delete_post($pid);
|
$moderation->delete_post($pid);
|
$pids[] = (int)$pid; }
// Delete Reports made to users's posts/threads if(!empty($pids)) { $db->delete_query('reportedcontent', 'type=\'posts\' AND id IN('.implode(',', $pids).')');
| |
} }
/**
|
} }
/**
|
* Provides a method to clear an users profile (note that this doesn't delete the custom profilefields)
| * Provides a method to clear an users profile
|
*
|
*
|
* @param array Array of user ids, false if they're already set (eg when using the delete_user function) * @param int The new usergroup if the users should be moved (additional usergroups are always removed)
| * @param array|bool $delete_uids Array of user ids, false if they're already set (eg when using the delete_user function) * @param int $gid The new usergroup if the users should be moved (additional usergroups are always removed)
|
*/ function clear_profile($delete_uids=false, $gid=0) {
|
*/ function clear_profile($delete_uids=false, $gid=0) {
|
global $db, $plugins;
| global $db, $plugins, $mybb;
|
// delete_uids isn't a nice name, but it's used as the functions above use the same if($delete_uids != false)
| // delete_uids isn't a nice name, but it's used as the functions above use the same if($delete_uids != false)
|
Zeile 1645 | Zeile 1718 |
---|
} }
|
} }
|
$this->delete_uids = '\''.implode('\',\'', $this->delete_uids).'\'';
| $this->delete_uids = implode(',', $this->delete_uids);
|
}
$update = array(
| }
$update = array(
|
Zeile 1664 | Zeile 1737 |
---|
"additionalgroups" => "", "displaygroup" => 0, "signature" => "",
|
"additionalgroups" => "", "displaygroup" => 0, "signature" => "",
|
"avatar" => ""
| "avatar" => "", 'avatardimensions' => '', 'avatartype' => ''
|
);
if($gid > 0) { $update["usergroup"] = (int)$gid;
|
);
if($gid > 0) { $update["usergroup"] = (int)$gid;
|
| |
}
$plugins->run_hooks('datahandler_user_clear_profile', $this);
|
}
$plugins->run_hooks('datahandler_user_clear_profile', $this);
|
$db->update_query("users", $update, 'uid IN('.$this->delete_uids.')');
| $db->update_query("users", $update, "uid IN({$this->delete_uids})"); $db->delete_query('userfields', "ufid IN({$this->delete_uids})");
|
} }
| } }
|