GIF89a;
Direktori : /home/serb/public_html/freichat/server/drivers/ |
Current File : /home/serb/public_html/freichat/server/drivers/Custom.php |
<?php require 'base.php'; class Custom extends driver_base { public function __construct($db) { //parent::__construct(); $this->db = $db; } public function get_id() { $id = $this->session_id; if (isset($_COOKIE[$this->use_cookie]) && $_COOKIE[$this->use_cookie] != null) { $id = $_COOKIE[$this->use_cookie]; } if ($_SESSION[$this->uid . 'xhash'] == null) $_SESSION[$this->uid . 'xhash'] = md5( $_COOKIE[$this->use_cookie] . $this->uid ); return $id; } //------------------------------------------------------------------------------ public function getDBdata($session_id, $first) { $this->session_id = $session_id; if ($session_id == null && $this->use_cookie) { $session_id = $this->get_id(); } if ($session_id != null) { $userID = strip_tags($session_id); $_SESSION[$this->uid . 'is_guest'] = 0; } else { $_SESSION[$this->uid . 'is_guest'] = 1; $_SESSION[$this->uid . 'usr_name'] = $_SESSION[$this->uid . 'gst_nam']; $_SESSION[$this->uid . 'usr_ses_id'] = $_SESSION[$this->uid . 'gst_ses_id']; } if (($_SESSION[$this->uid . 'time'] < $this->online_time || isset($_SESSION[$this->uid . 'usr_name']) == false || $first == 'false') && $_SESSION[$this->uid . 'is_guest'] == 0) { //To consume less resources , now the query is made only once in 15 seconds if ($this->pdo_driver == "sqlsrv") { $query = "SELECT DISTINCT TOP 1 " . $this->row_username . "," . $this->row_userid . " FROM " . DBprefix . $this->usertable . " WHERE " . $this->row_userid . "=?"; } else { $query = "SELECT DISTINCT " . $this->row_username . "," . $this->row_userid . " FROM " . DBprefix . $this->usertable . " WHERE " . $this->row_userid . "=? LIMIT 1"; } $res_obj = $this->db->prepare($query); $res_obj->execute(array($userID)); // var_dump($res_obj); $res = $res_obj->fetchAll(); if ($res == null) { $this->freichat_debug("Incorrect Query : " . $query . " \n session id: " . $session_id . "\n PDO error: " . print_r($this->db->errorInfo(), true)); $_SESSION[$this->uid . 'is_guest'] = 1; $_SESSION[$this->uid . 'usr_name'] = $_SESSION[$this->uid . 'gst_nam']; $_SESSION[$this->uid . 'usr_ses_id'] = $_SESSION[$this->uid . 'gst_ses_id']; } foreach ($res as $result) { if (isset($result[$this->row_username])) { //To avoid undefined index error. Because empty results were shown sometimes $_SESSION[$this->uid . 'usr_name'] = $result[$this->row_username]; $_SESSION[$this->uid . 'usr_ses_id'] = $result[$this->row_userid]; } } }/* else { $this->freichat_debug("Wrong method defined!"); }*/ } //------------------------------------------------------------------------------ public function linkprofile_url($result, $r_path, $def_avatar) { $iden = $result['profile_iden']; //additional data $id = $result['session_id']; $str = "<span id = 'freichat_profile_link_" . $id . "' class='freichat_linkprofile_s'>"; $path = "<a href='" . $r_path . "index.php?userid=" . $id . "'&task=viewprofile>"; $str = $str . $path . "<img title = '" . $this->frei_trans['profilelink'] . "' class ='freichat_linkprofile' src='" . $def_avatar . "' alt='view' /> </a></span>"; //return $str; return ''; } //------------------------------------------------------------------------------ //AVATAR_URL_START public function avatar_url($res) { $root = 'http://localhost/j3/images/comprofiler'; $avatar = $res[$this->avatar_field_name]; $avatar = str_replace(' ','%20',$avatar); if (strpos($avatar, 'http://') === FALSE && strpos($avatar, 'https://') === FALSE) { $slash = '/'; if($avatar[0] == '/') $slash = ''; return $root.$slash.$avatar; }else{ return $avatar; } } //AVATAR_URL_END //------------------------------------------------------------------------------ public function getList() { $user_list = null; if ($this->show_name == 'guest') { $user_list = $this->get_guests(); } else if ($this->show_name == 'user') { $user_list = $this->get_users(); } else if ($this->show_name == 'buddy') { $user_list = $this->get_buddies(); } else { $this->freichat_debug('USER parameters for show_name are wrong.'); } return $user_list; } //------------------------------------------------------------------------------ public function get_guests() { //do not delete below comment //CUSTOM_GUESTS_QUERY_START $query = "SELECT DISTINCT f.status_mesg,f.username,f.session_id,f.status,f.guest,f.in_room FROM frei_session AS f WHERE f.time>" . $this->online_time2 . " AND f.session_id!=" . $_SESSION[$this->uid . 'usr_ses_id'] . " AND f.status!=2 AND f.status!=0"; //CUSTOM_GUESTS_QUERY_END //do not delete above comment $list = $this->db->query($query)->fetchAll(); return $list; } //------------------------------------------------------------------------------ public function get_users() { //do not delete below comment //CUSTOM_USERS_QUERY_START $query = "SELECT DISTINCT f.status_mesg,f.username,f.session_id,f.status,f.guest,f.in_room FROM frei_session AS f WHERE f.time>" . $this->online_time2 . " AND f.session_id!=" . $_SESSION[$this->uid . 'usr_ses_id'] . " AND f.status!=2 AND f.status!=0 AND f.guest=0"; //CUSTOM_USERS_QUERY_END //do not delete above comment $list = $this->db->query($query)->fetchAll(); return $list; } //------------------------------------------------------------------------------ public function get_buddies() { //do not delete below comment //CUSTOM_BUDDIES_QUERY_START $query = "SELECT DISTINCT f.status_mesg,f.username,f.session_id,f.status,f.guest,f.in_room FROM frei_session AS f WHERE f.time>" . $this->online_time2 . " AND f.session_id!=" . $_SESSION[$this->uid . 'usr_ses_id'] . " AND f.status!=2 AND f.status!=0 AND f.guest=0"; //CUSTOM_BUDDIES_QUERY_END //do not delete above comment $list = $this->db->query($query)->fetchAll(); return $list; } //------------------------------------------------------------------------------ public function load_driver() { //define("DBprefix", $this->db_prefix); $session_id = $this->options['id']; $custom_mesg = $this->options['custom_mesg']; $first = $this->options['first']; // 1. Connect The DB // DONE // 2. Basic Build the blocks $this->createFreiChatXsession(); // 3. Get Required Data from client DB $this->getDBdata($session_id, $first); $this->check_ban(); // 4. Insert user data in FreiChatX Table Or Recreate Him if necessary $this->createFreiChatXdb(); // 5. Update user data in FreiChatX Table $this->updateFreiChatXdb($first, $custom_mesg); // 6. Delete user data in FreiChatX Table $this->deleteFreiChatXdb(); // 7. Get Appropriate UserData from FreiChatX Table if ($this->usr_list_wanted == true) { $result = $this->getList(); return $result; } // 8. Send The final Data back return true; } }