if (!defined('PCPIN_NO_SESSION') && empty($_GET['external_url'])) {
    _pcpin_loadClass('version');
    $_pcpin_version = new PCPIN_Version($_pcpin_init_session);
    if ($_pcpin_version->_db_getList('version', 1)) {
        define('PCPIN_VERSION', number_format($_pcpin_version->_db_list[0]['version'], 2, '.', ''));
        $_pcpin_version->_db_freeList();
        unset($_pcpin_version);
    } else {
        define('PCPIN_VERSION', '0.00');
    }
}
// Load language
if (!defined('PCPIN_NO_SESSION')) {
    if (empty($_GET['b_id']) && empty($_GET['external_url'])) {
        _pcpin_loadClass('language');
        $l = new PCPIN_Language($_pcpin_init_session);
        $_pcpin_set_language = $_pcpin_init_session->_s_language_id;
        if (!empty($_pcpin_init_session->_conf_all['allow_language_selection']) && !empty($_POST['language_id'])) {
            $_pcpin_set_language = $_POST['language_id'];
        }
        if (true !== $l->setLanguage($_pcpin_set_language)) {
            PCPIN_Common::dieWithError(-1, '<b>Fatal error</b>: Failed to load language');
        }
        if (!empty($_pcpin_init_session->_s_id) && $l->id != $_pcpin_init_session->_s_language_id) {
            $_pcpin_init_session->_s_updateSession($_pcpin_init_session->_s_id, true, true, $l->id);
        }
        unset($_pcpin_set_language);
    }
}
/**
 * Strip magic quotes from GPC vars and extract them into the global scope.
 /**
  * Create new session
  * @param   int       $user_id            Optional ID of session owner user
  * @param   int       $last_message_id    ID of last message received by session owner
  * @param   int       $language_id        Optional. Selected language. If empty, then default language will be used.
  * @param   string    $backend_login      Optional. 'y', if user is Administrator and logged directly into Admin Backend.
  */
 function _s_newSession($user_id = 0, $last_message_id = 0, $language_id = 0, $backend_login = '******')
 {
     $ok = false;
     if ($backend_login !== 'y' && $backend_login !== 'n') {
         $backend_login = '******';
     }
     $max_attempts = 100;
     do {
         // Generate new session ID
         $this->_s_id = PCPIN_Common::randomString(PCPIN_SID_LENGTH, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789');
         // Check new session ID
         if (!$this->_db_getList('_s_id', '_s_id = ' . $this->_s_id, 1)) {
             // New session ID is unique
             // Check language
             _pcpin_loadClass('language');
             $language = new PCPIN_Language($this);
             if (empty($this->_conf_all['allow_language_selection']) || 0 == ($language_id = $language->checkLanguage($language_id))) {
                 $language_id = $this->_conf_all['default_language'];
             }
             // Set all object properties up
             $this->_s_ip = PCPIN_CLIENT_IP;
             $this->_s_client_agent_name = PCPIN_CLIENT_AGENT_NAME;
             $this->_s_client_agent_version = PCPIN_CLIENT_AGENT_VERSION;
             $this->_s_client_os = PCPIN_CLIENT_OS;
             $this->_s_created = date('Y-m-d H:i:s');
             $this->_s_last_ping = date('Y-m-d H:i:s');
             $this->_s_language_id = $language_id;
             $this->_s_user_id = $user_id;
             $this->_s_security_code = md5(PCPIN_Common::randomString(mt_rand(100, 255)));
             $this->_s_security_code_img = '';
             $this->_s_room_id = 0;
             $this->_s_room_date = '';
             $this->_s_last_message_id = $last_message_id;
             $this->_s_last_sent_message_time = '0000-00-00 00:00:00';
             $this->_s_last_sent_message_hash = '';
             $this->_s_last_sent_message_repeats_count = 0;
             $this->_s_online_status = 1;
             $this->_s_online_status_message = '';
             $this->_s_kicked = 'n';
             $this->_s_stealth_mode = 'n';
             $this->_s_backend = $backend_login;
             $this->_s_page_unloaded = 'n';
             // Save session into database
             $ok = $this->_db_insertObj();
         }
         $max_attempts--;
     } while ($ok !== true && $max_attempts > 0);
     $this->_db_freeList();
     if (!$ok) {
         PCPIN_Common::dieWithError(-1, '<b>Fatal error</b>: Failed to create new session');
     }
 }
 *    You should have received a copy of the GNU General Public License
 *    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
$new_language_id = 0;
if (!isset($src_language) || !is_scalar($src_language)) {
    $src_language = '';
}
if (!isset($dst_language) || !is_scalar($dst_language)) {
    $dst_language = '';
}
if (is_object($session) && !empty($current_user->id) && $current_user->is_admin === 'y') {
    $src_language = strtolower(trim($src_language));
    $dst_language = strtolower(trim($dst_language));
    // Check language availability
    if (!$l->_db_getList('id', 'iso_name = ' . $src_language, 1) || $l->_db_getList('id', 'iso_name = ' . $dst_language, 1)) {
        $xmlwriter->setHeaderMessage($l->g('error'));
        $xmlwriter->setHeaderStatus(1);
    } else {
        $lang = new PCPIN_Language($session);
        if ($lang->copyLanguage($src_language, $dst_language)) {
            $new_language_id = $lang->id;
            unset($lang);
            $xmlwriter->setHeaderMessage('OK');
            $xmlwriter->setHeaderStatus(0);
        } else {
            $xmlwriter->setHeaderMessage($l->g('error'));
            $xmlwriter->setHeaderStatus(1);
        }
    }
}
$xmlwriter->setData(array('language_id' => $new_language_id));
             if (!empty($binaryfile->id)) {
                 _pcpin_loadClass('tmpdata');
                 $tmpdata = new PCPIN_TmpData($session);
                 $tmpdata->_db_deleteRowMultiCond(array('user_id' => $current_user->id, 'type' => 4));
                 $tmpdata->addRecord(4, $current_user->id, $binaryfile_id, $filename);
             }
         }
     }
     break;
 case 'language_file':
     // Language file
     if ($current_user->is_admin !== 'y') {
         break;
     }
     $language_id = 0;
     $l2 = new PCPIN_Language($session);
     $import_status = $l2->importLanguage(file_get_contents($f_data['tmp_name']), $language_id);
     unset($l2);
     if ($import_status == 0 && $language_id > 0) {
         // Language imported
         $l->_db_getList('name,local_name', 'id = ' . $language_id, 1);
         $upload_status = array('code' => 0, 'message' => str_replace('[NAME]', $l->_db_list[0]['name'] . ' (' . $l->_db_list[0]['local_name'] . ')', $l->g('language_import_success')));
         $l->_db_freeList();
     } else {
         // Invalid language file
         switch ($import_status) {
             case 10:
             default:
                 $upload_status = array('code' => 1000, 'message' => $l->g('invalid_language_file'));
                 break;
             case 100:
 *
 *    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($set_language_id) || !is_scalar($set_language_id)) {
    $set_language_id = $session->_s_language_id;
}
if (empty($profile_user_id) || $profile_user_id != $current_user->id && $current_user->is_admin !== 'y') {
    $profile_user_id = $current_user->id;
}
if ($profile_user_id != $current_user->id) {
    $profile_user = new PCPIN_User($session);
    $profile_user->_db_loadObj($profile_user_id);
} else {
    $profile_user =& $current_user;
}
if (is_object($session) && !empty($profile_user->id)) {
    $xmlwriter->setHeaderMessage('OK');
    $xmlwriter->setHeaderStatus(0);
    if (!empty($session->_conf_all['allow_language_selection'])) {
        _pcpin_loadClass('language');
        $profile_language = new PCPIN_Language($session);
        if ($set_language_id == $profile_language->checkLanguage($set_language_id)) {
            $profile_user->language_id = $set_language_id;
            $profile_user->_db_updateObj($profile_user->id, 'id');
            if ($profile_user_id == $session->_s_user_id) {
                $session->_s_updateSession($session->_s_id, true, true, $set_language_id);
            }
        }
    }
}