/** * Insert new user into database * @param string $login Login name * @param string $password Password (NOT encoded!!!) * @param string $email E-Mail address * @param int $hide_email Hide E-Mail address? (0: No, 1: Yes) * @param string $guest Flag: "y" if user is a guest, "n" if user was registered * @param string $activation_code If new account activation enabled: Activation code (MD5-encoded) * @param int $language_id Language ID. If empty: language ID from current session will be used * @return boolean TRUE on success or FALSE on error */ function newUser($login, $password = '', $email = '', $hide_email = 0, $guest = 'n', $activation_code = '', $language_id = 0) { $result = false; $this->id = 0; $login = trim($login); $email = trim($email); if ($login != '' && $password != '') { $this->id = 0; $this->login = $login; $this->password = md5($password); $this->password_new = md5(PCPIN_Common::randomString(mt_rand(100, 255))); $this->email = $email; $this->email_new = ''; $this->email_new_date = ''; $this->email_new_activation_code = ''; $this->hide_email = $hide_email; $this->joined = date('Y-m-d H:i:s'); $this->activated = $activation_code == '' ? 'y' : 'n'; $this->activation_code = $activation_code; $this->last_login = ''; $this->previous_login = ''; $this->time_online = 0; $this->date_format = $this->_conf_all['date_format']; $this->last_message_id = 0; $this->moderated_rooms = ''; $this->moderated_categories = ''; $this->is_admin = 'n'; $this->banned_by = 0; $this->banned_by_username = ''; $this->banned_until = ''; $this->banned_permanently = 'n'; $this->ban_reason = ''; $this->muted_users = ''; $this->global_muted_by = 0; $this->global_muted_by_username = ''; $this->global_muted_until = ''; $this->global_muted_permanently = 'n'; $this->global_muted_reason = ''; $this->time_zone_offset = 0; $this->is_guest = $guest; $this->show_message_time = ''; $this->outgoing_message_color = ''; $this->language_id = !empty($language_id) ? $language_id : $this->_s_language_id; $this->allow_sounds = ''; $this->room_selection_view = $this->_conf_all['room_selection_display_type']; // Insert row if ($this->_db_insertObj()) { $result = true; $this->id = $this->_db_lastInsertID(); $this_id = $this->id; // Add new nickname _pcpin_loadClass('nickname'); $nickname = new PCPIN_Nickname($this); if (!$nickname->_db_getList('id', 'nickname_plain = ' . $login, 1)) { $nickname->addNickname($this_id, '^' . $this->_conf_all['default_nickname_color'] . $login); } $this->id = $this_id; } } return $result; }
$xmlwriter->setHeaderMessage(str_replace('[LENGTH]', $session->_conf_all['nickname_length_min'], $l->g('nickname_too_short_error'))); } elseif (_pcpin_strlen($new_nickname_plain) > $session->_conf_all['nickname_length_max']) { // Nickname is too long $xmlwriter->setHeaderStatus(1); $xmlwriter->setHeaderMessage(str_replace('[LENGTH]', $session->_conf_all['nickname_length_max'], $l->g('nickname_too_long'))); } elseif ($nickname->_db_getList('id', 'nickname_plain LIKE ' . $new_nickname_plain, 1)) { // Nickname already exists $xmlwriter->setHeaderStatus(1); $xmlwriter->setHeaderMessage(str_replace('[NICKNAME]', $new_nickname_plain, $l->g('nickname_not_available'))); } elseif (true !== $badword->checkString($new_nickname_plain) || true !== $disallowed_name->checkString($new_nickname_plain) && $current_user->is_admin !== 'y') { // Nickname is not allowed $xmlwriter->setHeaderStatus(1); $xmlwriter->setHeaderMessage(str_replace('[NICKNAME]', $new_nickname_plain, $l->g('nickname_not_available'))); } else { // Nickname is free $new_nickname_id = $nickname->addNickname($profile_user_id, $new_nickname); if ($new_nickname_id > 0) { // Success $xmlwriter->setHeaderStatus(0); $xmlwriter->setHeaderMessage($l->g('nickname_added')); // Get nicknames list $nicknames = $nickname->getNicknames($profile_user_id); foreach ($nicknames as $nickname_data) { $nicknames_xml[] = array('id' => $nickname_data['id'], 'nickname' => $nickname_data['nickname'], 'nickname_plain' => $nickname_data['nickname_plain'], 'default' => $nickname_data['default']); } } else { // Failed to add nickname $xmlwriter->setHeaderStatus(1); $xmlwriter->setHeaderMessage($l->g('error')); } }