Exemplo n.º 1
0
 /**
  * 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'));
     }
 }