<?
class Mail{
static private $instance = NULL;
private $db;
public function __construct(){
$this->db = DB::a()->d;
}
static function a(){
if(self::$instance==NULL)self::$instance=new Mail();
return self::$instance;
}
public function getContacts($page){
$data = $this->getDataDialog(User::a()->user['id']);
if(count($data)==0 || $data==false)return false;
krsort($data);
$contacts = array();
$info = array();
$count = 0;
foreach($data as $key=>$value){
if(!in_array($value['komu'],$contacts)){
if($value['komu']!=User::a()->user['id']){
$contacts[] = $value['komu'];
$info[] = array('text' => $value['text'],'time'=>$value['time'],'read'=>$value['read']);
}
}
if(!in_array($value['kto'],$contacts)){
if($value['kto']!=User::a()->user['id']){
$contacts[] = $value['kto'];
$info[] = array('text' => $value['text'],'time'=>$value['time'],'read'=>$value['read']);
}
}
}
$total=count($contacts);
if(!$page) $page = 1;
$page = abs(intval($page));
if($page == 1)$start = 1;
else $start = COUNT_CONT*($page-1)+1;
$con=array();
for($i=$start;$i<=COUNT_CONT*$page;$i++){
if(array_key_exists($i-1,$contacts))
{
$user = $this->db->query("SELECT `id`,".User::a()->join." FROM `users` WHERE `id` = ".$contacts[$i-1]." LIMIT 1")->fetch();
$con[]=array('user'=>$user,'info'=>$info[$i-1]);
}
}
return array('count'=>$total,'mails'=>$con);
}
public function strMess($data,$mess) {
if($mess['read']==0)$div = "yellow";
else{
$color = User::a()->colors($data);
$div = $color[0];
}
$mess['text'] = preg_replace("/(\r\n)+/i", "<br/>", $mess['text']);
$mess['text'] = str_replace("<br>","",$mess['text']);
return "<div class='".$div."' style='font-size:16px;margin-top:2px;'>".mb_substr($mess['text'],0,30,'UTF-8')."...</div>";
}
public function getDialog($id,$me,$page){
$data = $this->getDataDialog($me);
if(count($data)==0 || $data==false)return false;
krsort($data);
$mails = array();
$count = 0;
foreach($data as $key=>$value){
if($value['komu']==$id && $value['kto']==$me){
$data[$key]['read'] = 1;
$mails[]=$value;
}
if($value['komu']==$me && $value['kto']==$id){
if($value['read']==0)$count++;
$data[$key]['read'] = 1;
$mails[]=$value;
}
}
if($count>0){
User::a()->user['countMail']-=$count;
if(User::a()->user['appMail']>0)User::a()->user['appMail']-=$count;
}
$data_mailMe = json_encode($data);
@file_put_contents($_SERVER['DOCUMENT_ROOT'].'/data/mails/'.User::a()->user['id'],$data_mailMe);
if(count($mails)==0)return false;
$total=count($mails);
if(!$page) $page = 1;
$page = abs(intval($page));
if($page == 1)$start = 1;
else $start = COUNT_MAIL*($page-1)+1;
$ml=array();
for($i=$start;$i<=COUNT_MAIL*$page;$i++){
if(array_key_exists($i-1,$mails))
{
$ml[]=$mails[$i-1];
}
}
if(count($ml)==0)header('Location:/Mail/'.$id.'/');
return array('mails' => $ml , 'total'=>$total);
}
public function delDialog($id,$me){
$data = $this->getDataDialog($me);
if(count($data)==0 || $data===false)return false;
foreach($data as $key=>$value){
if($value['komu']==$id && $value['kto']==$me)unset($data[$key]);
if($value['komu']==$me && $value['kto']==$id)unset($data[$key]);
}
$data_mailMe = json_encode($data);
@file_put_contents($_SERVER['DOCUMENT_ROOT'].'/data/mails/'.$me,$data_mailMe);
}
public function delAll($id){
User::a()->user['countMail']=0;
$data = $this->getDataDialog($id);
if(count($data)==0 || $data==false)return false;
unlink($_SERVER['DOCUMENT_ROOT'].'/data/mails/'.$id);
return true;
}
public function readAll($id){
User::a()->user['countMail']=0;
$data = $this->getDataDialog($id);
if(count($data)==0 || $data==false)return false;
foreach($data as $key=>$value){
$data[$key]['read'] = 1;
}
$data_mailMe = json_encode($data);
@file_put_contents($_SERVER['DOCUMENT_ROOT'].'/data/mails/'.$id,$data_mailMe);
return true;
}
public function getDataDialog($id){
if(!file_exists($_SERVER['DOCUMENT_ROOT'].'/data/mails/'.$id))return false;
$data = json_decode(@file_get_contents($_SERVER['DOCUMENT_ROOT'].'/data/mails/'.$id),true);
return $data;
}
public function addMess($id,$text){
$this->db->query("UPDATE `users` SET `countMail` = `countMail` + '1' WHERE `id` = '".$id."' LIMIT 1");
$data = $this->getDataDialog(User::a()->user['id']);
if($data==false){
$data = array(array('komu'=>$id,'kto'=> User::a()->user['id'],'text'=>$text,'read'=>1,'time'=>time()));
}else{
$data[] = array('komu'=>$id,'kto'=> User::a()->user['id'],'text'=>$text,'read'=>1,'time'=>time());
}
$data_mailMe = json_encode($data);
@file_put_contents($_SERVER['DOCUMENT_ROOT'].'/data/mails/'.User::a()->user['id'],$data_mailMe);
$userData = $this->getDataDialog($id);
if($userData==false){
$userData = array(array('komu'=>$id,'kto'=> User::a()->user['id'],'text'=>$text,'read'=>0,'time'=>time()));
}else{
$userData[] = array('komu'=>$id,'kto'=> User::a()->user['id'],'text'=>$text,'read'=>0,'time'=>time());
}
$data_mail = json_encode($userData);
@file_put_contents($_SERVER['DOCUMENT_ROOT'].'/data/mails/'.$id,$data_mail);
return true;
}
}