View file files.php

File size: 2.95Kb
<?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;
}
?>