Файл: system/classes/messages.php
Строк: 91
<?php
class messages {
public function send_message($from, $whom, $text){
global $db;
if(empty($text))
return false;
if($db -> query('INSERT INTO `messages` (`time`, `group`, `from`, `whom`, `text`) VALUES (UNIX_TIMESTAMP() , ?, ?, ?, ?);', self::generate_group($from, $whom), $from, $whom, $text) == TRUE)
return true;
else
return false;
}
private function generate_group($one_user, $two_user){
if($one_user > $two_user)
return $two_user.$one_user;
else
return $one_user.$two_user;
}
public function get_messages($one_user, $two_user, $n){
global $db;
$group = self::generate_group($one_user, $two_user);
$messages = $db -> query("SELECT `id`,`from`,`whom`,`read`,`time`,`text` from `messages` WHERE `group` = ? and `delete` != ? ORDER by `time` DESC LIMIT ?,?", $group, $one_user, $n, get_elements());
if(!empty($messages)){
return $messages;
}else{
return false;
}
}
public function count_messages($one_user, $two_user){
global $db;
$group = self::generate_group($one_user, $two_user);
$messages = $db -> query("SELECT count(*) from `messages` WHERE `group` = ? and `delete` != ?", $group, $one_user);
if(!empty($messages)){
return $messages[0]['count(*)'];
}else{
return 0;
}
}
public function unread($user){
global $db;
$messages = $db -> query("SELECT count(*) from `messages` WHERE `whom` = ? and `read` = 0 and `delete` != ?", $user, $user);
if(!empty($messages)){
return $messages[0]['count(*)'];
}else{
return 0;
}
}
public function unread_group($user, $one_user, $two_user){
global $db;
$group = self::generate_group($one_user, $two_user);
$messages = $db -> query("SELECT count(*) from `messages` WHERE `whom` = ? and `group` = ? and `read` = 0 and `delete` != ?", $user, $group, $one_user);
if(!empty($messages)){
return $messages[0]['count(*)'];
}else{
return 0;
}
}
public function delete($user, $id){
global $db;
$messages = $db -> query("SELECT `delete` from `messages` WHERE `id` = ? and (`from` = ? or `whom` = ?)", $id, $user, $user);
if($messages[0]['delete'] != $user and $messages[0]['delete'] != 0){
$db -> query("DELETE FROM `messages` WHERE `id` = ? and (`from` = ? or `whom` = ?)", $id, $user, $user);
}else{
$db -> query("UPDATE `messages` SET `delete` = ? WHERE `id` = ? and (`from` = ? or `whom` = ?)", $user, $id, $user, $user);
}
}
public function delete_dialog($user, $autor){
global $db;
$group = self::generate_group($user, $autor);
$update = $db -> query("SELECT `id` from `messages` WHERE `delete` = 0 and `group` = ?", $group);
$delete = $db -> query("SELECT `id` from `messages` WHERE `delete` != 0 and `delete` != ? and `group` = ?", $user, $group);
$update_c = count($update);
$delete_c = count($delete);
if($update_c > 0){
$db -> query('UPDATE `messages` SET `delete` = ? WHERE `id` IN ('.db::generate_ins($update, 'id').')', $user);
}
if($delete_c > 0){
$db -> query('DELETE FROM `messages` WHERE `id` IN ('.db::generate_ins($delete, 'id').')');
}
}
public function set_read($ids){
global $db;
if(is_array($ids)){
$ids_c = count($ids);
$sql_text = 'UPDATE `messages` SET `read` = 1 WHERE `id` IN (';
foreach ($ids as $key => $value) {
$sql_text .= $value;
if($ids_c-1 != $key)
$sql_text .= ', ';
}
$sql_text .= ')';
}else{
$sql_text = 'UPDATE `messages` SET `read` = 1 WHERE `id` = '.$ids;
}
$db -> query($sql_text);
}
public function get_list($user){
global $db;
$messages = $db -> query("SELECT MAX(id) as `id` FROM `messages` WHERE (`from` = ? or `whom` = ?) and `delete` != ? GROUP BY `group`", $user, $user, $user);
if(!empty($messages)){
$messages_text = $db -> query('SELECT `text`,`from`,`whom`,`id`,`time`,`read` from `messages` WHERE `id` IN ('.db::generate_ins($messages, 'id').') ORDER by `time` DESC');
foreach($messages_text as $key_t => $value_t){
foreach($messages as $key => $value){
if($messages[$key]['id'] == $messages[$key_t]['id']){
$result[] = array('id' => $messages[$key]['id'],
'time' => $messages_text[$key_t]['time'],
'text' => $messages_text[$key_t]['text'],
'from' => $messages_text[$key_t]['from'],
'whom' => $messages_text[$key_t]['whom'],
'read' => $messages_text[$key_t]['read']);
}
}
}
}else{
$result = false;
}
return $result;
}
}
?>