File: //home/bk/efi/eficenter.ru/consultant/class/add_user_mess.php
<?php
error_reporting(E_ALL); class UserAddMess{ public $to_operator = null; public $mess = null; public $user_id = null; public $user_name = null; public function __construct(){ if(isset($_POST['messages'])) $this->mess = strip_tags($_POST['messages']); else die('Error! No messages'); if(isset($_POST['user_name'])) $this->user_name = strip_tags($_POST['user_name']); else die('Error! No user name'); session_start(); require_once 'mysql.php'; if(isset($_SESSION['ok_conn_operator'])){ $this->to_operator = $_SESSION['ok_conn_operator']; }else{ die('Оператор не найден'); } $this->getUserId(); if(isset($_SESSION['ok_user_name']) AND $_SESSION['ok_user_name'] != $this->user_name) $this->updateUserName(); $this->addMessage(); } public function getUserId(){ if(isset($_SESSION['ok_user_id'])){ $this->user_id = $_SESSION['ok_user_id']; $this->setUsersChat(); }elseif(isset($_COOKIE['ok_user_id'])){ $user_cookie = explode('$', $_COOKIE['ok_user_id']); $user_id = $user_cookie[0]; $user_time = $user_cookie[1]; if($this->verifyUser($user_id, $user_time)){ $this->user_id = $user_id; $this->setUsersChat(); }else{ $this->newUser(); } }else{ $this->newUser(); } } public function newUser(){ require 'add_new_user.php'; $new_user = new AddNewUser($this->user_name); $this->user_id = $new_user->getUserId(); $this->setUsersChat(); } public function setUsersChat(){ $mysql = Mysql::getInstance(); $sql = "SELECT COUNT(id_user) AS count FROM ok_users_chat WHERE id_user = {$this->user_id}"; $result = $mysql->query($sql); if($result->fetchColumn() == 0){ $sql = "INSERT INTO ok_users_chat(id_user, id_operator) VALUES('{$this->user_id}', '{$this->to_operator}')"; $mysql->exec($sql); $this->updateConUsers(); } return; } public function updateUsersChat(){ $sql = "UPDATE ok_users_chat SET new_message_user = new_message_user + 1 WHERE id_user = {$this->user_id}"; $mysql = Mysql::getInstance(); if(!$mysql->exec($sql)) die('Error!!! Не удалось отметить о новом сообщение'); } public function addMessage(){ $mysql = Mysql::getInstance(); $sql = "UPDATE ok_users_chat SET write_user = '0' WHERE id_user = {$this->user_id}"; $mysql->exec($sql); $this->mess = $this->url_to_link($this->mess); $this->mess = $mysql->quote($this->mess); $wr_date = time(); $sql = "INSERT INTO ok_messages(id_user, is_for, wr_date, messages, is_from) VALUES({$this->user_id},{$this->to_operator}, '{$wr_date}',{$this->mess}, '1')"; $count = $mysql->exec($sql); $this->updateUsersChat(); } public function verifyUser($user_id, $user_time){ $user_id = intval($user_id); $user_time = intval($user_time); $mysql = Mysql::getInstance(); $sql = "SELECT user_id FROM ok_users WHERE user_id = '{$user_id}' AND user_date = '{$user_time}'"; $result = $mysql->query($sql); if($result->fetchColumn() != 0){ $last_time = time(); require 'ip.php'; $user_ip = UserIP::getIP(); $sql = "UPDATE ok_users SET user_ip = {$user_ip}, user_date = '{$last_time}' WHERE user_id = {$user_id}"; $mysql->exec($sql); $id_in_cookie = $user_id.'$'.$last_time; setcookie('ok_user_id', $id_in_cookie, time()+60*60*24*30); $_SESSION['ok_user_id'] = $user_id; return true; }else{ return false; } } public function updateUserName(){ $mysql = Mysql::getInstance(); $this->user_name = $mysql->quote($this->user_name); $sql = "UPDATE ok_users SET user_name = {$this->user_name} WHERE user_id = {$this->user_id}"; $mysql->exec($sql); $_SESSION['ok_user_name'] = $this->user_name; } public function updateConUsers(){ $mysql = Mysql::getInstance(); $sql = "UPDATE ok_operators SET operator_connected = operator_connected + 1 WHERE operator_id = {$this->to_operator}"; $mysql->exec($sql); } public function url_to_link($text){ $reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/"; if (preg_match_all($reg_exUrl, $text, $url)) { foreach($url[0] as $v){ $position = strpos($text,' '.$v)+1; $text = substr_replace($text,'', $position, strlen($v)); $text = substr_replace($text,'<a href="'.$v.'" target="_blank">'.$v.'</a>', $position ,0); } return $text; } else { return $text; } } } $add = new UserAddMess(); ?>