$room_id = 0;
}
if (!empty($first_request)) {
    $full_request = 1;
}
$xml_data = array();
if (!empty($room_id) && !empty($current_user->id)) {
    if (empty($session->_s_room_id)) {
        // User is not in chat room
        $xmlwriter->setHeaderMessage('User is not in chat room');
        $xmlwriter->setHeaderStatus(100);
    } elseif ($session->_s_room_id != $room_id) {
        // User is in other room
        $xmlwriter->setHeaderMessage('User is in other room');
        $xmlwriter->setHeaderStatus(200);
    } elseif (!$room->_db_getList('id', 'id = ' . $room_id, 1)) {
        // Room does not exists (anymore)
        $xmlwriter->setHeaderMessage('Room does not exists');
        $xmlwriter->setHeaderStatus(300);
    } else {
        $xmlwriter->setHeaderStatus(0);
        $xmlwriter->setHeaderMessage('OK');
        if (!empty($first_request)) {
            $xml_data['welcome_message'] = str_replace('[ROOM]', $current_room_name, $l->g('welcome_to_chat_room'));
        }
        // Are there new messages in request?
        if (!empty($new_messages) && is_array($new_messages)) {
            // There are some new messages from user
            // Need to change online status?
            //if ($session->_s_online_status!=1) {
            //  $session->_s_setOnlineStatus(1, $l->g('online_status_1'));
}
if (!isset($password) || !is_scalar($password)) {
    $password = '';
}
if (!isset($image) || !pcpin_ctype_digit($image)) {
    $image = 0;
}
if (!empty($current_user->id) && $current_user->is_admin === 'y' && $session->_s_user_id == $current_user->id) {
    $errortext = array();
    $name = trim($name);
    $description = trim($description);
    if (empty($category_id) || !$category->_db_getList('id', 'id = ' . $category_id, 1)) {
        $errortext[] = $l->g('select_category');
    } elseif ($name == '') {
        $errortext[] = $l->g('room_name_empty');
    } elseif ($room->_db_getList('category_id = ' . $category_id, 'name LIKE ' . $name, 1)) {
        $errortext[] = str_replace('[NAME]', $name, $l->g('room_already_exists_in_category'));
    } elseif (!empty($password_protect) && !empty($change_password) && _pcpin_strlen($password) < 3) {
        $errortext[] = $l->g('password_too_short');
    }
    if (!empty($errortext)) {
        $xmlwriter->setHeaderStatus(1);
        $xmlwriter->setHeaderMessage(implode("\n", $errortext));
    } else {
        // Check image
        if (!empty($image) && $tmpdata->_db_getList('binaryfile_id', 'user_id = ' . $session->_s_user_id, 'type = 1', 1)) {
            $binaryfile_id = $tmpdata->_db_list[0]['binaryfile_id'];
            $tmpdata->_db_freeList();
        } else {
            $binaryfile_id = 0;
        }
 foreach ($categories_array as $category_id) {
     $category_id = trim($category_id);
     if (pcpin_ctype_digit($category_id) && $category->_db_getList('id', 'id = ' . $category_id, 1)) {
         // Category exists
         $categories_new[] = $category_id;
         $category->_db_freeList();
     }
 }
 $categories_new = array_unique($categories_new);
 sort($categories_new);
 // Check rooms
 $rooms_new = array();
 $rooms_array = explode(',', $rooms);
 foreach ($rooms_array as $room_id) {
     $room_id = trim($room_id);
     if (pcpin_ctype_digit($room_id) && $room->_db_getList('id', 'id = ' . $room_id, 1)) {
         // Room exists
         $rooms_new[] = $room_id;
         $room->_db_freeList();
     }
 }
 // Get categories' rooms
 if (!empty($categories_new) && $room->_db_getList('id', 'category_id IN ' . implode(',', $categories_new))) {
     foreach ($room->_db_list as $room_data) {
         $rooms_new[] = $room_data['id'];
     }
     $room->_db_freeList();
 }
 $rooms_new = array_unique($rooms_new);
 sort($rooms_new);
 // Save data
if (!isset($room_id) || !is_scalar($room_id)) {
    $room_id = 0;
}
if (!isset($stealth_mode)) {
    $stealth_mode = 'n';
}
if (!isset($password)) {
    $password = '';
}
if (!empty($current_user->id)) {
    $enter_allowed = false;
    if (empty($room_id)) {
        // No room selected
        $xmlwriter->setHeaderStatus(300);
        $xmlwriter->setHeaderMessage($l->g('error'));
    } elseif (!$room->_db_getList('id, category_id, password', 'id = ' . $room_id, 1)) {
        // Room does not exists
        $xmlwriter->setHeaderStatus(400);
        $xmlwriter->setHeaderMessage($l->g('room_not_exists'));
    } elseif ($current_user->is_admin !== 'y' && $room->_db_list[0]['password'] != '' && $room->_db_list[0]['password'] != md5(base64_decode($password)) && false === strpos(',' . $current_user->moderated_rooms . ',', ',' . $room_id . ',')) {
        // Invalid password
        $xmlwriter->setHeaderStatus(600);
        $xmlwriter->setHeaderMessage($l->g('invalid_password'));
    } else {
        $enter_allowed = true;
        $category_id = $room->_db_list[0]['category_id'];
        // Check "stealth" mode
        if ($stealth_mode == 'y') {
            if ($current_user->is_admin !== 'y' && false === strpos(',' . $current_user->moderated_rooms . ',', ',' . $room_id . ',')) {
                $stealth_mode = 'n';
            }
 *
 *    "PCPIN Chat 6" is distributed in the hope that it will be useful,
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *    GNU General Public License for more details.
 *
 *    You should have received a copy of the GNU General Public License
 *    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
if (empty($current_user->id) || $session->_s_user_id != $current_user->id) {
    header('Location: ' . PCPIN_FORMLINK . '?' . md5(microtime()));
    die;
}
_pcpin_loadClass('room');
$room = new PCPIN_Room($session);
if (!empty($session->_conf_all['default_room']) && $room->_db_getList('id', 'id = ' . $session->_conf_all['default_room'], 1)) {
    // Default room specified and exists
    $room->_db_freeList();
    if ($room->putUser($current_user->id, $session->_conf_all['default_room'])) {
        header('Location: ' . PCPIN_FORMLINK . '?s_id=' . $session->_s_id . '&inc=chat_room&ts=' . time());
        die;
    }
}
if (!empty($session->_s_room_id)) {
    // User was in chat room. Push him out.
    $room->putUser($current_user->id, 0, $session->_s_stealth_mode == 'y', 'n');
}
$_body_onload[1000000] = 'initRoomSelection(' . $session->_conf_all['updater_interval'] . ',' . '\'' . $current_user->room_selection_view . '\',' . (!empty($session->_conf_all['userlist_avatar_thumb']) && 2 == PCPIN_GD_VERSION ? 'true' : 'false') . ',' . (!empty($session->_conf_all['userlist_privileged_flags']) && 2 == PCPIN_GD_VERSION ? 'true' : 'false') . ',' . (!empty($session->_conf_all['userlist_gender_icon']) ? 'true' : 'false') . ')';
$_load_cm_user_options = true;
// Init template
_pcpin_loadClass('pcpintpl');
 /**
  * "Kill" timed out sessions, set "Away" online status for sessions with ping older than (updater_interval+N) seconds
  */
 function _s_cleanUp()
 {
     // Store current state
     $this_vars = $this->_db_getFromObject();
     // Get sessions
     $sessions = array();
     $query = $this->_db_makeQuery(2100, date('Y-m-d H:i:s', time() - 1800), date('Y-m-d H:i:s', time() - $this->_conf_all['session_timeout']), date('Y-m-d H:i:s', time() - 5));
     $result = $this->_db_query($query);
     while ($data = $this->_db_fetch($result, MYSQL_ASSOC)) {
         $sessions[] = $data;
     }
     $this->_db_freeResult($result);
     $this->_db_freeList();
     if (!empty($sessions)) {
         _pcpin_loadClass('session');
         $session = new PCPIN_Session($this, '', true);
         foreach ($sessions as $sessiondata) {
             $session->_db_setObject($sessiondata);
             $session->_s_logOut();
         }
     }
     // Delete old messages
     if (!empty($this->_conf_all['message_lifetime'])) {
         _pcpin_loadClass('message');
         $message = new PCPIN_Message($this);
         $message->deleteMessages(null, time() - $this->_conf_all['message_lifetime']);
     }
     // Unmute users
     _pcpin_loadClass('user');
     $user = new PCPIN_User($this);
     if ($user->_db_getList('id', 'global_muted_until > 0000-00-00 00:00:00', 'global_muted_until < ' . date('Y-m-d H:i:s'))) {
         $user_ids = $user->_db_list;
         $user->_db_freeList();
         foreach ($user_ids as $data) {
             // Unmute user
             $user->globalMuteUnmute($data['id'], 0);
         }
         // Add system messages
         _pcpin_loadClass('message');
         $message = new PCPIN_Message($this);
         foreach ($user_ids as $data) {
             if ($this->_db_getList('_s_room_id', '_s_user_id = ' . $data['id'], 1)) {
                 $message->addMessage(10111, 'n', 0, '', 0, 0, $data['id'] . '/0', date('Y-m-d H:i:s'), 0, '');
             }
         }
     }
     // Clean unbanned users
     if ($result = $this->_db_query($this->_db_makeQuery(2080, date('Y-m-d H:i:s')))) {
         $this->_db_freeResult($result);
     }
     // Clean not activated email addresses
     if (!empty($this->_conf_all['activate_new_emails'])) {
         _pcpin_loadClass('user');
         $user = new PCPIN_User($this);
         if ($user->_db_getList('id', 'email_new != ', 'email_new_date < ' . date('Y-m-d H:i:s', time() - 3600 * $this->_conf_all['new_email_activation_timeout']))) {
             $user_ids = $user->_db_list;
             $user->_db_freeList();
             foreach ($user_ids as $data) {
                 $user->_db_updateRow($data['id'], 'id', array('email_new' => '', 'email_new_date' => '', 'email_new_activation_code' => ''));
             }
         }
     }
     // Delete idle and/or not activated user accounts
     if (!PCPIN_SLAVE_MODE && $this->_conf_all['activate_new_accounts'] == 1 || !empty($this->_conf_all['account_pruning'])) {
         _pcpin_loadClass('user');
         $user = new PCPIN_User($this);
         $query = $this->_db_makeQuery(2060, $this->_conf_all['activate_new_accounts'] == 1 ? date('Y-m-d H:i:s', time() - 3600 * $this->_conf_all['new_account_activation_timeout']) : '', !empty($this->_conf_all['account_pruning']) ? date('Y-m-d H:i:s', time() - $this->_conf_all['account_pruning'] * 86400) : '');
         $user_ids = array();
         if ($result = $this->_db_query($query)) {
             while ($data = $this->_db_fetch($result, MYSQL_ASSOC)) {
                 $user_ids[] = $data['id'];
             }
             $this->_db_freeResult($result);
         }
         if (!empty($user_ids)) {
             foreach ($user_ids as $id) {
                 $user->deleteUser($id);
             }
         }
     }
     // Delete empty and timed out user rooms
     _pcpin_loadClass('room');
     $room = new PCPIN_Room($this);
     if ($room->_db_getList('id', 'type = u', 'users_count <= 0', 'last_ping < ' . date('Y-m-d H:i:s', time() - $this->_conf_all['empty_userroom_lifetime']))) {
         $rooms = $room->_db_list;
         $room->_db_freeList();
         foreach ($rooms as $data) {
             $room->deleteRoom($data['id']);
         }
         // Add system message
         _pcpin_loadClass('message');
         $message = new PCPIN_Message($this);
         $message->addMessage(1100, 'n', 0, '', 0, 0, '-', date('Y-m-d H:i:s'), 0, '');
     }
     // Delete old logs
     if (!empty($this->_conf_all['logging_period'])) {
         _pcpin_loadClass('message_log');
         $message_log = new PCPIN_Message_Log($this);
         $message_log->cleanUp();
     }
     // Restore current state
     $this->_db_setObject($this_vars);
 }
 /**
  * Delete category and all contained rooms
  * @param   int   $id   Category ID
  * @return  boolean TRUE on success or FALSE on error
  */
 function deleteCategory($id = 0)
 {
     $result = false;
     if (!empty($id) && $this->_db_getList('id = ' . $id, 1)) {
         // Are there rooms in this category?
         _pcpin_loadClass('room');
         $room = new PCPIN_Room($this);
         if ($room->_db_getList('id', 'category_id = ' . $id)) {
             // Delete category rooms
             $rooms = $room->_db_list;
             $room->_db_freeList();
             foreach ($rooms as $room_data) {
                 $room->deleteRoom($room_data['id']);
             }
         }
         // Update "moderated_categories" field by category moderators
         $moderators = $this->getModerators($id);
         if (!empty($moderators)) {
             _pcpin_loadClass('user');
             $user = new PCPIN_User($this);
             foreach ($moderators as $data) {
                 $user->_db_updateRow($data['id'], 'id', array('moderated_categories' => trim(str_replace(',' . $id . ',', ',', ',' . $data['moderated_categories'] . ','), ',')));
             }
         }
         // Delete category
         $this->_db_deleteRow($id);
     }
     return $result;
 }
예제 #8
0
$_is_moderator = false;
$current_nickname = '';
$current_room_name = '';
if (!empty($session->_s_user_id)) {
    $current_user->_db_loadObj($session->_s_user_id);
    if (!empty($session->_s_room_id) && $current_user->moderated_rooms != '') {
        $_is_moderator = false !== strpos(',' . $current_user->moderated_rooms . ',', ',' . $session->_s_room_id . ',');
    }
    _pcpin_loadClass('nickname');
    $nickname_ = new PCPIN_Nickname($session);
    $current_nickname = $nickname_->getDefaultNickname($current_user->id);
    unset($nickname_);
    if (!empty($session->_s_room_id)) {
        _pcpin_loadClass('room');
        $room_ = new PCPIN_Room($session);
        if ($room_->_db_getList('name', 'id = ' . $session->_s_room_id, 1)) {
            $current_room_name = $room_->_db_list[0]['name'];
        }
    }
}
if (!empty($b_id)) {
    // Binary file requested
    require_once './inc/get_binary.inc.php';
    die;
} elseif (!empty($ajax) && is_scalar($ajax)) {
    // AJAX request
    require_once './inc/ajax/_main.inc.php';
    die;
} elseif (!empty($external_url)) {
    // Redirect to an external URL
    require_once './inc/url_redirection.inc.php';
$moderated_categories = array();
// Get client session
if (is_object($session) && !empty($profile_user_id) && !empty($current_user->id) && $current_user->is_admin === 'y') {
    if ($current_user->_db_getList('moderated_categories,moderated_rooms', 'id = ' . $profile_user_id, 1)) {
        $xmlwriter->setHeaderMessage('OK');
        $xmlwriter->setHeaderStatus(0);
        $member = $current_user->_db_list[0];
        $current_user->_db_freeList();
        $room_ids = array();
        // Get moderated categories
        if (!empty($member['moderated_categories']) && $category->_db_getList('name', 'id IN ' . $member['moderated_categories'], 'name ASC')) {
            foreach ($category->_db_list as $category_data) {
                $moderated_categories[] = $category_data['name'];
            }
            $category->_db_freeList();
            if ($room->_db_getList('id', 'category_id IN ' . $member['moderated_categories'])) {
                foreach ($room->_db_list as $room_data) {
                    $room_ids[] = $room_data['id'];
                }
                $room->_db_freeList();
            }
        }
        // Get moderated rooms
        if (!empty($member['moderated_rooms']) && $room->_db_getList('id', 'id IN ' . $member['moderated_rooms'])) {
            foreach ($room->_db_list as $room_data) {
                $room_ids[] = $room_data['id'];
            }
            $room->_db_freeList();
        }
        $room_ids = array_unique($room_ids);
        if (!empty($room_ids) && $room->_db_getList('name', 'id IN ' . implode(',', $room_ids), 'name ASC')) {
// Load smiliebox
$_load_smiliebox = true;
// Default: Do not context menu user options
$_load_cm_user_options = true;
if (empty($current_user->id) || $session->_s_user_id != $current_user->id || empty($session->_s_room_id)) {
    header('Location: ' . PCPIN_FORMLINK . '?' . md5(microtime()));
    die;
}
// Delete temporary message attachments
_pcpin_loadClass('tmpdata');
$tmpdata = new PCPIN_TmpData($session);
$tmpdata->deleteUserRecords($current_user->id, 3);
// Get room background image
_pcpin_loadClass('room');
$room = new PCPIN_Room($session);
$room->_db_getList('background_image', 'id = ' . $session->_s_room_id, 1);
$background_image = $room->_db_list[0]['background_image'];
$room->_db_freeList();
// Get default avatar
_pcpin_loadClass('avatar');
$avatar = new PCPIN_Avatar($session);
$avatars = $avatar->getAvatars($current_user->id, 1);
if (!empty($avatars)) {
    $avatar_bid = $avatars[0]['binaryfile_id'];
} else {
    $avatar_bid = 0;
}
unset($avatars);
// JS files to load
$_js_files[] = './js/user.js';
$_js_files[] = './js/message_queue.js';
if (!empty($current_user->id) && !empty($category_id) && is_scalar($category_id)) {
    if (!$category->_db_getList('name, creatable_rooms', 'id = ' . $category_id, 1)) {
        // Category does not exists
        $xmlwriter->setHeaderStatus(1);
        $errortext[] = $l->g('category_not_exists');
    } elseif ($category->_db_list[0]['creatable_rooms'] == 'n' || $category->_db_list[0]['creatable_rooms'] == 'r' && $current_user->is_guest == 'y') {
        // New user room cannot be created in this category
        $xmlwriter->setHeaderStatus(1);
        $errortext[] = $l->g('user_room_create_category_error');
    } else {
        $name = trim($name);
        $description = trim($description);
        if ($name == '') {
            $xmlwriter->setHeaderStatus(1);
            $errortext[] = $l->g('room_name_empty');
        } elseif ($room->_db_getList('id', 'category_id = ' . $category_id, 'name = ' . $name)) {
            // Duplicate room name
            $xmlwriter->setHeaderStatus(1);
            $errortext[] = str_replace('[NAME]', $name, $l->g('room_already_exists_in_category'));
        }
        if (!empty($password_protect)) {
            $password = base64_decode($password);
            if (_pcpin_strlen($password) < 3) {
                $xmlwriter->setHeaderStatus(1);
                $errortext[] = $l->g('password_too_short');
            }
        }
    }
    if (empty($errortext)) {
        // Check image
        $background_image = 0;
 *
 *    "PCPIN Chat 6" is free software; you can redistribute it and/or modify
 *    it under the terms of the GNU General Public License as published by
 *    the Free Software Foundation; either version 3 of the License, or
 *    (at your option) any later version.
 *
 *    "PCPIN Chat 6" is distributed in the hope that it will be useful,
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *    GNU General Public License for more details.
 *
 *    You should have received a copy of the GNU General Public License
 *    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
_pcpin_loadClass('room');
$room = new PCPIN_Room($session);
if (!isset($room_id) || !pcpin_ctype_digit($room_id)) {
    $room_id = 0;
}
if (!empty($current_user->id) && $current_user->is_admin === 'y' && $session->_s_user_id == $current_user->id) {
    $xmlwriter->setHeaderStatus(1);
    $xmlwriter->setHeaderMessage($l->g('error'));
    if (!empty($room_id) && $room->_db_getList('name', 'id = ' . $room_id)) {
        // Room exists
        $xmlwriter->setHeaderStatus(0);
        $room_name = $room->_db_list[0]['name'];
        $xmlwriter->setHeaderMessage(str_replace('[NAME]', $room_name, $l->g('room_deleted')));
        // Delete room
        $room->deleteRoom($room_id);
    }
}
 */
_pcpin_loadClass('message');
$msg = new PCPIN_Message($session);
_pcpin_loadClass('room');
$room = new PCPIN_Room($session);
$abuses_xml = array();
if (!empty($current_user->id)) {
    $xmlwriter->setHeaderMessage('OK');
    $xmlwriter->setHeaderStatus(0);
    $messages = $msg->getNewMessages($current_user->id);
    $last_message_id = $session->_s_last_message_id;
    foreach ($messages as $message_data) {
        $last_message_id = $last_message_id < $message_data['id'] ? $message_data['id'] : $last_message_id;
        if ($message_data['type'] == 4001) {
            $msg_parts = explode('/', $message_data['body'], 5);
            if ($room->_db_getList('name', 'id = ' . $msg_parts[1], 1)) {
                $room_name = $room->_db_list[0]['name'];
                $room->_db_freeList();
            } else {
                $room_name = '-';
            }
            switch ($msg_parts[2]) {
                case '1':
                    $abuse_category = $l->g('spam');
                    break;
                case '2':
                    $abuse_category = $l->g('insult');
                    break;
                case '3':
                    $abuse_category = $l->g('adult_content');
                    break;
 } else {
     // User is not logged in yet
     $login = $current_user_set['login'];
     $_pcpin_slave_userdata_md5_password = $_pcpin_slave_userdata['password'];
     // Update user main data
     $update_args = array();
     foreach ($_pcpin_slave_userdata as $key => $val) {
         if (!is_null($val) && isset($current_user_set[$key]) && $current_user_set[$key] != $val) {
             $update_args[$key] = $val;
         }
     }
     // Moderator?
     $update_args['moderated_rooms'] = '';
     $update_args['moderated_categories'] = '';
     if ($_pcpin_slave_userdata['is_moderator'] === 'y') {
         if ($room->_db_getList('id', 'id ASC')) {
             foreach ($room->_db_list as $data) {
                 $update_args['moderated_rooms'] .= $data['id'] . ',';
             }
             $room->_db_freeList();
             $update_args['moderated_rooms'] = trim($update_args['moderated_rooms'], ',');
         }
         if ($category->_db_getList('id', 'id ASC')) {
             foreach ($category->_db_list as $data) {
                 $update_args['moderated_categories'] .= $data['id'] . ',';
             }
             $category->_db_freeList();
             $update_args['moderated_categories'] = trim($update_args['moderated_categories'], ',');
         }
     }
     $current_user->_db_updateRow($current_user_set['id'], 'id', $update_args);
if (!isset($password_protect) || !pcpin_ctype_digit($password_protect)) {
    $password_protect = 0;
}
if (!isset($change_password) || !pcpin_ctype_digit($change_password)) {
    $change_password = 0;
}
if (!isset($password) || !is_scalar($password)) {
    $password = '';
}
if (!isset($image) || !pcpin_ctype_digit($image)) {
    $image = 0;
}
if (!empty($current_user->id) && $current_user->is_admin === 'y' && $session->_s_user_id == $current_user->id) {
    $xmlwriter->setHeaderStatus(1);
    $xmlwriter->setHeaderMessage($l->g('error'));
    if (!empty($room_id) && $room->_db_getList('id = ' . $room_id)) {
        // Room exists
        $xmlwriter->setHeaderStatus(0);
        $xmlwriter->setHeaderMessage('OK');
        $room_data = $room->_db_list[0];
        $room->_db_freelist();
        switch ($action) {
            case 'change_listpos':
                if (empty($dir)) {
                    // Move up
                    if ($room->_db_getList('id,listpos', 'category_id = ' . $room_data['category_id'], 'listpos < ' . $room_data['listpos'], 'listpos DESC', 1)) {
                        $higher_room_id = $room->_db_list[0]['id'];
                        $higher_room_listpos = $room->_db_list[0]['listpos'];
                        // Update room
                        $room->updateRoom($room_id, false, true, null, null, null, null, null, null, null, null, null, $higher_room_listpos);
                        // Update higher room
예제 #16
0
    if ($_pcpin_data['online_status'] > 0) {
        $_pcpin_online_users_count++;
        $_pcpin_online_users[] = htmlspecialchars($_pcpin_data['nickname_plain']);
        $_pcpin_online_users_colored[] = $_pcpin_nickname->coloredToHTML($_pcpin_data['nickname']);
    }
    if (empty($_pcpin_data['is_guest'])) {
        $_pcpin_registered_users_count++;
        $_pcpin_registered_users[] = htmlspecialchars($_pcpin_data['nickname_plain']);
        $_pcpin_registered_users_colored[] = $_pcpin_nickname->coloredToHTML($_pcpin_data['nickname']);
    }
}
unset($_pcpin_memberlist);
unset($_pcpin_user);
unset($_pcpin_nickname);
// Get rooms
$_pcpin_rooms_count = $_pcpin_room->_db_getList('name', 'name ASC');
foreach ($_pcpin_room->_db_list as $_pcpin_data) {
    $_pcpin_rooms[] = htmlspecialchars($_pcpin_data['name']);
}
$_pcpin_room->_db_freeList();
unset($_pcpin_room);
// Close database connection
$_pcpin_init_session->_db_close();
// Delete session handler
unset($_pcpin_init_session);
// Restore original error reporting settings
error_reporting($_pcpin_old_error_reporting);
unset($_pcpin_old_error_reporting);
@ini_set('display_errors', $_pcpin_old_display_errors);
unset($_pcpin_old_display_errors);
// Restore original error handler