3097 lines
		
	
	
		
			58 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			3097 lines
		
	
	
		
			58 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?
 | |
| /*
 | |
| Copyright (C) 2009 Zbigniew Zolkiewski
 | |
| 
 | |
| This program 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 2
 | |
| of the License, or (at your option) any later version.
 | |
| 
 | |
| This program 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, write to the Free Software
 | |
| Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 | |
| 
 | |
| ###########################################################################
 | |
| 
 | |
| This class provide usefull methods for managing message archives created with mod_logdb.
 | |
| This is pre-release. Do not use outside project Jorge.
 | |
| 
 | |
| Documentation is available in API.txt.
 | |
| 
 | |
| NOTICE: By default class discards any query with is execuded after query error has occured. This is for debug purposes only.
 | |
| 
 | |
| */
 | |
| 
 | |
| class db_manager {
 | |
| 
 | |
| 	private $db_host;
 | |
| 	private $db_name;
 | |
| 	private $db_user;
 | |
| 	private $db_password;
 | |
| 	private $db_driver;
 | |
| 	private $xmpp_host;
 | |
| 	private $vhost;
 | |
| 	private $messages_table = "logdb_messages_";
 | |
| 	private $is_error = false;
 | |
| 	private $id_query;
 | |
| 	private $query_type;
 | |
| 	private $is_debug = false;
 | |
| 	private $user_id = null;
 | |
| 	private $peer_name_id = null;
 | |
| 	private $peer_server_id = null;
 | |
| 	private $tslice = null;
 | |
| 	private $time_start = null;
 | |
| 	private $time_result = null;
 | |
| 	private $user_query = null;
 | |
| 	private $ignore_id = null;
 | |
| 	private $spec_ignore = false;
 | |
| 	private $ext_idx;
 | |
| 	public $result;
 | |
| 
 | |
| 	public function __construct($db_host,$db_name,$db_user,$db_password,$db_driver,$xmpp_host = null) {
 | |
| 
 | |
| 		$this->setData($db_host,$db_name,$db_user,$db_password,$db_driver,$xmpp_host);
 | |
| 	
 | |
| 	}
 | |
| 
 | |
| 
 | |
| 	private function setData($db_host,$db_name,$db_user,$db_password,$db_driver,$xmpp_host) {
 | |
| 
 | |
| 		$this->db_host = $db_host;
 | |
| 		$this->db_name = $db_name;
 | |
| 		$this->db_user = $db_user;
 | |
| 		$this->db_password = $db_password;
 | |
| 		$this->db_driver = $db_driver;
 | |
| 		$this->xmpp_host = $this->sql_validate($xmpp_host,"string");
 | |
| 		$this->vhost = str_replace("_",".", $this->sql_validate($xmpp_host,"string"));
 | |
| 
 | |
| 		try { 
 | |
| 
 | |
| 			$this->db_connect();
 | |
| 
 | |
| 			}
 | |
| 		catch(Exception $e) {
 | |
| 
 | |
|         		echo "<br>Exception: ".$e->getMessage();
 | |
|         		echo ", Code: ".$e->getCode();
 | |
| 
 | |
| 		}
 | |
| 		
 | |
| 		if ($this->vhost) {
 | |
| 
 | |
| 			$this->set_ignore_id();
 | |
| 		
 | |
| 		}
 | |
| 			
 | |
| 	}
 | |
| 
 | |
| 	private function db_mysql() {
 | |
| 
 | |
| 		$conn = mysql_connect("$this->db_host", "$this->db_user", "$this->db_password");
 | |
| 		if (!$conn) {
 | |
| 
 | |
| 				return false;
 | |
| 
 | |
| 			}
 | |
| 		if (mysql_select_db($this->db_name)) {
 | |
| 				
 | |
| 				return true;
 | |
| 
 | |
| 				}
 | |
| 
 | |
| 			else {
 | |
| 
 | |
| 				return false;
 | |
| 			
 | |
| 			}
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	private function do_query($query) {
 | |
| 
 | |
| 		$this->show_debug_info($query, $time = false);
 | |
| 		if ($this->is_error === false) {
 | |
| 
 | |
| 				$this->time_start();
 | |
| 				$result = mysql_query($query);
 | |
| 				$this->time_end();
 | |
| 				$this->show_debug_info($query = null, $time = true);
 | |
| 
 | |
| 			}
 | |
| 			elseif($this->is_error === true) {
 | |
| 
 | |
| 				if ($this->is_debug === true) {
 | |
| 					if ($this->is_debug === true) {
 | |
| 
 | |
| 						throw new Exception("Error before queryID:".$this->id_query,3);
 | |
| 					}
 | |
| 				}
 | |
| 				return false;
 | |
| 		}
 | |
| 
 | |
| 		if ($result === false ) {
 | |
| 					
 | |
| 					$this->is_error = true;
 | |
| 					if ($this->is_debug === true) {
 | |
| 
 | |
| 						throw new Exception("Query error in QueryID:".$this->id_query,2);
 | |
| 					}
 | |
| 					return false;
 | |
| 
 | |
| 				}
 | |
| 			else {
 | |
| 
 | |
| 					if ($this->query_type === "select" OR $this->query_type="create_table") {
 | |
| 
 | |
| 								return $result;
 | |
| 							}
 | |
| 						elseif($this->query_type === "update" OR $this->query_type === "insert" OR $this->query_type === "replace") {
 | |
| 
 | |
| 								return mysql_affected_rows();
 | |
| 						}
 | |
| 						elseif($this->query_type === "delete") {
 | |
| 
 | |
| 								return $result;
 | |
| 
 | |
| 						}
 | |
| 						elseif($this->query_type === "transaction") {
 | |
| 
 | |
| 								return $result;
 | |
| 
 | |
| 						}
 | |
| 		}
 | |
| 
 | |
| 		return false;
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	private function db_query($query) {
 | |
| 
 | |
| 		try {
 | |
| 
 | |
| 				$result = $this->do_query($query);
 | |
| 			
 | |
| 			}
 | |
| 		catch (Exception $e) {
 | |
| 
 | |
| 				echo "<br>Exception: ".$e->getMessage();
 | |
| 				echo ", Code: ".$e->getCode();
 | |
| 				return false;
 | |
| 		}
 | |
| 
 | |
| 		return $result;
 | |
| 	}
 | |
| 
 | |
| 	private function db_connect() {
 | |
| 
 | |
| 		if ($this->db_driver === "mysql") {
 | |
| 			
 | |
| 				if ($this->db_mysql() === true) {
 | |
| 
 | |
| 						return true;
 | |
| 					}
 | |
| 				else {
 | |
| 						$this->is_error = true;
 | |
| 						if ($this->is_debug === true) {
 | |
| 
 | |
| 							throw new Exception("<br>DB Connection failed!",1);
 | |
| 						}
 | |
| 				}
 | |
| 		}
 | |
| 	
 | |
| 	return false;
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	private function select($query,$return_type = null) {
 | |
| 
 | |
| 		$this->query_type="select";
 | |
| 		if (strpos(strtolower($query),"select") === 0) {
 | |
| 
 | |
| 			try{
 | |
| 				$this->result = $this->db_query($query);
 | |
| 			}
 | |
|                 	catch(Exception $e) {
 | |
|                         	echo "<br>Exception: ".$e->getMessage();
 | |
|                         	echo ", Code: ".$e->getCode();
 | |
| 			}
 | |
| 
 | |
| 			if($this->is_error===false) {
 | |
| 
 | |
| 					if($return_type === null) {
 | |
| 
 | |
| 							$this->result = mysql_fetch_object($this->result);
 | |
| 
 | |
| 					}
 | |
| 					elseif($return_type === "raw") {
 | |
| 
 | |
| 							return true;
 | |
| 				
 | |
| 					}
 | |
| 
 | |
| 					return true;	
 | |
| 
 | |
| 				}
 | |
| 
 | |
| 				else{
 | |
| 					
 | |
| 					return false;
 | |
| 				
 | |
| 				}
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 		else {
 | |
| 
 | |
| 			return false;
 | |
| 		
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	private function update($query) {
 | |
| 
 | |
| 		$this->query_type = "update";
 | |
| 		if (strpos(strtolower($query),"update") === 0) {
 | |
| 
 | |
| 			try{
 | |
| 				$this->result = $this->db_query($query);
 | |
| 			}
 | |
|                 	catch(Exception $e) {
 | |
|                         	echo "<br>Exception: ".$e->getMessage();
 | |
|                         	echo ", Code: ".$e->getCode();
 | |
| 			}
 | |
| 
 | |
| 			if($this->is_error===false) {
 | |
| 					
 | |
| 					return true;	
 | |
| 
 | |
| 				}
 | |
| 
 | |
| 				else{
 | |
| 					
 | |
| 					return false;
 | |
| 				
 | |
| 				}
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 		else {
 | |
| 
 | |
| 			return false;
 | |
| 		
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	private function insert($query) {
 | |
| 
 | |
| 		$this->query_type = "insert";
 | |
| 		if (strpos(strtolower($query),"insert") === 0) {
 | |
| 
 | |
| 			try{
 | |
| 				$this->result = $this->db_query($query);
 | |
| 			}
 | |
|                 	catch(Exception $e) {
 | |
|                         	echo "<br>Exception: ".$e->getMessage();
 | |
|                         	echo ", Code: ".$e->getCode();
 | |
| 			}
 | |
| 
 | |
| 			if($this->is_error===false) {
 | |
| 					
 | |
| 					return true;	
 | |
| 
 | |
| 				}
 | |
| 
 | |
| 				else{
 | |
| 					
 | |
| 					return false;
 | |
| 				
 | |
| 				}
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 		else {
 | |
| 
 | |
| 			return false;
 | |
| 		
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	private function delete($query) {
 | |
| 
 | |
| 		$this->query_type = "delete";
 | |
| 		if (strpos(strtolower($query),"delete") === 0) {
 | |
| 
 | |
| 			try{
 | |
| 				$this->result = $this->db_query($query);
 | |
| 			}
 | |
| 			catch(Exception $e) {
 | |
| 				echo "<br>Exception: ".$e->getMessage();
 | |
| 				echo ", Code: ".$e->getCode();
 | |
| 			}
 | |
| 
 | |
| 			if ($this->is_error===false) {
 | |
| 
 | |
| 					return true;
 | |
| 
 | |
| 				}
 | |
| 				else {
 | |
| 
 | |
| 					return false;
 | |
| 
 | |
| 				}
 | |
| 
 | |
| 		}
 | |
| 		else {
 | |
| 
 | |
| 			return false;
 | |
| 
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	private function replace_q($query) {
 | |
| 
 | |
| 		$this->query_type = "replace";
 | |
| 		if (strpos(strtolower($query),"replace") === 0) {
 | |
| 
 | |
| 			try{
 | |
| 				$this->result = $this->db_query($query);
 | |
| 			}
 | |
| 			catch(Exception $e) {
 | |
| 				echo "<br>Exception: ".$e->getMessage();
 | |
| 				echo ", Code: ".$e->getCode();
 | |
| 			}
 | |
| 
 | |
| 			if ($this->is_error === false) {
 | |
| 
 | |
| 					return true;
 | |
| 
 | |
| 				}
 | |
| 				else {
 | |
| 
 | |
| 					return false;
 | |
| 
 | |
| 				}
 | |
| 
 | |
| 		}
 | |
| 		else {
 | |
| 
 | |
| 			return false;
 | |
| 
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	public function begin() {
 | |
| 
 | |
| 		$this->id_query = "Q001";
 | |
| 		$this->query_type = "transaction";
 | |
| 		return $this->db_query("begin");
 | |
| 
 | |
| 	}
 | |
| 	
 | |
| 	public function commit() {
 | |
| 		
 | |
| 		$this->id_query = "Q002";
 | |
| 		$this->query_type = "transaction";
 | |
| 		return $this->db_query("commit");
 | |
| 	
 | |
| 	}
 | |
| 
 | |
| 	public function rollback() {
 | |
| 
 | |
| 		$this->id_query = "Q003";
 | |
| 		$this->query_type = "transaction";
 | |
| 		$this->is_error = false;
 | |
| 		return $this->db_query("rollback");
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function get_mylinks_count() {
 | |
| 
 | |
| 		$this->id_query = "Q004";
 | |
| 		$this->vital_check();
 | |
| 		$query="SELECT 
 | |
| 				count(id_link) as cnt
 | |
| 			FROM 
 | |
| 				jorge_mylinks 
 | |
| 			WHERE 
 | |
| 				owner_id='".$this->user_id."'
 | |
| 			AND
 | |
| 				vhost='".$this->vhost."'
 | |
| 			AND 
 | |
| 				ext is NULL
 | |
| 		
 | |
| 		";
 | |
| 		
 | |
| 		return $this->select($query);
 | |
| 	}
 | |
| 
 | |
| 	public function get_trash_count() {
 | |
| 	
 | |
| 		$this->id_query = "Q005";
 | |
| 		$this->vital_check();
 | |
| 		$query="SELECT 
 | |
| 				count(*) as cnt
 | |
| 			FROM 
 | |
| 				pending_del 
 | |
| 			WHERE 
 | |
| 				owner_id='".$this->user_id."'
 | |
| 			AND
 | |
| 				vhost='".$this->vhost."'
 | |
| 		";
 | |
| 
 | |
| 		return $this->select($query);
 | |
| 		
 | |
| 	}
 | |
| 
 | |
| 	private function row_count($query) {
 | |
| 
 | |
| 		$this->id_query = "Q006";
 | |
| 		$result = mysql_num_rows($this->db_query($query));
 | |
| 		if ($result === false) {
 | |
| 
 | |
| 				return false;
 | |
| 			
 | |
| 			}
 | |
| 			else{
 | |
| 
 | |
| 				$this->result = $result;
 | |
| 				return true;
 | |
| 		
 | |
| 			}
 | |
| 		
 | |
| 	}
 | |
| 
 | |
| 	public function get_user_id($user) {
 | |
| 		
 | |
| 		$this->id_query = "Q007";	
 | |
| 		$user = $this->sql_validate($user,"string");
 | |
| 		$query="SELECT
 | |
| 				user_id 
 | |
| 			FROM 
 | |
| 				`logdb_users_".$this->xmpp_host."`
 | |
| 			WHERE 
 | |
| 				username = '$user'
 | |
| 				
 | |
| 			";
 | |
| 		
 | |
| 		return $this->select($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function get_user_name($user_id,$vhost = null) {
 | |
| 
 | |
| 		$this->id_query = "Q008";
 | |
| 		$user_id = $this->sql_validate($user_id,"integer");
 | |
| 		if ($vhost !== null) {
 | |
| 
 | |
| 				$vh = $this->vh($vhost,true);
 | |
| 
 | |
| 			}
 | |
| 			else{
 | |
| 
 | |
| 				$vh = $this->xmpp_host;
 | |
| 
 | |
| 		
 | |
| 		}
 | |
| 		$query="SELECT
 | |
| 				username
 | |
| 			FROM 
 | |
| 				`logdb_users_".$vh."`
 | |
| 			WHERE 
 | |
| 				user_id = '$user_id'
 | |
| 				
 | |
| 			";
 | |
| 		
 | |
| 		return $this->select($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function get_server_id($server) {
 | |
| 
 | |
| 		$this->id_query = "Q009";
 | |
| 		$server = $this->sql_validate($server,"string");
 | |
| 		$query="SELECT
 | |
| 				server_id 
 | |
| 			FROM 
 | |
| 				`logdb_servers_".$this->xmpp_host."`
 | |
| 			WHERE 
 | |
| 				server = '$server'
 | |
| 				
 | |
| 			";
 | |
| 		
 | |
| 		return $this->select($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function get_server_name($server_id,$vhost = null){
 | |
| 
 | |
| 		$this->id_query = "Q010";
 | |
| 		$server_id = $this->sql_validate($server_id,"integer");
 | |
| 		if ($vhost !== null) {
 | |
| 
 | |
| 				$vh = $this->vh($vhost,true);
 | |
| 
 | |
| 			}
 | |
| 			else{
 | |
| 
 | |
| 				$vh = $this->xmpp_host;
 | |
| 
 | |
| 		
 | |
| 		}
 | |
| 		$query="SELECT
 | |
| 				server as server_name
 | |
| 			FROM 
 | |
| 				`logdb_servers_".$vh."` 
 | |
| 			WHERE 
 | |
| 				server_id = '$server_id'
 | |
| 				
 | |
| 			";
 | |
| 		
 | |
| 		return $this->select($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function get_resource_name($resource_id) {
 | |
| 
 | |
| 		$this->id_query = "Q012";
 | |
| 		$resource_id = $this->sql_validate($resource_id,"integer");
 | |
| 		$query="SELECT
 | |
| 				resource as resource_name
 | |
| 			FROM 
 | |
| 				`logdb_resources_".$this->xmpp_host."` 
 | |
| 			WHERE 
 | |
| 				resource_id = '$resource_id'
 | |
| 				
 | |
| 			";
 | |
| 		
 | |
| 		return $this->select($query);
 | |
| 	}
 | |
| 
 | |
| 	public function get_resource_id($resource) {
 | |
| 	
 | |
| 		$this->id_query = "Q013";
 | |
| 		$resource = $this->sql_validate($resource,"string");
 | |
| 		$query="SELECT
 | |
| 				resource_id
 | |
| 			FROM 
 | |
| 				`logdb_resources_".$this->xmpp_host."`
 | |
| 			WHERE 
 | |
| 				resource = '$resource'
 | |
| 				
 | |
| 			";
 | |
| 		
 | |
| 		return $this->select($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function get_user_talker_stats($peer_name_id,$peer_server_id){
 | |
| 
 | |
| 		$this->id_query = "Q014";
 | |
| 		$this->prepare($peer_name_id,$peer_server_id,$tslice);
 | |
| 		$query="SELECT
 | |
| 				at 
 | |
| 			FROM 
 | |
| 				`logdb_stats_".$this->xmpp_host."`
 | |
| 			WHERE 
 | |
| 				owner_id='".$this->user_id."' 
 | |
| 			AND 
 | |
| 				peer_name_id='".$this->peer_name_id."' 
 | |
| 			AND 
 | |
| 				peer_server_id='".$this->peer_server_id."' 
 | |
| 			ORDER BY
 | |
| 				str_to_date(at,'%Y-%m-%d') 
 | |
| 			ASC
 | |
| 			
 | |
| 			";
 | |
| 		
 | |
| 		$this->select($query,"raw");
 | |
| 		return $this->commit_select(array("at"));
 | |
| 	}
 | |
| 
 | |
| 	public function get_num_lines($tslice,$peer_name_id,$peer_server_id) {
 | |
| 		
 | |
| 		$this->id_query = "Q015";
 | |
| 		$this->prepare($peer_name_id,$peer_server_id,$tslice);
 | |
| 		$table = $this->construct_table($this->tslice);
 | |
| 		$query="SELECT 
 | |
| 				count(timestamp) as cnt
 | |
| 			FROM 
 | |
| 				`$table` 
 | |
| 			WHERE 
 | |
| 				owner_id = '".$this->user_id."' 
 | |
| 			AND 
 | |
| 				peer_name_id='".$this->peer_name_id."' 
 | |
| 			AND 
 | |
| 				peer_server_id='".$this->peer_server_id."'
 | |
| 				
 | |
| 		";
 | |
| 		
 | |
| 		return $this->select($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function is_log_enabled() {
 | |
| 
 | |
| 		$this->id_query = "Q016";
 | |
| 
 | |
| 		// Return false on non-digit characters, workaround for user not being in sql dictionary.
 | |
| 		if (!ctype_digit($this->user_id)) {
 | |
| 
 | |
| 			return false;
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 		$query="SELECT 
 | |
| 				dolog_default as is_enabled
 | |
| 			FROM 
 | |
| 				`logdb_settings_".$this->xmpp_host."` 
 | |
| 			WHERE 
 | |
| 				owner_id='".$this->user_id."'
 | |
| 		";
 | |
| 		
 | |
| 		if ($this->select($query) === true) {
 | |
| 
 | |
| 				if ($this->result->is_enabled === "0") {
 | |
| 
 | |
| 						$this->result->is_enabled = false;
 | |
| 						return true;
 | |
| 					
 | |
| 					}
 | |
| 					elseif($this->result->is_enabled === "1") {
 | |
| 
 | |
| 						$this->result->is_enabled = true;
 | |
| 						return true;
 | |
| 			
 | |
| 					}
 | |
| 					else{
 | |
| 
 | |
| 						 $this->result->is_enabled = null;
 | |
| 						 return true;
 | |
| 
 | |
| 				}
 | |
| 
 | |
| 
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 		return false;
 | |
| 	
 | |
| 	}
 | |
| 
 | |
| 	public function total_messages($vhost = null) {
 | |
| 	
 | |
| 		$this->id_query = "Q017";
 | |
| 		if ($vhost === null) {
 | |
| 
 | |
| 				$vh = $this->xmpp_host;
 | |
| 
 | |
| 			}
 | |
| 			else{
 | |
| 				
 | |
| 				$vh = $this->vh($vhost,true);
 | |
| 
 | |
| 		}
 | |
| 		$query="SELECT 
 | |
| 				sum(count) as total_messages,
 | |
| 				count(owner_id) as total_chats
 | |
| 			FROM 
 | |
| 				`logdb_stats_".$vh."`
 | |
| 		";
 | |
| 		
 | |
| 		$this->select($query,"raw");
 | |
| 		return $this->commit_select(array("total_messages","total_chats"));
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function total_chats() {
 | |
| 
 | |
| 		$this->id_query = "Q018";
 | |
| 		$query="SELECT 
 | |
| 				count(owner_id) as total_chats
 | |
| 			FROM 
 | |
| 				`logdb_stats_".$this->xmpp_host."`
 | |
| 		";
 | |
| 		return $this->select($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function get_log_list() {
 | |
| 
 | |
| 		$this->id_query = "Q019";
 | |
| 		$this->vital_check();
 | |
| 		$query="SELECT 
 | |
| 				donotlog_list as donotlog
 | |
| 			FROM 
 | |
| 				`logdb_settings_".$this->xmpp_host."` 
 | |
| 			WHERE 
 | |
| 				owner_id = '".$this->user_id."'
 | |
| 		";
 | |
| 
 | |
| 		$this->select($query);
 | |
| 		$split = explode("\n",$this->result->donotlog);
 | |
| 		$this->result = $split;
 | |
| 		return true;
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function set_log($bool) {
 | |
| 
 | |
| 		$this->id_query = "Q020";
 | |
| 		$this->vital_check();
 | |
| 		if ($bool === true) {
 | |
| 
 | |
| 				$val = 1;
 | |
| 			
 | |
| 			}
 | |
| 			elseif($bool === false) {
 | |
| 
 | |
| 				$val = 0;
 | |
| 			
 | |
| 			}
 | |
| 			else{
 | |
| 
 | |
| 				return false;
 | |
| 		}
 | |
| 		
 | |
| 		$query="UPDATE 
 | |
| 				`logdb_settings_".$this->xmpp_host."`
 | |
| 			SET 	
 | |
| 				dolog_default = '$val' 
 | |
| 			WHERE 
 | |
| 				owner_id = '".$this->user_id."'
 | |
| 		";
 | |
| 
 | |
| 		return $this->update($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function set_logger($event_id,$event_level,$extra = null) {
 | |
| 		
 | |
| 		$this->id_query = "Q021";
 | |
| 		$this->vital_check();
 | |
| 		$id_log_detail = $this->sql_validate($event_id,"integer");
 | |
| 		$id_log_level = $this->sql_validate($event_level,"integer");
 | |
| 		$extra = $this->sql_validate($extra,"string");
 | |
| 		$query="INSERT INTO 
 | |
| 				jorge_logger (id_user,id_log_detail,id_log_level,log_time,extra,vhost) 
 | |
| 			VALUES 
 | |
| 				('".$this->user_id."','$id_log_detail','$id_log_level',NOW(),'$extra','".$this->vhost."')
 | |
| 				
 | |
| 		";
 | |
| 
 | |
| 		return $this->insert($query);
 | |
| 	}
 | |
| 
 | |
| 	public function get_user_stats_drop_down() {
 | |
| 
 | |
| 		$this->id_query = "Q022";
 | |
| 		$this->vital_check();
 | |
| 		if ($this->spec_ignore === true) {
 | |
| 
 | |
| 			$sql = "AND peer_name_id != '".$this->ignore_id."'";
 | |
| 
 | |
| 		}
 | |
| 		$query="SELECT 
 | |
| 				substring(at,1,7) as at_send, 
 | |
| 				at 
 | |
| 			FROM 
 | |
| 				`logdb_stats_".$this->xmpp_host."` 
 | |
| 			WHERE 
 | |
| 				owner_id = '".$this->user_id."' 
 | |
| 				$sql
 | |
| 			GROUP BY 
 | |
| 				substring(at,1,7) 
 | |
| 			ORDER BY 
 | |
| 				str_to_date(at,'%Y-%m-%d') 
 | |
| 			DESC
 | |
| 		
 | |
| 		";
 | |
| 
 | |
| 		$this->select($query,"raw");
 | |
| 		return $this->commit_select(array("at_send","at"));
 | |
| 	}
 | |
| 
 | |
| 	public function get_user_stats_calendar($mo) {
 | |
| 
 | |
| 		$this->id_query = "Q023";
 | |
| 		$this->vital_check();
 | |
| 		$mo = $this->sql_validate($mo,"string");
 | |
| 		if ($this->spec_ignore === true) {
 | |
| 
 | |
| 			$sql = "AND peer_name_id != '".$this->ignore_id."'";
 | |
| 
 | |
| 		}
 | |
| 		$query="SELECT 
 | |
| 				distinct(substring(at,8,9)) as days 
 | |
| 			FROM 
 | |
| 				`logdb_stats_".$this->xmpp_host."` 
 | |
| 			WHERE 
 | |
| 				owner_id = '".$this->user_id."' 
 | |
| 			AND
 | |
| 				at like '$mo-%' 
 | |
| 				$sql
 | |
| 			ORDER BY 
 | |
| 				str_to_date(at,'%Y-%m-%d') 
 | |
| 			DESC
 | |
| 			
 | |
| 		";
 | |
| 
 | |
| 		$this->select($query,"raw");
 | |
| 		return $this->commit_select(array("days"));
 | |
| 	}
 | |
| 
 | |
| 	public function get_user_chats($tslice) {
 | |
| 		
 | |
| 		$this->id_query = "Q024";
 | |
| 		$this->vital_check();
 | |
| 		$xmpp_host = $this->xmpp_host;
 | |
| 		$tslice_table = $this->sql_validate($tslice,"string");
 | |
| 		$query="SELECT 
 | |
| 				a.username, 
 | |
| 				b.server as server_name, 
 | |
| 				c.peer_name_id as todaytalk, 
 | |
| 				c.peer_server_id as server, 
 | |
| 				c.count as lcount 
 | |
| 			FROM 
 | |
| 				`logdb_users_$xmpp_host` a, 
 | |
| 				`logdb_servers_$xmpp_host` b, 
 | |
| 				`logdb_stats_$xmpp_host` c 
 | |
| 			WHERE 
 | |
| 				c.owner_id = '".$this->user_id."' 
 | |
| 			AND 
 | |
| 				a.user_id=c.peer_name_id 
 | |
| 			AND 
 | |
| 				b.server_id=c.peer_server_id 
 | |
| 			AND 
 | |
| 				c.at = '$tslice' 
 | |
| 			ORDER BY 
 | |
| 				lower(username)
 | |
| 				
 | |
| 		";
 | |
| 
 | |
| 		$this->select($query,"raw");
 | |
| 		return $this->commit_select(array("username","server_name","todaytalk","server","lcount"));
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function get_user_chat($tslice,$peer_name_id,$peer_server_id,$resource_id = null,$start = null,$num_lines = null) {
 | |
| 	
 | |
| 		$this->id_query = "Q025";
 | |
| 		$this->prepare($peer_name_id,$peer_server_id,$tslice);
 | |
| 		if ($resource_id !== null) { 
 | |
| 		
 | |
| 				$resource_id = $this->sql_validate($resource_id,"integer");
 | |
| 				$sql = "AND (peer_resource_id='$resource_id' OR peer_resource_id='1')";
 | |
| 
 | |
| 			}
 | |
| 			else{
 | |
| 
 | |
| 				settype($sql,"null");
 | |
| 			}
 | |
| 
 | |
| 		$offset_start = $start;
 | |
| 		if ($offset_start === null) {
 | |
| 
 | |
| 				$offset_start = "0";
 | |
| 
 | |
| 			}
 | |
| 
 | |
| 		$offset_end = $start + $num_lines;
 | |
| 		$offset_start = $this->sql_validate($offset_start,"integer");
 | |
| 		$offset_end = $this->sql_validate($offset_end,"integer");
 | |
| 		$tslice_table = $this->construct_table($this->tslice);
 | |
| 		$query="SELECT 
 | |
| 				from_unixtime(timestamp+0) as ts,
 | |
| 				direction,
 | |
| 				type,
 | |
| 				subject,
 | |
| 				peer_name_id, 
 | |
| 				peer_server_id, 
 | |
| 				peer_resource_id, 
 | |
| 				body 
 | |
| 			FROM 
 | |
| 				`$tslice_table` 
 | |
| 			FORCE INDEX
 | |
| 				(search_i)
 | |
| 			WHERE 
 | |
| 				owner_id = '".$this->user_id."' 
 | |
| 			AND 
 | |
| 				peer_name_id='".$this->peer_name_id."' 
 | |
| 			AND 
 | |
| 				peer_server_id='".$this->peer_server_id."' 
 | |
| 				$sql 
 | |
| 			AND 
 | |
| 				ext is NULL 
 | |
| 			ORDER BY 
 | |
| 				ts 
 | |
| 			LIMIT 
 | |
| 				$offset_start,$offset_end
 | |
| 		";
 | |
| 
 | |
| 		$this->select($query,"raw");
 | |
| 		return $this->commit_select(array("ts","direction","type","subject","peer_name_id","peer_server_id","peer_resource_id","body"));
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function get_uniq_chat_dates($limit_start = null, $limit_end = null, $limited = false, $start = null, $peer_name_id = null, $peer_server_id = null) {
 | |
| 
 | |
| 		$this->id_query = "Q026";
 | |
| 		$this->vital_check();
 | |
| 		$user_id = $this->user_id;
 | |
| 		$xmpp_host = $this->xmpp_host;
 | |
| 		if ($limit_start !== null AND $limit_end !== null) {
 | |
| 	
 | |
| 				$limit_start = $this->sql_validate($limit_start,"date");
 | |
| 				$limit_end = $this->sql_validate($limit_end,"date");
 | |
| 				$sql=" AND str_to_date(at,'%Y-%m-%d') >= str_to_date('$limit_start','%Y-%m-%d') AND str_to_date(at,'%Y-%m-%d') <= str_to_date('$limit_end','%Y-%m-%d')";
 | |
| 				
 | |
| 			}
 | |
| 			else{
 | |
| 
 | |
| 				settype($sql,"null");
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 		if ($limited === true) {
 | |
| 
 | |
| 				if ($start == "" OR $start === null) { 
 | |
| 				
 | |
| 					$start = "0"; 
 | |
| 					
 | |
| 				}
 | |
| 
 | |
| 				$start = $this->sql_validate($start,"integer");
 | |
| 				$sql2=" limit $start,10000";
 | |
| 
 | |
| 			}
 | |
| 			else{
 | |
| 
 | |
| 				settype($sql2,"null");
 | |
| 		
 | |
| 		}
 | |
| 
 | |
| 		if ($peer_name_id !== null AND $peer_server_id !== null) {
 | |
| 
 | |
| 				$peer_name_id = $this->sql_validate($peer_name_id,"integer");
 | |
| 				$peer_server_id = $this->sql_validate($peer_server_id,"integer");
 | |
| 				$sql3 = "AND peer_name_id = '$peer_name_id' AND peer_server_id = '$peer_server_id'";
 | |
| 
 | |
| 			}
 | |
| 			else{
 | |
| 
 | |
| 				settype($sql3,"null");
 | |
| 
 | |
| 		}
 | |
| 		
 | |
| 		$query="SELECT 
 | |
| 				distinct(at) 
 | |
| 			FROM 
 | |
| 				`logdb_stats_$xmpp_host` 
 | |
| 			WHERE 
 | |
| 				owner_id='$user_id' $sql3 $sql
 | |
| 			ORDER BY 
 | |
| 				str_to_date(at,'%Y-%m-%d') 
 | |
| 			ASC
 | |
| 				$sql2
 | |
| 		";
 | |
| 
 | |
| 		$this->select($query,"raw");
 | |
| 		return $this->commit_select(array("at"));
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function check_thread($tslice,$peer_name_id,$peer_server_id,$begin_hour,$end_hour) {
 | |
| 
 | |
| 		$this->id_query = "Q027";
 | |
| 		$this->prepare($peer_name_id,$peer_server_id,$tslice);
 | |
| 		$xmpp_host = $this->xmpp_host;
 | |
| 		$tslice_table = $this->construct_table($this->tslice);
 | |
|         	$query="SELECT 
 | |
| 				1 
 | |
|                 	FROM 
 | |
|                         	`$tslice_table`
 | |
|                 	WHERE 
 | |
|                         	owner_id='".$this->user_id."' 
 | |
|                 	AND 
 | |
|                         	peer_name_id='".$this->peer_name_id."' 
 | |
|                 	AND 
 | |
|                         	peer_server_id='".$this->peer_server_id."' 
 | |
|                 	AND 
 | |
|                         	from_unixtime(timestamp) >= str_to_date('".$this->tslice." $begin_hour','%Y-%m-%d %H:%i:%s') 
 | |
|                 	AND 
 | |
|                         	from_unixtime(timestamp) <= str_to_date('".$this->tslice." $end_hour','%Y-%m-%d %H:%i:%s')
 | |
|                 	ORDER BY 
 | |
|                         	from_unixtime(timestamp)
 | |
| 
 | |
| 		";
 | |
| 		
 | |
| 		return $this->row_count($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function get_chat_map($peer_name_id,$peer_server_id) {
 | |
| 
 | |
| 		$this->id_query = "Q028";
 | |
| 		$this->prepare($peer_name_id,$peer_server_id,$tslice);
 | |
| 		$query="SELECT 
 | |
| 				substring(at,1,7) as at 
 | |
| 			FROM 
 | |
| 				`logdb_stats_".$this->xmpp_host."` 
 | |
| 			WHERE 
 | |
| 				owner_id='".$this->user_id."' 
 | |
| 			AND 
 | |
| 				peer_name_id='".$this->peer_name_id."' 
 | |
| 			AND 
 | |
| 				peer_server_id='".$this->peer_server_id."' 
 | |
| 			GROUP BY 
 | |
| 				substring(at,1,7) 
 | |
| 			ORDER BY 
 | |
| 				str_to_date(at,'%Y-%m-%d') 
 | |
| 			ASC
 | |
| 			
 | |
| 		";
 | |
| 
 | |
| 		$this->select($query,"raw");
 | |
| 		return $this->commit_select(array("at"));
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function get_chat_map_specyfic($peer_name_id,$peer_server_id,$month) {
 | |
| 
 | |
| 		$this->id_query = "Q029";
 | |
| 		$this->prepare($peer_name_id,$peer_server_id,$tslice);
 | |
| 		$mo = $this->sql_validate($month,"string");
 | |
| 		$query="SELECT 
 | |
| 				at 
 | |
| 			FROM 
 | |
| 				`logdb_stats_".$this->xmpp_host."` 
 | |
| 			WHERE 
 | |
| 				owner_id='".$this->user_id."' 
 | |
| 			AND 
 | |
| 				peer_name_id='".$this->peer_name_id."' 
 | |
| 			AND 
 | |
| 				peer_server_id='".$this->peer_server_id."' 
 | |
| 			AND 
 | |
| 				at like '$mo-%'
 | |
| 				
 | |
| 		";
 | |
| 
 | |
| 		$this->select($query,"raw");
 | |
| 		return $this->commit_select(array("at"));
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function add_mylink($peer_name_id,$peer_server_id,$link_date,$link,$desc) {
 | |
| 
 | |
| 		$this->id_query = "Q030";
 | |
| 		$this->prepare($peer_name_id,$peer_server_id,$tslice);
 | |
| 		$datat = $this->sql_validate($link_date,"string");
 | |
| 		$lnk = $this->sql_validate($link,"string");
 | |
| 		$desc = $this->sql_validate($desc,"string");
 | |
| 		$query="INSERT INTO
 | |
| 				jorge_mylinks (owner_id,peer_name_id,peer_server_id,datat,link,description,vhost) 
 | |
| 			VALUES (
 | |
| 					'".$this->user_id."',
 | |
| 					'".$this->peer_name_id."',
 | |
| 					'".$this->peer_server_id."',
 | |
| 					'$datat',
 | |
| 					'$lnk',
 | |
| 					'$desc',
 | |
| 					'".$this->vhost."'
 | |
| 				)
 | |
| 				
 | |
| 		";
 | |
| 
 | |
| 		return $this->insert($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function del_mylink($link_id) {
 | |
| 
 | |
| 		$this->id_query = "Q031";
 | |
| 		$this->vital_check();
 | |
| 		$link_id = $this->sql_validate($link_id,"integer");
 | |
| 		$query="DELETE FROM 
 | |
| 				jorge_mylinks 
 | |
| 			WHERE 
 | |
| 				owner_id='".$this->user_id."' 
 | |
| 			AND
 | |
| 				vhost='".$this->vhost."'
 | |
| 			AND 
 | |
| 				id_link='$link_id'
 | |
| 				
 | |
| 		";
 | |
| 
 | |
| 		return $this->delete($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function get_mylink() {
 | |
| 
 | |
| 		$this->id_query = "Q032";
 | |
| 		$this->vital_check();
 | |
| 		$query="SELECT
 | |
| 				id_link,
 | |
| 				peer_name_id,
 | |
| 				peer_server_id,
 | |
| 				datat,
 | |
| 				link,
 | |
| 				description,
 | |
| 				ext
 | |
| 			FROM 
 | |
| 				jorge_mylinks 
 | |
| 			WHERE 
 | |
| 				owner_id='".$this->user_id."' 
 | |
| 			AND
 | |
| 				vhost='".$this->vhost."'
 | |
| 			AND 
 | |
| 				ext is NULL 
 | |
| 			ORDER BY 
 | |
| 				str_to_date(datat,'%Y-%m-%d') 
 | |
| 			DESC
 | |
| 			
 | |
| 		";
 | |
| 
 | |
| 		$this->select($query,"raw");
 | |
| 		return $this->commit_select(array("id_link","peer_name_id","peer_server_id","datat","link","description","ext"));
 | |
| 
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function update_log_list($log_list) {
 | |
| 
 | |
| 		$this->id_query = "Q033";
 | |
| 		$this->vital_check();
 | |
| 		$log_list = $this->sql_validate($log_list,"string");
 | |
| 		$query="UPDATE 
 | |
| 				`logdb_settings_".$this->xmpp_host."` 
 | |
| 			SET 
 | |
| 				donotlog_list='$log_list' 
 | |
| 			WHERE 
 | |
| 				owner_id='".$this->user_id."'
 | |
| 		";
 | |
| 		return $this->update($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function logger_get_events($event_id = null,$level_id = null, $offset = null,$lang = null) {
 | |
| 
 | |
| 		$this->id_query = "Q034";
 | |
| 		$this->vital_check();
 | |
| 		$offset = $this->sql_validate($offset,"integer");
 | |
| 		if ($event_id !== null) {
 | |
| 				
 | |
| 				$event_id = $this->sql_validate($event_id,"integer");
 | |
| 				$sql_1 = "and id_log_detail='$event_id'";
 | |
| 
 | |
| 		}
 | |
| 		if ($level_id !== null) {
 | |
| 
 | |
| 				$level_id = $this->sql_validate($level_id,"integer");
 | |
| 				$sql_2 = "and id_log_level='$level_id'";
 | |
| 		
 | |
| 		}
 | |
| 		$query="SELECT 
 | |
| 				b.id_event, 
 | |
| 				b.event AS event,
 | |
| 				c.level AS level, 
 | |
| 				c.id_level, 
 | |
| 				a.log_time,
 | |
| 				a.extra
 | |
| 			FROM 
 | |
| 				jorge_logger a,
 | |
| 				jorge_logger_dict b,
 | |
| 				jorge_logger_level_dict c
 | |
| 			WHERE 
 | |
| 				a.id_log_detail=b.id_event 
 | |
| 			AND 
 | |
| 				c.id_level=a.id_log_level 
 | |
| 			AND 
 | |
| 				id_user='".$this->user_id."' 
 | |
| 			AND
 | |
| 				a.vhost='".$this->vhost."'
 | |
| 			AND
 | |
| 				b.lang = '$lang'
 | |
| 			AND
 | |
| 				c.lang = '$lang'
 | |
| 
 | |
| 			$sql_1 
 | |
| 			$sql_2
 | |
| 
 | |
| 			ORDER BY 
 | |
| 				log_time 
 | |
| 			DESC LIMIT 
 | |
| 				$offset,300
 | |
| 		";
 | |
| 		
 | |
| 		$this->select($query,"raw");
 | |
| 		return $this->commit_select(array("id_event","event","level","id_level","log_time","extra"));
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function get_num_events($event_id = null,$level_id = null) {
 | |
| 
 | |
| 		$this->id_query = "Q035";
 | |
| 		$this->vital_check();
 | |
| 		if ($event_id !== null) {
 | |
| 				
 | |
| 				$event_id = $this->sql_validate($event_id,"integer");
 | |
| 				$sql_1 = "AND id_log_detail='$event_id'";
 | |
| 		}
 | |
| 		if ($level_id !== null) {
 | |
| 
 | |
| 				$level_id = $this->sql_validate($level_id,"integer");
 | |
| 				$sql_2 = "AND id_log_level='$level_id'";
 | |
| 		}
 | |
| 		$query="SELECT 
 | |
| 				count(id_user) AS cnt
 | |
| 			FROM 
 | |
| 				jorge_logger 
 | |
| 			WHERE 
 | |
| 				id_user='".$this->user_id."' 
 | |
| 			AND
 | |
| 				vhost='".$this->vhost."'
 | |
| 			
 | |
| 			$sql_1 
 | |
| 			$sql_2
 | |
| 		";
 | |
| 
 | |
| 		return $this->select($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function get_trashed_items() {
 | |
| 
 | |
| 		$this->id_query = "Q036";
 | |
| 		$this->vital_check();
 | |
| 		$query="SELECT 
 | |
| 				peer_name_id,
 | |
| 				peer_server_id,
 | |
| 				date,
 | |
| 				timeframe,
 | |
| 				type,
 | |
| 				idx
 | |
| 			FROM 
 | |
| 				pending_del 
 | |
| 			WHERE 
 | |
| 				owner_id = '".$this->user_id."' 
 | |
| 			AND
 | |
| 				vhost='".$this->vhost."'
 | |
| 			ORDER BY 
 | |
| 				str_to_date(date,'%Y-%m-%d') 
 | |
| 			DESC
 | |
| 		";
 | |
| 
 | |
| 		$this->select($query,"raw");
 | |
| 		return $this->commit_select(array("peer_name_id","peer_server_id","date","timeframe","type","idx"));
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function move_chat_to_trash($peer_name_id,$peer_server_id,$tslice,$link) {
 | |
| 
 | |
| 		$this->id_query = "Q037";
 | |
| 		$this->prepare($peer_name_id,$peer_server_id,$tslice);
 | |
| 		$xmpp_host = $this->xmpp_host;
 | |
| 		$table = $this->construct_table($this->tslice);
 | |
| 
 | |
| 		if ($this->get_ext_index($table) !== true) {
 | |
| 
 | |
| 				return false;
 | |
| 
 | |
| 			}
 | |
| 			else{
 | |
| 
 | |
| 				if (!$this->result->idx) {
 | |
| 
 | |
| 						$this->ext_idx = "1";
 | |
| 
 | |
| 					}
 | |
| 					else{
 | |
| 
 | |
| 						$this->ext_idx = $this->result->idx;
 | |
| 
 | |
| 				}
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 		$this->begin();
 | |
| 		if ($this->set_undo_table($this->peer_name_id,$this->peer_server_id,$this->tslice,"chat") === false) {
 | |
| 
 | |
| 				$this->rollback();
 | |
| 				return false;
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 		if ($this->remove_user_stats($this->peer_name_id,$this->peer_server_id,$this->tslice) === false) {
 | |
| 
 | |
| 				$this->rollback();
 | |
| 				return false;
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 		if ($this->move_mylink_to_trash($peer_name_id,$link) === false) {
 | |
| 
 | |
| 				$this->rollback();
 | |
| 				return false;
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 		if ($this->move_fav_to_trash($peer_name_id,$peer_server_id,$tslice) === false) {
 | |
| 
 | |
| 				$this->rollback();
 | |
| 				return false;
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 		$this->id_query = "Q037a";
 | |
| 		$query="UPDATE 
 | |
| 				`$table` 
 | |
| 			SET 
 | |
| 				ext = '".$this->ext_idx."' 
 | |
| 			WHERE 
 | |
| 				owner_id='".$this->user_id."' 
 | |
| 			AND 
 | |
| 				peer_name_id='".$this->peer_name_id."' 
 | |
| 			AND 
 | |
| 				peer_server_id='".$this->peer_server_id."'
 | |
| 			AND
 | |
| 				ext is NULL
 | |
| 				
 | |
| 		";
 | |
| 		
 | |
| 		if ($this->update($query) === false) {
 | |
| 				
 | |
| 				$this->rollback();
 | |
| 				return false;
 | |
| 
 | |
| 			}
 | |
| 			else{
 | |
| 
 | |
| 				$this->commit();
 | |
| 				$this->set_logger("4","1");
 | |
| 				return true;
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	private function remove_user_stats($peer_name_id,$peer_server_id,$tslice) {
 | |
| 
 | |
| 		$this->id_query = "Q038";
 | |
| 		$query="DELETE FROM 
 | |
| 				`logdb_stats_".$this->xmpp_host."` 
 | |
| 			WHERE 
 | |
| 				owner_id='".$this->user_id."' 
 | |
| 			AND 
 | |
| 				peer_name_id='$peer_name_id' 
 | |
| 			AND 
 | |
| 				peer_server_id='$peer_server_id' 
 | |
| 			AND 
 | |
| 				at='$tslice'
 | |
| 		";
 | |
| 
 | |
| 		return $this->delete($query);
 | |
| 	
 | |
| 	}
 | |
| 
 | |
| 	public function move_mylink_to_trash($peer_name_id,$link) {
 | |
| 
 | |
| 		$this->id_query = "Q039";
 | |
| 		$this->vital_check();
 | |
| 		$peer_name_id = $this->sql_validate($peer_name_id,"integer");
 | |
| 		$lnk = $this->sql_validate($link,"string");
 | |
| 		$query="UPDATE 
 | |
| 				jorge_mylinks 
 | |
| 			SET 
 | |
| 				ext='".$this->ext_idx."' 
 | |
| 			WHERE 
 | |
| 				owner_id ='".$this->user_id."' 
 | |
| 			AND
 | |
| 				vhost='".$this->vhost."'
 | |
| 			AND 
 | |
| 				peer_name_id='$peer_name_id' 
 | |
| 			AND 
 | |
| 				link like '$lnk%'
 | |
| 			AND
 | |
| 				ext is NULL
 | |
| 		";
 | |
| 
 | |
| 		return $this->update($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function move_fav_to_trash($peer_name_id,$peer_server_id,$tslice) {
 | |
| 
 | |
| 		$this->id_query = "Q040";
 | |
| 		$this->prepare($peer_name_id,$peer_server_id,$tslice);
 | |
| 		$query="UPDATE 
 | |
| 				jorge_favorites 
 | |
| 			SET 
 | |
| 				ext='".$this->ext_idx."' 
 | |
| 			WHERE 
 | |
| 				owner_id='".$this->user_id."' 
 | |
| 			AND 
 | |
| 				peer_name_id='".$this->peer_name_id."' 
 | |
| 			AND 
 | |
| 				peer_server_id='".$this->peer_server_id."' 
 | |
| 			AND 
 | |
| 				tslice='".$this->tslice."'
 | |
| 			AND
 | |
| 				vhost='".$this->vhost."'
 | |
| 			AND
 | |
| 				ext is NULL
 | |
| 		";
 | |
| 	
 | |
| 		return $this->update($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	private function set_undo_table($peer_name_id,$peer_server_id,$tslice,$type = null) {
 | |
| 
 | |
| 		$this->id_query = "Q041";
 | |
| 		$query="INSERT INTO 
 | |
| 				pending_del(owner_id,peer_name_id,date,peer_server_id,type,idx,vhost) 
 | |
| 			VALUES (
 | |
| 				'".$this->user_id."', 
 | |
| 				'$peer_name_id',
 | |
| 				'$tslice',
 | |
| 				'$peer_server_id',
 | |
| 				'$type',
 | |
| 				'".$this->ext_idx."',
 | |
| 				'".$this->vhost."'
 | |
| 				)
 | |
| 				
 | |
| 		";
 | |
| 		
 | |
| 		return $this->insert($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	private function unset_undo_table($peer_name_id,$peer_server_id,$tslice,$type = null) {
 | |
| 
 | |
| 		$this->id_query = "Q042";
 | |
| 		$query="DELETE FROM 
 | |
| 				pending_del 
 | |
| 			WHERE 
 | |
| 				owner_id='".$this->user_id."' 
 | |
| 			AND 
 | |
| 				peer_name_id='$peer_name_id' 
 | |
| 			AND 
 | |
| 				date='$tslice' 
 | |
| 			AND 
 | |
| 				peer_server_id='$peer_server_id'
 | |
| 			AND
 | |
| 				idx = '".$this->ext_idx."'
 | |
| 			AND
 | |
| 				vhost='".$this->vhost."'
 | |
| 		";
 | |
| 
 | |
| 		return $this->delete($query);
 | |
| 	}
 | |
| 
 | |
| 	public function move_chat_from_trash($peer_name_id,$peer_server_id,$tslice,$link,$idx = null) {
 | |
| 
 | |
| 		$this->id_query = "Q043";
 | |
| 		$this->prepare($peer_name_id,$peer_server_id,$tslice);
 | |
| 		$xmpp_host = $this->xmpp_host;
 | |
| 		$table = $this->construct_table($this->tslice);
 | |
| 		if (!$idx) {
 | |
| 
 | |
| 				$this->ext_idx = "1";
 | |
| 			}
 | |
| 			else{
 | |
| 
 | |
| 				if (ctype_digit($idx)) {
 | |
| 
 | |
| 						$this->ext_idx = $idx;
 | |
| 
 | |
| 					}
 | |
| 					else{
 | |
| 
 | |
| 						return false;
 | |
| 
 | |
| 				}
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 		// Message tables are not transactional, so this make some trouble for us to control all error conditions :/
 | |
| 		$query="UPDATE 
 | |
| 				`$table` 
 | |
| 			SET 
 | |
| 				ext = NULL 
 | |
| 			WHERE 
 | |
| 				owner_id='".$this->user_id."' 
 | |
| 			AND 
 | |
| 				peer_name_id='".$this->peer_name_id."' 
 | |
| 			AND 
 | |
| 				peer_server_id='".$this->peer_server_id."'
 | |
| 			AND
 | |
| 				ext = '".$this->ext_idx."'
 | |
| 		";
 | |
| 
 | |
| 		if ($this->update($query) === false) {
 | |
| 
 | |
| 				return false; 
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 		$this->begin();
 | |
| 		if ($this->unset_undo_table($this->peer_name_id,$this->peer_server_id,$this->tslice) === false) {
 | |
| 
 | |
| 				$this->rollback();
 | |
| 				return false;
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 		if ($this->recount_messages($this->peer_name_id,$this->peer_server_id,$this->tslice) === true) {
 | |
| 
 | |
| 				$stats = $this->result->cnt;
 | |
| 
 | |
| 			}
 | |
| 			else {
 | |
| 
 | |
| 				$this->rollback();
 | |
| 				return false;
 | |
| 		}
 | |
| 
 | |
| 		if ($this->if_chat_exist($this->peer_name_id,$this->peer_server_id,$this->tslice) === true) {
 | |
| 
 | |
| 
 | |
| 					if ($this->result->cnt == 1) {
 | |
| 
 | |
| 							if ($this->update_stats($this->peer_name_id,$this->peer_server_id,$this->tslice,$stats) === false) {
 | |
| 
 | |
| 									$this->rollback();
 | |
| 									return false;
 | |
| 							}
 | |
| 
 | |
| 						}
 | |
| 						else {
 | |
| 
 | |
| 							if ($this->insert_stats($this->peer_name_id,$this->peer_server_id,$this->tslice,$stats) === false) {
 | |
| 
 | |
| 									$this->rollback();
 | |
| 									return false;
 | |
| 
 | |
| 							}
 | |
| 						}
 | |
| 
 | |
| 			}
 | |
| 			else{
 | |
| 
 | |
| 					$this->rollback();
 | |
| 					return false;
 | |
| 		}
 | |
| 
 | |
| 		if ($this->move_mylink_from_trash($peer_name_id,$link) === false) {
 | |
| 
 | |
| 				$this->rollback();
 | |
| 				return false;
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 		if ($this->move_fav_from_trash($peer_name_id,$peer_server_id,$tslice) === false) {
 | |
| 
 | |
| 				$this->rollback();
 | |
| 				return false;
 | |
| 		}
 | |
| 
 | |
| 		$this->commit();
 | |
| 		return true;
 | |
| 	
 | |
| 	
 | |
| 	}
 | |
| 
 | |
| 	private function if_chat_exist($peer_name_id,$peer_server_id,$tslice) {
 | |
| 
 | |
| 		$this->id_query = "Q044";
 | |
| 		$query="SELECT 
 | |
| 				1 as cnt
 | |
| 			FROM 
 | |
| 				`logdb_stats_".$this->xmpp_host."` 
 | |
| 			WHERE 
 | |
| 				owner_id = '".$this->user_id."' 
 | |
| 			AND 
 | |
| 				peer_name_id='$peer_name_id' 
 | |
| 			AND 
 | |
| 				peer_server_id='$peer_server_id' 
 | |
| 			AND 
 | |
| 				at = '$tslice'
 | |
| 				
 | |
| 		";
 | |
| 
 | |
| 		return $this->select($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	private function insert_stats($peer_name_id,$peer_server_id,$tslice,$stats) {
 | |
| 	
 | |
| 		$this->id_query = "Q045";
 | |
| 		$query="INSERT INTO
 | |
| 				`logdb_stats_".$this->xmpp_host."` (owner_id,peer_name_id,peer_server_id,at,count) 
 | |
| 			VALUES 
 | |
| 				(
 | |
| 				'".$this->user_id."',
 | |
| 				'$peer_name_id',
 | |
| 				'$peer_server_id',
 | |
| 				'$tslice',
 | |
| 				'$stats
 | |
| 				')
 | |
| 				
 | |
| 		"; 
 | |
| 		
 | |
| 		return $this->insert($query);
 | |
| 	}
 | |
| 
 | |
| 	private function update_stats($peer_name_id,$peer_server_id,$tslice,$stats) {
 | |
| 
 | |
| 		$this->id_query = "Q046";
 | |
| 		$query="UPDATE 
 | |
| 				`logdb_stats_".$this->xmpp_host."` 
 | |
| 			SET 
 | |
| 				count='$stats' 
 | |
| 			WHERE 
 | |
| 				owner_id='".$this->user_id."' 
 | |
| 			AND 
 | |
| 				peer_name_id='$peer_name_id' 
 | |
| 			AND 
 | |
| 				peer_server_id='$peer_server_id' 
 | |
| 			AND 
 | |
| 				at='$tslice'
 | |
| 				
 | |
| 		";
 | |
| 
 | |
| 		return $this->update($query);
 | |
| 	}
 | |
| 
 | |
| 	private function recount_messages($peer_name_id,$peer_server_id,$tslice) {
 | |
| 	
 | |
| 		$this->id_query = "Q047";
 | |
| 		$table = $this->construct_table($tslice);
 | |
| 		$query="SELECT
 | |
| 				count(timestamp) as cnt 
 | |
| 			FROM 
 | |
| 				`$table`
 | |
| 			WHERE 
 | |
| 				owner_id='".$this->user_id."' 
 | |
| 			AND 
 | |
| 				peer_name_id='$peer_name_id' 
 | |
| 			AND 
 | |
| 				peer_server_id='$peer_server_id' 
 | |
| 			AND 
 | |
| 				ext is NULL
 | |
| 		";
 | |
| 		
 | |
| 		return $this->select($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	private function move_mylink_from_trash($peer_name_id,$link) {
 | |
| 
 | |
| 		$this->id_query = "Q048";
 | |
| 		$lnk = $this->sql_validate($link,"string");
 | |
| 		$query="UPDATE 
 | |
| 				jorge_mylinks 
 | |
| 			SET 
 | |
| 				ext = NULL 
 | |
| 			WHERE 
 | |
| 				owner_id ='".$this->user_id."' 
 | |
| 			AND
 | |
| 				vhost='".$this->vhost."'
 | |
| 			AND 
 | |
| 				peer_name_id='$peer_name_id' 
 | |
| 			AND
 | |
| 				ext = '".$this->ext_idx."'
 | |
| 			AND 
 | |
| 				link like '$link%'
 | |
| 		";
 | |
| 
 | |
| 		return $this->update($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	private function move_fav_from_trash($peer_name_id,$peer_server_id,$tslice) {
 | |
| 
 | |
| 		$this->id_query = "Q049";
 | |
| 		$query="UPDATE 
 | |
| 				jorge_favorites 
 | |
| 			SET 
 | |
| 				ext = NULL
 | |
| 			WHERE 
 | |
| 				owner_id='".$this->user_id."' 
 | |
| 			AND 
 | |
| 				peer_name_id='$peer_name_id' 
 | |
| 			AND 
 | |
| 				peer_server_id='$peer_server_id' 
 | |
| 			AND 
 | |
| 				tslice='$tslice'
 | |
| 			AND
 | |
| 				ext = '".$this->ext_idx."'
 | |
| 			AND
 | |
| 				vhost='".$this->vhost."'
 | |
| 		";
 | |
| 	
 | |
| 		return $this->update($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function delete_messages($peer_name_id,$peer_server_id,$tslice) {
 | |
| 
 | |
| 		$this->id_query = "Q050";
 | |
| 		$this->prepare($peer_name_id,$peer_server_id,$tslice);
 | |
| 		$table = $this->construct_table($this->tslice,"date");
 | |
| 		$query="DELETE FROM 
 | |
| 				`$table`
 | |
| 			WHERE 
 | |
| 				owner_id='".$this->user_id."' 
 | |
| 			AND 
 | |
| 				peer_name_id='".$this->peer_name_id."' 
 | |
| 			AND 
 | |
| 				peer_server_id='".$this->peer_server_id."' 
 | |
| 			AND 
 | |
| 				ext = '".$this->ext_idx."'
 | |
| 				
 | |
| 		";
 | |
| 
 | |
| 		return $this->delete($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function delete_mylinks($peer_name_id,$peer_server_id,$tslice) {
 | |
| 	
 | |
| 		$this->id_query = "Q051";
 | |
| 		$this->prepare($peer_name_id,$peer_server_id,$tslice);
 | |
| 		$query="DELETE FROM
 | |
| 				jorge_mylinks 
 | |
| 			WHERE 
 | |
| 				owner_id='".$this->user_id."' 
 | |
| 			AND
 | |
| 				vhost='".$this->vhost."'
 | |
| 			AND 
 | |
| 				ext='".$this->ext_idx."' 
 | |
| 			AND 
 | |
| 				peer_name_id = '".$this->peer_name_id."' 
 | |
| 			AND 
 | |
| 				peer_server_id='".$this->peer_server_id."' 
 | |
| 			AND 
 | |
| 				datat = '".$this->tslice."'
 | |
| 				
 | |
| 		";
 | |
| 
 | |
| 		return $this->delete($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function delete_favorites($peer_name_id,$peer_server_id,$tslice) {
 | |
| 
 | |
| 		$this->id_query = "Q052";
 | |
| 		$this->prepare($peer_name_id,$peer_server_id,$tslice);
 | |
| 		$query="DELETE FROM 
 | |
| 				jorge_favorites 
 | |
| 			WHERE 
 | |
| 				owner_id='".$this->user_id."' 
 | |
| 			AND 
 | |
| 				peer_name_id='".$this->peer_name_id."' 
 | |
| 			AND 
 | |
| 				peer_server_id='".$this->peer_server_id."' 
 | |
| 			AND 
 | |
| 				tslice='".$this->tslice."'
 | |
| 			AND
 | |
| 				ext = '".$this->ext_idx."'
 | |
| 			AND
 | |
| 				vhost='".$this->vhost."'
 | |
| 		";
 | |
| 
 | |
| 		return $this->delete($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function search_query($tslice) {
 | |
| 
 | |
| 		$this->id_query = "Q053";
 | |
| 		$this->vital_check();
 | |
| 		if ($this->user_query === null) {
 | |
| 
 | |
| 				return false;
 | |
| 
 | |
| 			}
 | |
| 		$table = $this->construct_table($this->sql_validate($tslice,"date"));
 | |
| 		$query="SELECT
 | |
| 				timestamp AS ts, 
 | |
| 				peer_name_id, 
 | |
| 				peer_server_id, 
 | |
| 				direction, 
 | |
| 				ext, 
 | |
| 				body, 
 | |
| 				MATCH(body) AGAINST('".$this->user_query."' IN BOOLEAN MODE) AS score
 | |
| 			FROM 
 | |
| 				`$table`
 | |
| 			FORCE INDEX
 | |
| 				(search_i)
 | |
| 			WHERE 
 | |
| 				MATCH(body) AGAINST('".$this->user_query."' IN BOOLEAN MODE) 
 | |
| 			AND 
 | |
| 				owner_id='".$this->user_id."' 
 | |
| 			LIMIT 
 | |
| 				0,10000
 | |
| 		";
 | |
| 
 | |
| 		$this->select($query,"raw");
 | |
| 		return $this->commit_select(array("ts","peer_name_id","peer_server_id","direction","ext","body","score"));
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function search_query_chat_stream($peer_name_id,$peer_server_id,$tslice,$start_tag = null) {
 | |
| 		
 | |
| 		$this->id_query = "Q054";
 | |
| 		$this->prepare($peer_name_id,$peer_server_id,$tslice);
 | |
| 		$table = $this->construct_table($this->sql_validate($this->tslice,"date"));
 | |
| 		if ($start_tag === null) {
 | |
| 
 | |
| 				$start_tag="0";
 | |
| 		}
 | |
| 		$start_tag = $this->sql_validate($start_tag,"integer");
 | |
| 
 | |
| 		$query="SELECT 
 | |
| 				from_unixtime(timestamp+0) AS ts, 
 | |
| 				peer_name_id, 
 | |
| 				peer_server_id, 
 | |
| 				direction, 
 | |
| 				ext, 
 | |
| 				body 
 | |
| 			FROM 
 | |
| 				`$table` 
 | |
| 			FORCE INDEX
 | |
| 				(search_i)
 | |
| 			WHERE 
 | |
| 				owner_id='".$this->user_id."' 
 | |
| 			AND 
 | |
| 				peer_name_id='".$this->peer_name_id."' 
 | |
| 			AND 
 | |
| 				peer_server_id='".$this->peer_server_id."' 
 | |
| 			LIMIT 
 | |
| 				$start_tag,10000
 | |
| 		";
 | |
| 
 | |
| 		$this->select($query,"raw");
 | |
| 		return $this->commit_select(array("ts","peer_name_id","peer_server_id","direction","ext","body"));
 | |
| 	
 | |
| 	}
 | |
| 
 | |
| 	public function search_query_in_user_chat($peer_name_id,$peer_server_id,$tslice,$start_tag) {
 | |
| 		
 | |
| 		$this->id_query = "Q055";
 | |
| 		if ($this->user_query === null) {
 | |
| 
 | |
| 				return false;
 | |
| 
 | |
| 			}
 | |
| 		$this->prepare($peer_name_id,$peer_server_id,$tslice);
 | |
| 		$table = $this->construct_table($this->sql_validate($this->tslice,"date"));
 | |
| 		if ($start_tag === null) {
 | |
| 
 | |
| 				$start_tag="0";
 | |
| 		}
 | |
| 		$start_tag = $this->sql_validate($start_tag,"integer");
 | |
| 		$query="SELECT
 | |
| 				timestamp AS ts, 
 | |
| 				peer_name_id, 
 | |
| 				peer_server_id, 
 | |
| 				direction, 
 | |
| 				ext, 
 | |
| 				body ,
 | |
| 				MATCH(body) AGAINST('".$this->user_query."' IN BOOLEAN MODE) AS score 
 | |
| 			FROM
 | |
| 				`$table` 
 | |
| 			FORCE INDEX
 | |
| 				(search_i)
 | |
| 			WHERE 
 | |
| 				match(body) against('".$this->user_query."' IN BOOLEAN MODE) 
 | |
| 			AND 
 | |
| 				owner_id='".$this->user_id."' 
 | |
| 			AND 
 | |
| 				peer_name_id='".$this->peer_name_id."' 
 | |
| 			AND
 | |
| 				peer_server_id='".$this->peer_server_id."' 
 | |
| 			LIMIT 
 | |
| 				$start_tag,10000
 | |
| 		";
 | |
| 
 | |
| 		$this->select($query,"raw");
 | |
| 		return $this->commit_select(array("ts","peer_name_id","peer_server_id","direction","ext","body","score"));
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function create_search_results_table() {
 | |
| 
 | |
| 		$this->id_query = "Q055";
 | |
| 		$this->query_type = "create_table";
 | |
| 		$query="CREATE TEMPORARY TABLE 
 | |
| 				jorge_results_table 
 | |
| 				(
 | |
| 					ts VARCHAR(30),
 | |
| 					time_slice VARCHAR(10),
 | |
| 					peer_name_id MEDIUMINT,
 | |
| 					peer_server_id SMALLINT,
 | |
| 					direction ENUM('to','from'),
 | |
| 					body TEXT,
 | |
| 					score FLOAT,
 | |
| 					ext TINYINT
 | |
| 				)
 | |
| 		";
 | |
| 		
 | |
| 		return $this->db_query($query);
 | |
| 	}
 | |
| 
 | |
| 	public function insert_data_to_result_table($ts,$time_slice,$peer_name_id,$peer_server_id,$direction,$body,$score,$ext){
 | |
| 
 | |
| 		$this->id_query = "Q056";
 | |
| 		$query="INSERT INTO jorge_results_table 
 | |
| 				(ts,time_slice,peer_name_id,peer_server_id,direction,body,score,ext) 
 | |
| 			VALUES (
 | |
|                                         '$ts',
 | |
|                                         '$time_slice',
 | |
|                                         '$peer_name_id',
 | |
|                                         '$peer_server_id',
 | |
|                                         '$direction',
 | |
|                                         '$body',
 | |
|                                         '$score',
 | |
|                                         '$ext'
 | |
| 				)
 | |
| 		";
 | |
| 
 | |
| 		return $this->insert($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function get_search_results() {
 | |
| 
 | |
| 		$this->id_query = "Q057";
 | |
| 		$query="SELECT 
 | |
| 				FROM_UNIXTIME(ts+0) AS ts, 
 | |
| 				time_slice, 
 | |
| 				peer_name_id, 
 | |
| 				peer_server_id, 
 | |
| 				direction, 
 | |
| 				body, 
 | |
| 				score, 
 | |
| 				ext 
 | |
| 			FROM
 | |
| 				jorge_results_table 
 | |
| 			ORDER BY 
 | |
| 				score 
 | |
| 			DESC LIMIT 100
 | |
| 			
 | |
| 		";
 | |
| 
 | |
| 		$this->select($query,"raw");
 | |
| 		return $this->commit_select(array("ts","time_slice","peer_name_id","peer_server_id","direction","body","score","ext"));
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function get_folder_content($at) {
 | |
| 
 | |
| 		$this->id_query = "Q058";
 | |
| 		$this->vital_check();
 | |
| 		$at = $this->sql_validate($at,"string");
 | |
|                 if ($this->spec_ignore === true) {
 | |
| 
 | |
|                         $sql = "AND peer_name_id != '".$this->ignore_id."'";
 | |
| 
 | |
|                 }
 | |
| 		$query="SELECT 
 | |
| 				distinct(at) AS at 
 | |
| 			FROM 
 | |
| 				`logdb_stats_".$this->xmpp_host."` 
 | |
| 			WHERE 
 | |
| 				owner_id = '".$this->user_id."' 
 | |
| 			AND 
 | |
| 				substring(at,1,7) = '$at' 
 | |
| 				$sql
 | |
| 			ORDER BY 
 | |
| 				str_to_date(at,'%Y-%m-%d') 
 | |
| 			DESC
 | |
| 		";
 | |
| 
 | |
| 		$this->select($query,"raw");
 | |
| 		return $this->commit_select(array("at"));
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function insert_user_id($user_name) {
 | |
| 
 | |
| 		$this->id_query = "Q059";
 | |
| 		$user_name = $this->sql_validate($user_name,"string");
 | |
| 		$query="INSERT INTO 
 | |
| 				`logdb_users_".$this->xmpp_host."` 
 | |
| 			SET 
 | |
| 				username='$user_name'
 | |
| 		";
 | |
| 		return $this->insert($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function insert_new_settings($user_name) {
 | |
| 
 | |
| 		$this->id_query = "Q060";
 | |
| 		$user_name = $this->sql_validate($user_name,"string");
 | |
| 		$query="INSERT INTO 
 | |
| 				`logdb_settings_".$this->xmpp_host."` (owner_id,dolog_default) 
 | |
| 			VALUES 
 | |
| 				((SELECT user_id FROM `logdb_users_".$this->xmpp_host."` WHERE username='$user_name'), '1')
 | |
| 				
 | |
| 		";
 | |
| 		return $this->insert($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function get_jorge_pref($pref_id = null) {
 | |
| 
 | |
| 		$this->id_query = "Q061";
 | |
| 		if ($pref_id !== null) {
 | |
| 
 | |
| 			$pref_id = $this->sql_validate($pref_id,"integer");
 | |
| 			$sql = "AND pref_id = '$pref_id'";
 | |
| 				
 | |
| 		}
 | |
| 		$query="SELECT 
 | |
| 				pref_id, 
 | |
| 				pref_value 
 | |
| 			FROM 
 | |
| 				jorge_pref 
 | |
| 			WHERE 
 | |
| 				owner_id='".$this->user_id."'
 | |
| 				$sql
 | |
| 			AND
 | |
| 				vhost = '".$this->vhost."'
 | |
| 		";
 | |
| 
 | |
| 		if ($pref_id === null) {
 | |
| 
 | |
| 				$this->select($query,"raw");
 | |
| 				return $this->commit_select(array("pref_id","pref_value"));
 | |
| 				
 | |
| 			}
 | |
| 			else{
 | |
| 
 | |
| 				return $this->select($query);
 | |
| 				
 | |
| 		}
 | |
| 
 | |
| 		return false;
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function set_jorge_pref($pref_id,$pref_value) {
 | |
| 
 | |
| 		$this->id_query = "Q062";
 | |
| 		$this->vital_check();
 | |
| 		$pref_id = $this->sql_validate($pref_id,"integer");
 | |
| 		$pref_value = $this->sql_validate($pref_value,"integer");
 | |
| 		if ($this->row_count("SELECT pref_id FROM jorge_pref WHERE owner_id='".$this->user_id."' AND pref_id='$pref_id' AND vhost='".$this->vhost."'") === false) {
 | |
| 
 | |
| 			return false;
 | |
| 
 | |
| 		}
 | |
| 		if ($this->result > 0) {
 | |
| 
 | |
| 				$query="UPDATE
 | |
| 						jorge_pref 
 | |
| 					SET 
 | |
| 						pref_value='$pref_value' 
 | |
| 					WHERE 
 | |
| 						owner_id='".$this->user_id."' 
 | |
| 					AND 
 | |
| 						pref_id='$pref_id'
 | |
| 					AND
 | |
| 						vhost = '".$this->vhost."'
 | |
| 				";
 | |
| 				return $this->update($query);
 | |
| 
 | |
| 			}
 | |
| 			else{
 | |
| 
 | |
| 				$query="INSERT INTO 
 | |
| 						jorge_pref(owner_id,pref_id,pref_value,vhost) 
 | |
| 					VALUES 
 | |
| 						('".$this->user_id."','$pref_id','$pref_value','".$this->vhost."')
 | |
| 				";
 | |
| 				return $this->insert($query);
 | |
| 				
 | |
| 		}
 | |
| 
 | |
| 		return false;
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function sphinx_get_single($peer_name_id, $peer_server_id, $peer_resource_id, $timestamp, $tslice) {
 | |
| 
 | |
| 		$this->id_query = "Q063";
 | |
| 		$this->vital_check();
 | |
| 		$this->prepare($peer_name_id,$peer_server_id,$tslice);
 | |
| 		$peer_resource_id = $this->sql_validate($peer_resource_id,"integer");
 | |
| 		$timestamp = $this->sql_validate($timestamp,"string");
 | |
| 		$query="SELECT
 | |
| 				body
 | |
| 			FROM
 | |
| 				`".$this->construct_table($this->tslice)."`
 | |
| 			WHERE
 | |
| 				owner_id = '".$this->user_id."'
 | |
| 			AND
 | |
| 				peer_name_id = '".$this->peer_name_id."'
 | |
| 			AND
 | |
| 				peer_server_id = '".$this->peer_server_id."'
 | |
| 			AND
 | |
| 				peer_resource_id = '".$peer_resource_id."'
 | |
| 			AND
 | |
| 				timestamp like '".$timestamp."%'
 | |
| 				
 | |
| 		";
 | |
| 
 | |
| 		return $this->select($query);
 | |
| 		
 | |
| 	}
 | |
| 
 | |
| 	public function get_favorites() {
 | |
| 
 | |
| 		$this->id_query = "Q064";
 | |
| 		$this->vital_check();
 | |
| 		$query="SELECT * 
 | |
| 			FROM 
 | |
| 				jorge_favorites 
 | |
| 			WHERE 
 | |
| 				owner_id='".$this->user_id."'
 | |
| 			AND
 | |
| 				vhost='".$this->vhost."'
 | |
| 			AND 
 | |
| 				ext is NULL 
 | |
| 			ORDER BY 
 | |
| 				str_to_date(tslice,'%Y-%m-%d')
 | |
| 			DESC
 | |
| 		";
 | |
| 
 | |
| 		$this->select($query,"raw");
 | |
| 		return $this->commit_select(array("link_id","peer_name_id","peer_server_id","resource_id","tslice","comment"));
 | |
| 	
 | |
| 	}
 | |
| 
 | |
| 	public function set_favorites($peer_name_id,$peer_server_id,$peer_resource_id = null, $tslice,$comment) {
 | |
| 
 | |
| 		$this->id_query = "Q065";
 | |
| 		$this->vital_check();
 | |
| 		$this->prepare($peer_name_id,$peer_server_id,$tslice);
 | |
| 		#$peer_resource_id = $this->sql_validate($peer_resource_id,"integer");
 | |
| 		$comment = $this->sql_validate($comment,"string");
 | |
| 		$query="INSERT INTO 
 | |
| 				jorge_favorites(owner_id,peer_name_id,peer_server_id,tslice,comment,vhost) 
 | |
| 			VALUES(
 | |
| 				'".$this->user_id."',
 | |
| 				'".$this->peer_name_id."',
 | |
| 				'".$this->peer_server_id."',
 | |
| 				'".$this->tslice."',
 | |
| 				'$comment',
 | |
| 				'".$this->vhost."'
 | |
| 				)
 | |
| 			";
 | |
| 		
 | |
| 		return $this->insert($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function delete_favorites_id($link_id) {
 | |
| 
 | |
| 		$this->id_query = "Q066";
 | |
| 		$this->vital_check();
 | |
| 		$link_id = $this->sql_validate($link_id,"string");
 | |
| 		$query="DELETE FROM
 | |
| 				jorge_favorites
 | |
| 			WHERE
 | |
| 				owner_id = ".$this->user_id."
 | |
| 			AND
 | |
| 				vhost='".$this->vhost."'
 | |
| 			AND
 | |
| 				link_id = '$link_id';
 | |
| 		";
 | |
| 		
 | |
| 		return $this->delete($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function check_favorite($peer_name_id,$peer_server_id,$tslice) {
 | |
| 
 | |
| 		$this->id_query = "Q067";
 | |
| 		$this->vital_check();
 | |
| 		$this->prepare($peer_name_id,$peer_server_id,$tslice);
 | |
| 		$query="SELECT 
 | |
| 				count(*) as cnt
 | |
| 			FROM 
 | |
| 				jorge_favorites 
 | |
| 			WHERE 
 | |
| 				owner_id='".$this->user_id."' 
 | |
| 			AND 
 | |
| 				tslice='".$this->tslice."' 
 | |
| 			AND 
 | |
| 				peer_name_id='".$this->peer_name_id."' 
 | |
| 			AND 
 | |
| 				peer_server_id='".$this->peer_server_id."'
 | |
| 			AND
 | |
| 				vhost='".$this->vhost."'
 | |
| 			AND
 | |
| 				ext is null
 | |
| 		";
 | |
| 
 | |
| 		return $this->select($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function get_favorites_count() {
 | |
| 
 | |
| 		$this->id_query = "Q068";
 | |
| 		$this->vital_check();
 | |
| 		$query="SELECT
 | |
| 				count(*) as cnt
 | |
| 			FROM
 | |
| 				jorge_favorites
 | |
| 			WHERE
 | |
| 				owner_id = '".$this->user_id."'
 | |
| 			AND
 | |
| 				vhost='".$this->vhost."'
 | |
| 			AND
 | |
| 				ext is null
 | |
| 		";
 | |
| 
 | |
| 		return $this->select($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function get_top_ten($date,$vhost = null) {
 | |
| 
 | |
| 		$this->id_query = "Q069";
 | |
| 		if ($vhost === null) {
 | |
| 
 | |
| 				$vh = $this->xmpp_host;
 | |
| 
 | |
| 			}
 | |
| 			else{
 | |
| 				
 | |
| 				$vh = $this->vh($vhost,true);
 | |
| 
 | |
| 		}
 | |
| 		$date = $this->sql_validate($date,"date");
 | |
| 		$query="SELECT
 | |
| 				at, 
 | |
| 				owner_id, 
 | |
| 				peer_name_id, 
 | |
| 				peer_server_id, 
 | |
| 				count 
 | |
| 			FROM 
 | |
| 				`logdb_stats_".$vh."` 
 | |
| 			WHERE 
 | |
| 				at = '$date' 
 | |
| 			ORDER BY 
 | |
| 				count 
 | |
| 			DESC LIMIT 10
 | |
| 		";
 | |
| 		
 | |
| 		$this->select($query,"raw");
 | |
| 		return $this->commit_select(array("at","owner_id","peer_name_id","peer_server_id","count"));
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function get_monthly_stats($vhost = null) {
 | |
| 
 | |
| 		$this->id_query = "Q070";
 | |
| 		if ($vhost === null) {
 | |
| 
 | |
| 				$vh = $this->xmpp_host;
 | |
| 
 | |
| 			}
 | |
| 			else{
 | |
| 				
 | |
| 				$vh = $this->vh($vhost,true);
 | |
| 
 | |
| 		}
 | |
| 		// This query need tweak to use ex.: where at between '2009-2' and '2009-3', it speeds up and corrects query, also forces to use index, instead full table scan
 | |
| 		$query="SELECT 
 | |
| 				count(distinct(owner_id)) AS users_total, 
 | |
| 				unix_timestamp(at)*10000 AS time_unix,
 | |
| 				sum(count) AS messages 
 | |
| 			FROM 
 | |
| 				`logdb_stats_".$vh."` 
 | |
| 			GROUP BY 
 | |
| 				at 
 | |
| 			ORDER BY 
 | |
| 				str_to_date(at,'%Y-%m-%d') 
 | |
| 			DESC LIMIT 30
 | |
| 		";
 | |
| 		
 | |
| 		$this->select($query,"raw");
 | |
| 		return $this->commit_select(array("users_total","time_unix","messages"));
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function get_hourly_stats($date,$vhost = null) {
 | |
| 
 | |
| 		$this->id_query = "Q071";
 | |
| 		if ($vhost === null) {
 | |
| 
 | |
| 				$vh = $this->vhost;
 | |
| 
 | |
| 			}
 | |
| 			else{
 | |
| 				
 | |
| 				$vh = $this->vh($vhost);
 | |
| 
 | |
| 		}
 | |
| 		$date = $this->sql_validate($date,"date");
 | |
| 		$query="SELECT
 | |
| 				hour,
 | |
| 				value 
 | |
| 			FROM 
 | |
| 				jorge_stats 
 | |
| 			WHERE 
 | |
| 				day='$date' 
 | |
| 			AND 
 | |
| 				vhost='".$vh."' 
 | |
| 			ORDER BY 
 | |
| 				hour 
 | |
| 			ASC
 | |
| 		";
 | |
| 
 | |
| 		$this->select($query,"raw");
 | |
| 		return $this->commit_select(array("hour","value"));
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function get_weekly_stats($date_start,$date_end,$vhost = null) {
 | |
| 
 | |
| 		$this->id_query = "Q072";
 | |
| 		if ($vhost === null) {
 | |
| 
 | |
| 				$vh = $this->vhost;
 | |
| 
 | |
| 			}
 | |
| 			else{
 | |
| 				
 | |
| 				$vh = $this->sql_validate($vhost,"string");
 | |
| 
 | |
| 		}
 | |
| 		$date_start = $this->sql_validate($date_start,"date");
 | |
| 		$date_end = $this->sql_validate($date_end,"date");
 | |
| 		$query="SELECT 
 | |
| 				hour,
 | |
| 				value 
 | |
| 			FROM 
 | |
| 				jorge_stats 
 | |
| 			WHERE 
 | |
| 				day<='$date_end' 
 | |
| 			AND 
 | |
| 				day >= '$date_start' 
 | |
| 			AND 
 | |
| 				vhost='".$vh."' 
 | |
| 			ORDER BY 
 | |
| 				day,hour 
 | |
| 			ASC
 | |
| 		";
 | |
| 
 | |
| 		$this->select($query,"raw");
 | |
| 		return $this->commit_select(array("hour","value"));
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function get_personal_top() {
 | |
| 
 | |
| 		$this->id_query = "Q073";
 | |
| 		$this->vital_check();
 | |
| 		$query="SELECT 
 | |
| 				peer_name_id,
 | |
| 				peer_server_id,
 | |
| 				at,
 | |
| 				count 
 | |
| 			FROM 
 | |
| 				`logdb_stats_".$this->xmpp_host."` 
 | |
| 			WHERE 
 | |
| 				owner_id='".$this->user_id."' 
 | |
| 			AND
 | |
| 				peer_name_id!='".$this->ignore_id."' 
 | |
| 			AND 
 | |
| 				ext is NULL 
 | |
| 			ORDER BY 
 | |
| 				count 
 | |
| 			DESC LIMIT 10
 | |
| 		";
 | |
| 		
 | |
| 		$this->select($query,"raw");
 | |
| 		return $this->commit_select(array("peer_name_id","peer_server_id","at","count"));
 | |
| 	
 | |
| 	}
 | |
| 
 | |
| 	public function get_personal_sum() {
 | |
| 
 | |
| 		$this->id_query = "Q074";
 | |
| 		$this->vital_check();
 | |
| 		$query="SELECT
 | |
| 				sum(count) as cnt 
 | |
| 			FROM
 | |
| 				`logdb_stats_".$this->xmpp_host."` 
 | |
| 			WHERE 
 | |
| 				owner_id='".$this->user_id."' 
 | |
| 			AND
 | |
| 				peer_name_id!='".$this->ignore_id."'
 | |
| 		";
 | |
| 		return $this->select($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function erase_all() {
 | |
| 
 | |
| 		$this->id_query = "Q075";
 | |
| 		$this->vital_check();
 | |
| 		$query="SELECT 
 | |
| 				distinct(at) 
 | |
| 			FROM 
 | |
| 				`logdb_stats_".$this->xmpp_host."` 
 | |
| 			WHERE 
 | |
| 				owner_id='".$this->user_id."'
 | |
| 		";
 | |
| 		$this->select($query,"raw");
 | |
| 		$this->commit_select(array("at"));
 | |
| 		$results = $this->result;
 | |
| 		$this->id_query = "Q076";
 | |
| 		foreach ($results as $result) {
 | |
| 
 | |
| 			$query="DELETE FROM 
 | |
| 					`logdb_messages_$result[at]_".$this->xmpp_host."` 
 | |
| 				WHERE 
 | |
| 					owner_id='".$this->user_id."'
 | |
| 				";
 | |
| 			if ($this->delete($query) === false) {
 | |
| 					
 | |
| 					return false;
 | |
| 
 | |
| 			}
 | |
| 		
 | |
| 		}
 | |
| 		$this->id_query = "Q077";
 | |
| 		$query="DELETE FROM
 | |
| 				`logdb_stats_".$this->xmpp_host."` 
 | |
| 			WHERE 
 | |
| 				owner_id='".$this->user_id."'
 | |
| 			";
 | |
| 		if ($this->delete($query) === false) {
 | |
| 
 | |
| 			return false;
 | |
| 			
 | |
| 		}
 | |
| 		if ($this->jorge_cleanup_soft() === false) {
 | |
| 
 | |
| 			return false;
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 		return true;
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function jorge_cleanup() {
 | |
| 
 | |
| 		$this->id_query = "Q081";
 | |
| 		$this->vital_check();
 | |
| 		$query="DELETE FROM 
 | |
| 				jorge_pref 
 | |
| 			WHERE 
 | |
| 				owner_id='".$this->user_id."'
 | |
| 			AND
 | |
| 				vhost='".$this->vhost."'
 | |
| 			";
 | |
| 		if ($this->delete($query) === false) {
 | |
| 
 | |
| 			return false;
 | |
| 
 | |
| 		}
 | |
| 		$this->id_query = "Q082";
 | |
| 		$query="DELETE FROM
 | |
| 				`logdb_settings_".$this->xmpp_host."` 
 | |
| 			where 
 | |
| 				owner_id='".$this->user_id."'
 | |
| 			";
 | |
| 		if ($this->delete($query) === false) {
 | |
| 
 | |
| 			return false;
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 		return true;
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function jorge_cleanup_soft() {
 | |
| 
 | |
| 		$this->id_query = "Q083";
 | |
| 		$this->vital_check();
 | |
| 		$query="DELETE FROM 
 | |
| 				jorge_mylinks 
 | |
| 			WHERE 
 | |
| 				owner_id='".$this->user_id."'
 | |
| 			AND
 | |
| 				vhost='".$this->vhost."'
 | |
| 			";
 | |
| 		if ($this->delete($query) === false) {
 | |
| 
 | |
| 			return false;
 | |
| 
 | |
| 		}
 | |
| 		$this->id_query = "Q084";
 | |
| 		$query="DELETE FROM 
 | |
| 				jorge_favorites 
 | |
| 			WHERE
 | |
| 				owner_id='".$this->user_id."'
 | |
| 			AND
 | |
| 				vhost='".$this->vhost."'
 | |
| 			";
 | |
| 		if ($this->delete($query) === false) {
 | |
| 
 | |
| 			return false;
 | |
| 
 | |
| 		}
 | |
| 		$this->id_query = "Q085";
 | |
| 		$query="DELETE FROM 
 | |
| 				pending_del 
 | |
| 			WHERE 
 | |
| 				owner_id='".$this->user_id."'
 | |
| 			AND
 | |
| 				vhost='".$this->vhost."'
 | |
| 			";
 | |
| 		if ($this->delete($query) === false) {
 | |
| 
 | |
| 			return false;
 | |
| 		
 | |
| 		}
 | |
| 
 | |
| 		return true;
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function get_next_prev_day($peer_name_id, $peer_server_id, $tslice, $np) {
 | |
| 	
 | |
| 		$this->id_query = "Q086";
 | |
| 		$this->vital_check();
 | |
| 		$this->prepare($peer_name_id,$peer_server_id,$tslice);
 | |
| 		if ($np === "n") {
 | |
| 
 | |
| 				$sql1 = ">";
 | |
| 				$sql2 = "ASC";
 | |
| 			}
 | |
| 			elseif($np === "p") {
 | |
| 
 | |
| 				$sql1 = "<";
 | |
| 				$sql2 = "DESC";
 | |
| 			}
 | |
| 			else{
 | |
| 
 | |
| 				return false;
 | |
| 
 | |
| 		}
 | |
| 		$query="SELECT
 | |
| 				at 
 | |
| 			FROM
 | |
| 				`logdb_stats_".$this->xmpp_host."`
 | |
| 			WHERE 
 | |
| 				owner_id='".$this->user_id."' 
 | |
| 			AND
 | |
| 				peer_name_id = '".$this->peer_name_id."' 
 | |
| 			AND 
 | |
| 				peer_server_id = '".$this->peer_server_id."' 
 | |
| 			AND 
 | |
| 				str_to_date(at, '%Y-%m-%d') $sql1 str_to_date('".$this->tslice."', '%Y-%m-%d') 
 | |
| 			ORDER BY 
 | |
| 				str_to_date(at,'%Y-%m-%d') 
 | |
| 			$sql2 LIMIT 1
 | |
| 		";
 | |
| 		
 | |
| 		return $this->select($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function get_last_day() {
 | |
| 
 | |
| 		$this->id_query = "Q087";
 | |
| 		$this->vital_check();
 | |
| 		if ($this->spec_ignore === true) {
 | |
| 
 | |
| 			$sql = "AND peer_name_id != '".$this->ignore_id."'";
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 		$query="SELECT 
 | |
| 				at 
 | |
| 			FROM
 | |
| 				`logdb_stats_".$this->xmpp_host."` 
 | |
| 			WHERE 
 | |
| 				owner_id = '".$this->user_id."' 
 | |
| 				$sql
 | |
| 			ORDER BY str_to_date(at,'%Y-%m-%d') DESC LIMIT 1
 | |
| 		";
 | |
| 
 | |
| 		return $this->select($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	private function get_ignore_id() {
 | |
| 
 | |
| 		$this->id_query = "Q088";
 | |
| 		$query="SELECT
 | |
| 				user_id AS ignore_id
 | |
| 			FROM
 | |
| 				`logdb_users_".$this->xmpp_host."` 
 | |
| 			WHERE
 | |
| 				username=''
 | |
| 		";
 | |
| 
 | |
| 		return $this->select($query);
 | |
| 		
 | |
| 	}
 | |
| 
 | |
| 	private function set_ignore_id() {
 | |
| 
 | |
| 		if ($this->get_ignore_id() === false) {
 | |
| 
 | |
| 				return false;
 | |
| 
 | |
| 			}
 | |
| 			else{
 | |
| 
 | |
| 				$this->ignore_id = $this->result->ignore_id;
 | |
| 				return true;
 | |
| 				
 | |
| 		}
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	private function get_ext_index($table) {
 | |
| 
 | |
| 		$this->id_query = "Q089";
 | |
| 		$query="SELECT
 | |
| 				ext+1 as idx 
 | |
| 			FROM 
 | |
| 				`".$table."` 
 | |
| 			WHERE
 | |
| 				owner_id = '".$this->user_id."'
 | |
| 			AND
 | |
| 				peer_name_id = '".$this->peer_name_id."'
 | |
| 			AND
 | |
| 				peer_server_id = '".$this->peer_server_id."'
 | |
| 			AND
 | |
| 				ext is not NULL
 | |
| 			ORDER BY
 | |
| 				ext
 | |
| 			DESC LIMIT 1
 | |
| 		";
 | |
| 
 | |
| 		return $this->select($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function get_last_attempt($user_id) {
 | |
| 
 | |
| 		$this->id_query = "Q090";
 | |
| 		$user_id = $this->sql_validate($user_id,"integer");
 | |
| 		$query="SELECT
 | |
| 				count(id_user) AS cnt
 | |
| 			FROM
 | |
| 				jorge_logger 
 | |
| 			WHERE
 | |
| 				id_user = '$user_id' 
 | |
| 			AND
 | |
| 				log_time > date_sub(now(),interval 1 minute)
 | |
| 		";
 | |
| 
 | |
| 		return $this->select($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function is_left_or_right($date) {
 | |
| 
 | |
| 		$this->id_query = "Q091";
 | |
| 		$query="SELECT
 | |
| 				at 
 | |
| 			FROM
 | |
| 				`logdb_stats_".$this->xmpp_host."` 
 | |
| 			WHERE
 | |
| 				owner_id='".$this->user_id."' 
 | |
| 			AND
 | |
| 				at like '$date%' 
 | |
| 			LIMIT 1
 | |
| 		";
 | |
| 
 | |
| 		return $this->row_count($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function set_own_name($own_name) {
 | |
| 
 | |
| 		$this->id_query = "Q092";
 | |
| 		$this->vital_check();
 | |
| 		$own_name = $this->sql_validate($own_name,"string");
 | |
| 		$query="REPLACE INTO 
 | |
| 				jorge_self_names (owner_id, own_name, vhost) 
 | |
| 			VALUES
 | |
| 				(
 | |
| 				'".$this->user_id."',
 | |
| 				'".$own_name."',
 | |
| 				'".$this->vhost."'
 | |
| 				)
 | |
| 		";
 | |
| 
 | |
| 		return $this->replace_q($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function get_own_name() {
 | |
| 
 | |
| 		$this->id_query = "Q093";
 | |
| 		$this->vital_check();
 | |
| 		$query="SELECT
 | |
| 				own_name 
 | |
| 			FROM
 | |
| 				jorge_self_names 
 | |
| 			WHERE
 | |
| 				owner_id='".$this->user_id."' 
 | |
| 			AND
 | |
| 				vhost='".$this->vhost."'
 | |
| 		";
 | |
| 		
 | |
| 		return $this->select($query);
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function set_ext_index($idx) {
 | |
| 
 | |
| 		/*
 | |
| 			This is bit messy as we use ctype_digit() to check if string is an integer,
 | |
| 			so any number need to be set as type string and then pass to sql_validate() for validation.
 | |
| 			This should be changed in sql_validate() function to take care of all data that it gets...
 | |
| 		*/
 | |
| 
 | |
| 		settype($idx,"string");
 | |
| 		if ($this->sql_validate($idx,"integer") === false) {
 | |
| 
 | |
| 				return false;
 | |
| 
 | |
| 			}
 | |
| 			else{
 | |
| 
 | |
| 				$this->ext_idx = $idx;
 | |
| 				return true;
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 		return false;
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function get_last_idx() {
 | |
| 
 | |
| 		return $this->ext_idx;
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function set_user_query($user_query) {
 | |
| 
 | |
| 		$this->user_query = $this->sql_validate($user_query,"string");
 | |
| 		return true;
 | |
| 		
 | |
| 	}
 | |
| 
 | |
| 	public function remove_messages_from_trash($peer_name_id,$peer_server_id,$tslice) {
 | |
| 
 | |
| 		if ($this->delete_messages($peer_name_id,$peer_server_id,$tslice) === true) {
 | |
| 
 | |
| 				$this->unset_undo_table($peer_name_id,$peer_server_id,$tslice);
 | |
| 				$this->delete_mylinks($peer_name_id,$peer_server_id,$tslice);
 | |
| 				$this->delete_favorites($peer_name_id,$peer_server_id,$tslice);
 | |
| 
 | |
| 			}
 | |
| 
 | |
| 			else{
 | |
| 
 | |
| 				return false;
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 		return true;
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function db_error() {
 | |
| 
 | |
| 		return $this->is_error;
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function set_user_id($user_id) {
 | |
| 
 | |
| 		$user_id = $this->sql_validate($user_id,"integer");
 | |
| 		if ($user_id === false) {
 | |
| 				
 | |
| 				return false;
 | |
| 
 | |
| 			}
 | |
| 			else {
 | |
| 
 | |
| 				$this->user_id = $user_id;
 | |
| 				return true;
 | |
| 		}
 | |
| 
 | |
| 		return false;
 | |
| 		
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	protected function sql_validate($val,$type) {
 | |
| 
 | |
| 		if($this->db_driver === "mysql") {
 | |
| 
 | |
| 			if ($type==="integer") {
 | |
| 
 | |
| 				// Default - all this "integer" strings are really characters with should be numeric. Need Test!
 | |
| 				settype($val,"string");
 | |
| 
 | |
| 				if(ctype_digit($val)) {
 | |
| 					
 | |
| 						return $val;
 | |
| 
 | |
| 					}
 | |
| 				else{
 | |
| 						$this->is_error = true;
 | |
| 						return false;
 | |
| 				}
 | |
| 			}
 | |
| 			elseif($type==="string") {
 | |
| 
 | |
| 				return mysql_escape_string($val);
 | |
| 
 | |
| 				}
 | |
| 
 | |
| 			elseif($type==="date") {
 | |
| 
 | |
| 				list($ye, $mo, $da) = split("-", $val);
 | |
| 				if (!ctype_digit($ye) || !ctype_digit($mo) || !ctype_digit($da)) { 
 | |
| 		
 | |
| 						$this->is_error = true;
 | |
| 						return false;
 | |
| 						
 | |
| 					} 
 | |
| 					else { 
 | |
| 					
 | |
| 						return $val;
 | |
| 						
 | |
| 				}
 | |
| 
 | |
| 				$this->is_error = true;
 | |
| 				return false;
 | |
| 			}
 | |
| 			else{
 | |
| 				$this->is_error = true;
 | |
| 				return false;
 | |
| 			}
 | |
| 
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 	return false;
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	private function commit_select($arr) {
 | |
| 
 | |
| 		if ($this->is_error === true) {
 | |
| 				
 | |
| 				return false;
 | |
| 
 | |
| 			}
 | |
| 
 | |
| 		$this->object_to_array($arr);
 | |
| 		return true;
 | |
| 	
 | |
| 	}
 | |
| 
 | |
| 	private function object_to_array($arr) {
 | |
| 		
 | |
| 		settype($i, "integer");
 | |
| 		settype($z, "integer");
 | |
| 		$result = $this->result;
 | |
| 		while($row = mysql_fetch_object($result)) {
 | |
| 			
 | |
| 			$i++;
 | |
| 			foreach ($arr as $key) {
 | |
| 				
 | |
| 				$z++;
 | |
| 				$items[$i][$key] = $row->$key;
 | |
| 		
 | |
| 			}
 | |
| 
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 		return $this->result = $items;
 | |
| 		
 | |
| 	}
 | |
| 
 | |
| 	private function prepare($peer_name_id = null,$peer_server_id = null, $tslice = null) {
 | |
| 
 | |
| 		if ($peer_name_id !== null) {
 | |
| 
 | |
| 				$this->peer_name_id = $this->sql_validate($peer_name_id,"integer");
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 		if ($peer_server_id !== null) {
 | |
| 
 | |
| 				$this->peer_server_id = $this->sql_validate($peer_server_id,"integer");
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 		if ($tslice !== null) {
 | |
| 
 | |
| 				$this->tslice = $this->sql_validate($tslice,"date");
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 		$this->vital_check();
 | |
| 		return;
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	private function construct_table($tslice) {
 | |
| 		
 | |
| 		return $tslice_table = $this->messages_table.''.$tslice.'_'.$this->xmpp_host;
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	private function vital_check() {
 | |
| 
 | |
| 		if($this->user_id === false OR !$this->user_id) {
 | |
| 
 | |
| 				print "<br><br><small>Operation aborted! Can't continue.</small><br><br>";
 | |
| 				exit; // abort all, user_id MUST be set.
 | |
| 		}
 | |
| 		return true;
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	private function vh($vhost,$dash = null) {
 | |
| 
 | |
| 		if ($dash === true) {
 | |
| 
 | |
| 				return str_replace(".","_",$this->sql_validate($vhost,"string"));
 | |
| 
 | |
| 
 | |
| 			}
 | |
| 			else{
 | |
| 				
 | |
| 				return $this->sql_validate($vhost,"string");
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function set_debug($bool) {
 | |
| 
 | |
| 		if($bool === true) { 
 | |
| 		
 | |
| 				$this->is_debug = true; 
 | |
| 				return true;
 | |
| 				
 | |
| 			}
 | |
| 			elseif($bool === false) {
 | |
| 
 | |
| 				$this->is_debug = false;
 | |
| 				return true;
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 		return false;
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function spec_ignore($bool) {
 | |
| 
 | |
| 		if($bool === true) {
 | |
| 
 | |
| 				$this->spec_ignore = true;
 | |
| 				return true;
 | |
| 
 | |
| 			}
 | |
| 			elseif($bool === false) {
 | |
| 
 | |
| 				$this->spec_ignore = false;
 | |
| 				return true;
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 		return false;
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	private function show_debug_info($query = null, $time = null) {
 | |
| 
 | |
| 		if ($this->is_debug === true) {
 | |
| 		
 | |
| 			if ($query !== null) {
 | |
| 					
 | |
| 					print "<br><small><b>QueryID:</b> ".$this->id_query.": ".htmlspecialchars($query)."<br>";
 | |
| 				}
 | |
| 			if ($query === null AND $time !== null) {
 | |
| 			
 | |
| 					print "<b>SQL performed in:</b> ".$this->time_result."</small><br><br>";
 | |
| 
 | |
| 				}
 | |
| 		
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	private function sql_time() {
 | |
| 		
 | |
| 		list($usec, $sec) = explode(" ",microtime());
 | |
| 		return ((float)$usec + (float)$sec);
 | |
| 	}
 | |
| 
 | |
| 	private function time_start() {
 | |
| 
 | |
| 		if ($this->is_debug === true) {
 | |
| 		
 | |
| 			return $this->time_start = $this->sql_time();
 | |
| 		
 | |
| 		}
 | |
| 	
 | |
| 	}
 | |
| 
 | |
| 	private function time_end() {
 | |
| 
 | |
| 		if ($this->is_debug === true) {
 | |
| 		
 | |
| 			$start = $this->time_start;
 | |
| 			$end = $this->sql_time();
 | |
| 			return $this->time_result = substr($end - $start, 0, 10);
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 	}
 | |
| 
 | |
| 	public function __destruct() {
 | |
| 
 | |
| 		mysql_free_result();
 | |
| 		mysql_close();
 | |
| 		$this->user_id = null;
 | |
| 		$this->result = null;
 | |
| 
 | |
| 	}
 | |
| 
 | |
| }
 | |
| 
 | |
| ?>
 |