Пример #1
0
 /**
  * Put user into/out of a room
  * @param   int       $user_id          User ID
  * @param   int       $target_room_id   ID of room where to put user into
  * @param   boolean   $skip_msg         If TRUE, then system message 115 will be NOT inserted
  * @param   string    $stealth_mode     "Stealth" mode flag ("y"/"n")
  * @return  boolean TRUE on success or FALSE on error
  */
 function putUser($user_id = 0, $target_room_id = 0, $skip_msg = false, $stealth_mode = 'n')
 {
     $ok = false;
     _pcpin_loadClass('message');
     $message = new PCPIN_Message($this);
     _pcpin_loadClass('session');
     $session = new PCPIN_Session($this, '', true);
     // Get user's session
     if (!empty($user_id) && $session->_db_getList('_s_user_id = ' . $user_id, 1)) {
         // Session exists
         if ($target_room_id != $session->_db_list[0]['_s_room_id']) {
             if (!empty($session->_db_list[0]['_s_room_id'])) {
                 // Put user out of a room
                 $ok = true;
                 if ($this->_db_getList('users_count', 'id = ' . $session->_db_list[0]['_s_room_id'], 1)) {
                     $this->updateRoom($session->_db_list[0]['_s_room_id'], false, true, null, null, null, null, $this->_db_list[0]['users_count'] - 1, null, null, null, date('Y-m-d H:i:s'));
                 }
                 if (true !== $skip_msg) {
                     $message->addMessage(115, 'n', 0, '', $session->_db_list[0]['_s_room_id'], 0, $user_id . '/' . $session->_db_list[0]['_s_room_id']);
                 }
             }
             if (!empty($target_room_id)) {
                 // Put user into a room
                 if ($this->_db_getList('users_count', 'id = ' . $target_room_id, 1)) {
                     $ok = true;
                     $this->updateRoom($target_room_id, false, true, null, null, null, null, $this->_db_list[0]['users_count'] + 1, null, null, null, date('Y-m-d H:i:s'));
                 } else {
                     // Room does not exists
                     $target_room_id = 0;
                 }
                 if (true !== $skip_msg) {
                     $message->addMessage(111, 'n', 0, '', $target_room_id, 0, $user_id . '/' . $target_room_id);
                 }
             }
             // Update session
             $session->_s_updateSession($session->_db_list[0]['_s_id'], false, true, null, null, $target_room_id, null, null, null, null, !empty($target_room_id) ? date('Y-m-d H:i:s') : '', null, null, null, $stealth_mode, null, null, '0000-00-00 00:00:00', '');
             if ($session->_db_list[0]['_s_online_status'] != 1) {
                 $session->_db_setObject($session->_db_list[0]);
                 $session->_s_setOnlineStatus(1);
             }
         } else {
             $ok = true;
         }
         // Delete temporary message attachments
         _pcpin_loadClass('tmpdata');
         $tmpdata = new PCPIN_TmpData($this);
         $tmpdata->deleteUserRecords($user_id, 3);
     }
     return $ok;
 }