<?php
/*(с) Im !eee*/
$lock_fp=''; $p_nm_cch=false;
function lock($md){
global $lock_fp;
if($md=='r'){
$lock_fp=fopen(PG_PREF.'lock.txt','r');
flock($lock_fp,LOCK_SH);
}else{
$lock_fp=fopen(PG_PREF.'lock.txt','w');
flock($lock_fp,LOCK_EX);
}
}
function rel_lock(){
global $lock_fp;
flock($lock_fp, LOCK_UN);
fclose($lock_fp);
}
function m_on_p(&$p, &$l){
$p=(int)$p;
if(file_exists(PG_PREF.$p.'.txt')){
$t=file(PG_PREF.$p.'.txt');
} else {
$p=p_num();
$t=file(PG_PREF.$p.'.txt');
}
$l=sizeof($t); $ret=array(array(), array(), array());
for($i=0;$i<$l;$i++){
$t2=explode(chr(1), $t[$i]);
$ret[0][$i]=$t2[0];
$ret[1][$i]=$t2[1];
$ret[2][$i]=rtrim($t2[2]);
}
return $ret;
}
function p_num(){
global $p_nm_cch;
if($p_nm_cch!==false){return $p_nm_cch;}
return ($p_nm_cch=file_get_contents(PG_PREF.'total.txt'));
}
function last_wr(){
return time()-filemtime(PG_PREF.'last.txt');
}
function wr($n, $m){
$n=str_replace(chr(1),'',$n);
$m=str_replace(chr(1),'',$m);
$l=file_get_contents(PG_PREF.'last.txt')+1;
if(($l>MESS_TOT)||$l==1){
file_put_contents(PG_PREF.'last.txt', 1);
$t=p_num()+1;
file_put_contents(PG_PREF.'total.txt', $t);
file_put_contents(PG_PREF.$t.'.txt', $n.chr(1).time().chr(1).$m);
}else{
file_put_contents(PG_PREF.'last.txt', $l);
file_put_contents(PG_PREF.p_num().'.txt', PHP_EOL.$n.chr(1).time().chr(1).$m, FILE_APPEND);
}
}
function get_mes($p, $n){
$p=(int)$p; $n=(int)$n;
file_exists(PG_PREF.$p.'.txt') or exit(ex_hn('Сообщение не найдено'));
$arr=file(PG_PREF.$p.'.txt');
isset($arr[$n]) or exit(ex_hn('Сообщение не найдено'));
$arr=explode(chr(1), $arr[$n]);
$arr[2]=rtrim($arr[2]);
return $arr;
}
function ed_m($p, $n, $a, $d, $m){
$p=(int)$p; $n=(int)$n;
file_exists(PG_PREF.$p.'.txt') or exit(ex_hn('Сообщение не найдено'));
$arr=file(PG_PREF.$p.'.txt');
isset($arr[$n]) or exit(ex_hn('Сообщение не найдено'));
$arr[$n]=str_replace(chr(1),'',$a).chr(1).$d.chr(1).str_replace(chr(1),'',$m);
file_put_contents(PG_PREF.$p.'.txt', join(PHP_EOL, array_map('rtrim',$arr)));
}
function del_m($p,$n){
$p=(int)$p; $n=(int)$n;
file_exists(PG_PREF.$p.'.txt') or exit(ex_hn('Сообщение не найдено'));
$arr=file(PG_PREF.$p.'.txt');
isset($arr[$n]) or exit(ex_hn('Сообщение не найдено'));
unset($arr[$n]);
$tot=p_num();
for(;$p<$tot;$p++){
$arr2=file(PG_PREF.($p+1).'.txt');
$arr[]=$arr2[0];
unset($arr2[0]);
file_put_contents(PG_PREF.$p.'.txt', join(PHP_EOL, array_map('rtrim',$arr)));
$arr=$arr2;
}
if(sizeof($arr)==0){
unlink(PG_PREF.$tot.'.txt');
file_put_contents(PG_PREF.'last.txt', ($tot==1)?0:MESS_TOT);
file_put_contents(PG_PREF.'total.txt', $tot-1);
} else {
file_put_contents(PG_PREF.$tot.'.txt',$arr);
file_put_contents(PG_PREF.'last.txt',sizeof($arr));
}
}
function ct_all(){
lock('r');
$t=(p_num()-1)*MESS_TOT+file_get_contents(PG_PREF.'last.txt');
rel_lock();
return $t;
}
?>