GIF89a;
| Direktori : /home/serb/public_html/freichat/server/drivers/ |
| Current File : /home/serb/public_html/freichat/server/drivers/base.php |
<?php
define("DBprefix", $this->db_prefix);
class driver_base {
public $db; //PDO connection
public $uid; //SESSION uniq id
public $permanent_name; //Unique guest name
public $permanent_id; //Unique id
public $online_time; //current_time - 10
public $online_time2; //current_time - 80
public $time_string; //current_time
public $show_name; //registered or guest or buddy option
public $usr_list_wanted; //User list wanted or not
public $db_prefix; //Table prefix
public $displayname; //username or nickname option
public $frei_trans; //Language Translation
public $debug; //Debug enabled or disabled
public $update_usr_info; //Whether user info has to be updated for this request
public $url; //URL to freichat/server/freichat.php
public $options; //All the options passed by freichat.php
public $driver; //current driver name
public $to_freichat_path; //Path to freichat folder inside CMS dir
public $long_polling; //long polling method
// Custom driver variables
public $usertable;
public $row_username;
public $row_userid;
public $banned = false;
public $is_avatar = false;
public $user_id;
public $x_config;
public $ug_ids;
public $event;
public $avatar_field_name;
public $use_cookie; //to get id from cookie or not
public $pdo_driver; //pdo driver being used for connection
public function __construct() {
}
public function get_id() {
return $this->options['id'];
}
public function createFreiChatXsession() {
//Create a Premanent Session as a reference to recognize when user loggs in or out [I dont know why i am doing this recognizing thing but when i was solving issues regarding sessions and updating tables it automatically got developed]
if (!isset($_SESSION[$this->uid . 'gst_nam'])) { //To check if guest name is previously created to avoid multiple guest names for a single user
$_SESSION[$this->uid . 'gst_nam'] = $this->permanent_name;
$_SESSION[$this->uid . 'gst_ses_id'] = $this->permanent_id;
$_SESSION[$this->uid . 'time'] = time();
}
}
//------------------------------------------------------------------------------
public function createFreiChatXdb() {
if (!isset($_SESSION[$this->uid . 'isset_freichatx']) || $_SESSION[$this->uid . 'time'] < $this->time_string - 100) { //To check if session is created or not
$query = "INSERT INTO frei_session (username,session_id,time,permanent_id,status,status_mesg,guest)
VALUES (:username,:sid,:time,:pid,:status,:status_mesg,:guest)";
$stmt = $this->db->prepare($query);
$stmt->execute(array(
":username" => str_replace("amp;", "",$_SESSION[$this->uid . 'usr_name']),
":sid" => $_SESSION[$this->uid . 'usr_ses_id'],
":time" => $this->time_string,
":pid" => $_SESSION[$this->uid . 'gst_ses_id'],
":status" => 1,
":status_mesg" => $this->frei_trans['default_status'],
":guest" => $_SESSION[$this->uid . 'is_guest']
));
$this->freichat_debug('Inserted the user with the following data :: Username = ' . $_SESSION[$this->uid . 'usr_name'] . ' And ID = ' . $_SESSION[$this->uid . 'usr_ses_id'] . ' Default status = ' . $this->frei_trans['default_status']);
$_SESSION[$this->uid . 'time'] = time();
$_SESSION[$this->uid . 'isset_freichatx'] = 0;
}
}
//------------------------------------------------------------------------------
public function updateFreiChatXdb($first, $custom_mesg) {
if ($_SESSION[$this->uid . 'time'] < $this->online_time || isset($_SESSION[$this->uid . 'usr_name']) == false || $first == 'false' || $this->update_usr_info === true) { //To update old session as well as table
$query = "UPDATE frei_session
SET
username= :username,
session_id= :sid,
time= :time,
status_mesg= :status_mesg,
guest= :guest,
in_room= :in_room
WHERE permanent_id= :pid";
$this->db->query($query);
$stmt = $this->db->prepare($query);
$stmt->execute(array(
":username" => str_replace("amp;", "",$_SESSION[$this->uid . 'usr_name']),
":sid" => $_SESSION[$this->uid . 'usr_ses_id'],
":time" => $this->time_string,
":status_mesg" => $_SESSION[$this->uid . 'custom_mesg'],
":guest" => $_SESSION[$this->uid . 'is_guest'],
":in_room" => $_SESSION[$this->uid . 'in_room'],
":pid" => $_SESSION[$this->uid . 'gst_ses_id'],
));
$_SESSION[$this->uid . 'time'] = time();
} else {
$_SESSION[$this->uid . 'isset_freichatx'] = $_SESSION[$this->uid . 'isset_freichatx'] + 5;
}
}
//------------------------------------------------------------------------------
public function deleteFreiChatXdb() {
if ($_SESSION[$this->uid . 'isset_freichatx'] > 30 || ($this->long_polling == true && $this->options['first'] != 'false')) {
$offline_time = $this->time_string - (60 * 60);
$query = "DELETE FROM frei_session WHERE time <" . $offline_time;
$this->db->query($query);
$_SESSION[$this->uid . 'isset_freichatx'] = 0;
}
}
//------------------------------------------------------------------------------
public function avatar_url($res) {
$murl = str_replace("server/freichat.php", "", $this->url);
$avatar_url = $murl . 'client/jquery/user.jpeg';
return $avatar_url;
}
//------------------------------------------------------------------------------
public function get_guests() {
$query = "SELECT DISTINCT status_mesg,username,session_id,status,guest,in_room
FROM frei_session
WHERE time>" . $this->online_time2 . "
AND session_id<>" . $_SESSION[$this->uid . 'usr_ses_id'] . "
AND status<>2
AND status<>0";
//echo $query;
$list = $this->db->query($query)->fetchAll();
return $list;
}
//------------------------------------------------------------------------------
public function get_users() {
$query = "SELECT DISTINCT status_mesg,username,session_id,status,guest,in_room
FROM frei_session
WHERE time>" . $this->online_time2 . "
AND session_id<>" . $_SESSION[$this->uid . 'usr_ses_id'] . "
AND guest=0
AND status<>2
AND status<>0";
$list = $this->db->query($query)->fetchAll();
return $list;
}
//------------------------------------------------------------------------------
public function get_buddies() {
$this->get_users();
}
//------------------------------------------------------------------------------
public function get_chatroom_users($chatroom_user_array) {
/*
$query = "SELECT DISTINCT * FROM frei_session WHERE (in_room=" . $active_room . " OR permanent_id=" . $_SESSION[$this->uid . 'gst_ses_id'] . ") AND time>" . $this->online_time2 . " AND in_room<>-1";
$users = $this->db->query($query)->fetchAll();
*
*/
$userdiv = "<div></div>";
foreach ($chatroom_user_array as $chatroom_users) {
$userdiv .= '<div id="frei_userlist" class="frei_userlist" onmouseover="$jn(this).addClass(\'frei_userlist_onhover\');" onmouseout="$jn(this).removeClass(\'frei_userlist_onhover\');">
<span class="freichat_userscontentavatar"><img src="' . $chatroom_users['avatar'] . '" alt="avatar" align="left" class="freichat_userscontentavatarimage"/></span>
<span class="freichat_userscontentname">' . $chatroom_users['username'] . '</span>
<span > <img class ="freichat_userscontentstatus" src="' . $chatroom_users['img_url'] . '" height="12" width="12" alt="status" /></span>
</div>';
}
/* foreach ($users as $user) {
$userdiv .= '<div id="frei_userlist" class="frei_userlist" onmouseover="$jn(this).addClass(\'frei_userlist_onhover\');" onmouseout="$jn(this).removeClass(\'frei_userlist_onhover\');"><span class="freichat_userscontentname">' . $user['username'] . '</span></div>';
}//echo $query;
*/
return $userdiv;
}
//------------------------------------------------------------------------------
public function freichat_debug($message) {
if ($this->debug == true) {
$dbgfile = fopen("../freixlog.log", "a");
fwrite($dbgfile, "\n" . date("F j, Y, g:i a") . ": " . $message . "\n");
}
}
//------------------------------------------------------------------------------
public function check_ban() {
if (isset($_SESSION[$this->uid . 'is_guest']) && $_SESSION[$this->uid . 'is_guest'] == 0) {
$query = "SELECT * FROM frei_banned_users WHERE user_id = " . $_SESSION[$this->uid . 'usr_ses_id'];
$ban = $this->db->query($query);
if ($ban->rowCount() > 0) {
$this->banned = true;
$_SESSION[$this->uid . 'is_banned'] = true;
exit;
}
}
$_SESSION[$this->uid . 'is_banned'] = false;
return $this->banned;
}
//------------------------------------------------------------------------------
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 {
$this->freichat_debug('USER parameters for show_name are wrong.');
}
return $user_list;
}
//------------------------------------------------------------------------------
public function register_hook($func, $args, $hook) {
$this->event->register_hook($func, $args, $hook);
}
//------------------------------------------------------------------------------
}