View file public_html/template/functions.php

File size: 39.85Kb
<?php
#-----------------------------------------------------#
#          ********* WAP-MOTORS *********             #
#             Made by   :  VANTUZ                     #
#               E-mail  :  [email protected]         #
#                 Site  :  http://pizdec.ru           #
#             WAP-Site  :  http://visavi.net          #
#                  ICQ  :  36-44-66                   #
#  Вы не имеете право вносить изменения в код скрипта #
#-----------------------------------------------------#	
if (!defined("BASEDIR")) { header("Location:../index.php"); exit; }

//--------------------------- Функция перевода секунд во время -----------------------------//
function maketime($string) {
if($string < 3600){
$string = sprintf("%02d:%02d", (int)($string / 60) % 60, $string % 60); 
}else{
$string = sprintf("%02d:%02d:%02d", (int)($string / 3600) % 24, (int)($string / 60) % 60, $string % 60); 	
}
return $string; 
}

//--------------------------- Функция перевода секунд в дни -----------------------------//
function makestime($string) {

$day=floor($string/86400); 
$hours=floor(($string/3600)-$day*24); 
$min=floor(($string-$hours*3600-$day*86400)/60); 
$sec=$string-($min*60+$hours*3600+$day*86400);

return $day.' дн. '.$hours.':'.$min.':'.$sec; 
}

//--------------------------- Функция временного сдвига -----------------------------//
function date_fixed($timestamp, $format="d.m.y / H:i"){

global $config_clocks,$sitetime;
if(!ctype_digit($timestamp)){$timestamp=$sitetime;}
$sdvig=$config_clocks*3600;
$datestamp = date($format,$timestamp+$sdvig);
$today = date("d.m.y",$sitetime+$sdvig);

$datestamp = str_replace($today,"Сегодня",$datestamp);

$datestamp = str_replace("January","Января",$datestamp);
$datestamp = str_replace("February","Февраля",$datestamp);
$datestamp = str_replace("March","Марта",$datestamp);
$datestamp = str_replace("April","Апреля",$datestamp);
$datestamp = str_replace("May","Мая",$datestamp);
$datestamp = str_replace("June","Июня",$datestamp);
$datestamp = str_replace("July","Июля",$datestamp);
$datestamp = str_replace("August","Августа",$datestamp);
$datestamp = str_replace("September","Сентября",$datestamp);
$datestamp = str_replace("October","Октября",$datestamp);
$datestamp = str_replace("November","Ноября",$datestamp);
$datestamp = str_replace("December","Декабря",$datestamp);

return $datestamp;
}

//------------------- Функция полного удаления юзера --------------------//
function delete_users($users){
global $config_priv;
	
$sublines=file(BASEDIR."local/sub.dat"); 
foreach($sublines as $slkey=>$slval){
$sdata=explode("|",$slval); if ($users==$sdata[4]) {$stroka=$slkey; break;}
}

if ($stroka!="") {
$subfile=file(BASEDIR."local/sub.dat");
$fp=fopen(BASEDIR."local/sub.dat","w");
flock ($fp,LOCK_EX);
foreach($subfile as $sfkey=>$sfval){ if ($stroka==$sfkey){unset($subfile[$sfkey]); break;} }
fputs ($fp, implode($subfile));
fflush($fp);
flock ($fp,LOCK_UN);
fclose($fp); 
unset ($stroka);
}

$banklines=file(BASEDIR."local/bank.dat"); 
foreach($banklines as $blkey=>$blval){
$bdata=explode("|",$blval); if ($users==$bdata[1]) {$strokabank=$blkey; break;}
}

if ($strokabank!="") {
$bankfile=file(BASEDIR."local/bank.dat");
$fpbank=fopen(BASEDIR."local/bank.dat","w");
flock ($fpbank,LOCK_EX);
foreach($bankfile as $bfkey=>$bfval){ if ($strokabank==$bfkey){unset($bankfile[$bfkey]); break;} }
fputs ($fpbank, implode($bankfile));
fflush($fpbank);
flock ($fpbank,LOCK_UN);
fclose($fpbank);   
unset ($strokabank);
}  	

unlink (BASEDIR."local/privat/$users.$config_priv");
unlink (BASEDIR."local/dataoutput/$users.$config_priv");
unlink (BASEDIR."local/profil/$users.prof"); 
unlink (BASEDIR."local/dataavators/$users.gif");
unlink (BASEDIR."local/dataraiting/$users.dat");
unlink (BASEDIR."local/dataignor/$users.dat");
unlink (BASEDIR."local/datakontakt/$users.dat");
unlink (BASEDIR."local/datalife/$users.dat");

return $users;
}


//--------------- Функция правильного окончания для денег -------------------//
function moneys($string){
$string=(int)$string;	
$p=substr($string, -2);
$inp = ' баксов';
if($p==2||$p==3||$p==4||$p==22||$p==23||$p==24||$p==32||$p==33||$p==34||$p==42||$p==43||$p==44||$p==52||$p==53||$p==54||$p==62||$p==63||$p==64||$p==72||$p==73||$p==74||$p==82||$p==83||$p==84||$p==92||$p==93||$p==94) {$inp = ' бакса';}
if($p==1||$p==21||$p==31||$p==41||$p==51||$p==61||$p==71||$p==81||$p==91){$inp = ' бакс';}
return $string.$inp;  
}


//------------------- Функция очистки файлов --------------------//
function clear_files($files){

$file=file($files);
$fp=fopen($files,"a+");
flock ($fp,LOCK_EX);
ftruncate ($fp,0);
fflush ($fp);
flock ($fp,LOCK_UN);
fclose($fp);

return $files;
}

function highlight_code($code) {
$code=strtr($code,array("&lt;"=>"<","&gt;"=>">","&amp;"=>"&","&#36;"=>"\$","&quot;"=>"\"","&#39;"=>"'","&#92;"=>"\\","&#37;"=>"%","<br>"=>"\r\n","&#94;"=>"^","&#58;"=>":"));
$code=highlight_string($code,true);
$code=strtr($code,array("\r\n"=>"<br>","<br />"=>"<br>","\$"=>"&#36;","'"=>"&#39;","\\"=>"&#92;","%"=>"&#37;","^"=>"&#94;",":"=>"&#58;")); //,""=>""
$code='<div class=d>'.$code.'</div>';
return $code;}

//------------------ Вспомогательная функция для bb-кода --------------------//
function url_replace($m) { 
if( !isset($m[3]) ) { 
return '<a href="' . $m[1] . '">' . $m[2] . '</a>'; 
} else { 
return '<a href="' . $m[3] . '">' . $m[3] . '</a>';         
}} 


//------------------ Функция вставки BB-кода --------------------//
function bb_code($message){ 
$message = preg_replace('#\[code\](.*?)\[/code\]#ie', 'highlight_code("\1")', $message); 
$message = preg_replace('#\[big\](.*?)\[/big\]#si', '<big>\1</big>', $message);
$message = preg_replace('#\[b\](.*?)\[/b\]#si', '<b>\1</b>', $message);
$message = preg_replace('#\[i\](.*?)\[/i\]#si', '<i>\1</i>', $message);
$message = preg_replace('#\[u\](.*?)\[/u\]#si', '<u>\1</u>', $message);
$message = preg_replace('#\[small\](.*?)\[/small\]#si', '<small>\1</small>', $message);
$message = preg_replace('#\[red\](.*?)\[/red\]#si', '<font color="#FF0000">\1</font>', $message);
$message = preg_replace('#\[green\](.*?)\[/green\]#si', '<font color="#00FF00">\1</font>', $message);
$message = preg_replace('#\[blue\](.*?)\[/blue\]#si', '<font color="#0000FF">\1</font>', $message);
$message = preg_replace('#\[yellow\](.*?)\[/yellow\]#si', '<font color="#FFFF00">\1</font>', $message);
$message = preg_replace('#\[q\](.*?)\[/q\]#si', '<q>\1</q>', $message);
$message = preg_replace('#\[del\](.*?)\[/del\]#si', '<del>\1</del>', $message);
$message = preg_replace_callback('~\\[url=(http://.+?)\\](.+?)\\[/url\\]|(http://(www.)?[0-9a-z\.-]+\.[0-9a-z]{2,6}[0-9a-zA-Z/\?\.\~&amp;_=/%-:#]*)~', 'url_replace', $message); 
return $message;
}

//------------------ Функция перекодировки из UTF в WIN --------------------//
function utf_to_win($str) { 

if (function_exists('mb_convert_encoding')) return mb_convert_encoding($str, 'windows-1251', 'utf-8');
if (function_exists('iconv')) return iconv('utf-8', 'windows-1251', $str);

$utf8win1251 = array( 
"А"=>"\xC0","Б"=>"\xC1","В"=>"\xC2","Г"=>"\xC3","Д"=>"\xC4","Е"=>"\xC5","Ё"=>"\xA8","Ж"=>"\xC6","З"=>"\xC7","И"=>"\xC8","Й"=>"\xC9","К"=>"\xCA","Л"=>"\xCB","М"=>"\xCC",
"Н"=>"\xCD","О"=>"\xCE","П"=>"\xCF","Р"=>"\xD0","С"=>"\xD1","Т"=>"\xD2","У"=>"\xD3","Ф"=>"\xD4","Х"=>"\xD5","Ц"=>"\xD6","Ч"=>"\xD7","Ш"=>"\xD8","Щ"=>"\xD9","Ъ"=>"\xDA",
"Ы"=>"\xDB","Ь"=>"\xDC","Э"=>"\xDD","Ю"=>"\xDE","Я"=>"\xDF","а"=>"\xE0","б"=>"\xE1","в"=>"\xE2","г"=>"\xE3","д"=>"\xE4","е"=>"\xE5","ё"=>"\xB8","ж"=>"\xE6","з"=>"\xE7",
"и"=>"\xE8","й"=>"\xE9","к"=>"\xEA","л"=>"\xEB","м"=>"\xEC","н"=>"\xED","о"=>"\xEE","п"=>"\xEF","р"=>"\xF0","с"=>"\xF1","т"=>"\xF2","у"=>"\xF3","ф"=>"\xF4","х"=>"\xF5",
"ц"=>"\xF6","ч"=>"\xF7","ш"=>"\xF8","щ"=>"\xF9","ъ"=>"\xFA","ы"=>"\xFB","ь"=>"\xFC","э"=>"\xFD","ю"=>"\xFE","я"=>"\xFF"); 

return strtr($str, $utf8win1251); 
} 


//------------------ Функция перекодировки из WIN в UTF --------------------//
function win_to_utf($str) { 

if (function_exists('mb_convert_encoding')) return mb_convert_encoding($str, 'utf-8', 'windows-1251');
if (function_exists('iconv')) return iconv('windows-1251', 'utf-8', $str);

$win1251utf8 = array( 
"\xC0"=>"А","\xC1"=>"Б","\xC2"=>"В","\xC3"=>"Г","\xC4"=>"Д","\xC5"=>"Е","\xA8"=>"Ё","\xC6"=>"Ж","\xC7"=>"З","\xC8"=>"И","\xC9"=>"Й","\xCA"=>"К","\xCB"=>"Л","\xCC"=>"М",
"\xCD"=>"Н","\xCE"=>"О","\xCF"=>"П","\xD0"=>"Р","\xD1"=>"С","\xD2"=>"Т","\xD3"=>"У","\xD4"=>"Ф","\xD5"=>"Х","\xD6"=>"Ц","\xD7"=>"Ч","\xD8"=>"Ш","\xD9"=>"Щ","\xDA"=>"Ъ",
"\xDB"=>"Ы","\xDC"=>"Ь","\xDD"=>"Э","\xDE"=>"Ю","\xDF"=>"Я","\xE0"=>"а","\xE1"=>"б","\xE2"=>"в","\xE3"=>"г","\xE4"=>"д","\xE5"=>"е","\xB8"=>"ё","\xE6"=>"ж","\xE7"=>"з",
"\xE8"=>"и","\xE9"=>"й","\xEA"=>"к","\xEB"=>"л","\xEC"=>"м","\xED"=>"н","\xEE"=>"о","\xEF"=>"п","\xF0"=>"р","\xF1"=>"с","\xF2"=>"т","\xF3"=>"у","\xF4"=>"ф","\xF5"=>"х",
"\xF6"=>"ц","\xF7"=>"ч","\xF8"=>"ш","\xF9"=>"щ","\xFA"=>"ъ","\xFB"=>"ы","\xFC"=>"ь","\xFD"=>"э","\xFE"=>"ю","\xFF"=>"я"); 

return strtr($str, $win1251utf8); 
} 

//------------------ Функция преобразования в нижний регистр для UTF ------------------//
function rus_utf_tolower($str){

if (function_exists('mb_strtolower')) return mb_strtolower($str, 'utf-8');

$arraytolower = array( "А"=>"а","Б"=>"б","В"=>"в","Г"=>"г","Д"=>"д","Е"=>"е","Ё"=>"ё","Ж"=>"ж","З"=>"з","И"=>"и","Й"=>"й","К"=>"к","Л"=>"л","М"=>"м","Н"=>"н","О"=>"о","П"=>"п","Р"=>"р","С"=>"с","Т"=>"т","У"=>"у","Ф"=>"ф","Х"=>"х","Ц"=>"ц","Ч"=>"ч","Ш"=>"ш","Щ"=>"щ","Ь"=>"ь","Ъ"=>"ъ","Ы"=>"ы","Э"=>"э","Ю"=>"ю","Я"=>"я",
"A"=>"a","B"=>"b","C"=>"c","D"=>"d","E"=>"e","I"=>"i","F"=>"f","G"=>"g","H"=>"h","J"=>"j","K"=>"k","L"=>"l","M"=>"m","N"=>"n","O"=>"o","P"=>"p","Q"=>"q","R"=>"r","S"=>"s","T"=>"t","U"=>"u","V"=>"v","W"=>"w","X"=>"x","Y"=>"y","Z"=>"z");

return strtr($str, $arraytolower); 
}


//------------------ Функция определения реального IP --------------------//
if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && preg_match("|^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$|", $_SERVER['HTTP_X_FORWARDED_FOR'])){
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];}
elseif(isset($_SERVER['HTTP_CLIENT_IP']) && preg_match("|^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$|", $_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];}
else {$ip = preg_replace("|[^0-9\.]|", "", $_SERVER['REMOTE_ADDR']);}
$ip=check($ip);


//------------------ Функция определения реального браузера --------------------//
if (isset($_SERVER['HTTP_X_OPERAMINI_PHONE_UA'])) {$browsus = htmlspecialchars(stripslashes($_SERVER['HTTP_X_OPERAMINI_PHONE_UA']));}
elseif(isset($_SERVER['HTTP_USER_AGENT'])) {$browsus=htmlspecialchars(stripslashes($_SERVER['HTTP_USER_AGENT']));} 
else {$browsus='Not_detected';}
$brow=preg_replace('|http://|i','', $browsus);
$brow=strtok($brow,'(');
$brow=strtok($brow,' ');
$brow=substr($brow,0,22);
$brow=check($brow);

//----------------------- Функция экранирования основных знаков --------------------------//
function check($msg){ 

if (is_array($msg)) {

foreach($msg as $key=>$val) {
$msg[$key] = check($val);
}

} else {
$msg = htmlspecialchars($msg); 
$search = array('|','\'','$','\\','^','%','`',"\0");
$replace = array('&#124;','&#39;','&#36;','&#92;','&#94;','&#37;','&#96;','');

$msg = str_replace($search, $replace, $msg);
$msg = stripslashes(trim($msg));
}

return $msg;
}

//----------------------- Функция удаления основных знаков --------------------------//
function check_full($message){ 
$message=str_replace("|","I",$message); 
$message=str_replace("||","I",$message);
$message=str_replace("&","",$message);
$message=str_replace("\"","",$message);
$message=str_replace(">","",$message);
$message=str_replace("<","",$message);
$message=htmlspecialchars($message);                  
$message=str_replace("'","",$message);            
$message=str_replace("\"","",$message);  
$message=str_replace("\$","",$message);    
$message=str_replace("$","",$message);          
$message=str_replace("\\","", $message);                            
$message=str_replace("`","", $message);    
$message=str_replace("%","", $message);
$message=stripslashes(trim($message));               
return $message;
}


//----------------------- Функция вырезания переноса строки --------------------------//
function no_br($message,$replace=""){ 
$message=preg_replace ("|[\r\n]+|si",$replace,$message);
return $message;
}

//--------------- Функция замены и вывода смайлов -------------------//
function smiles($string){
global $dostup;

$dir = opendir (BASEDIR."images/smiles"); 
while ($file = readdir ($dir)) {
if (ereg ("\.gif$", $file)){
$smfile[]=str_replace(".gif","",$file);}}
closedir ($dir);
rsort($smfile);

foreach($smfile as $smval){
$string=str_replace(":$smval",'<img src="'.BASEDIR.'images/smiles/'.$smval.'.gif" alt="">',$string);
}

if ($dostup==101 || $dostup==102 || $dostup==103 || $dostup==105){
$dir = opendir (BASEDIR."images/smiles2"); 
while ($file = readdir ($dir)) {
if (ereg ("\.gif$", "$file")){
$smfiles[]=str_replace(".gif","",$file);}}
closedir ($dir);
rsort($smfiles);

foreach($smfiles as $smvals){
$string=str_replace(":$smvals",'<img src="'.BASEDIR.'images/smiles2/'.$smvals.'.gif" alt="">',$string);
}}

return $string;  
}

//--------------- Функция обратной замены смайлов -------------------//
function nosmiles($string){
$string = preg_replace('|<img src="\.\./images/smiles/(.*?)\.gif" alt="">|',':$1', $string);
$string = preg_replace('|<img src="\.\./images/smiles2/(.*?)\.gif" alt="">|',':$1', $string);
return $string;  
}

//--------------- Функция подсчета веса директории -------------------//
function  read_dir($dir) { 
if ($path = opendir($dir)) while ($file_name = readdir($path)) {
if (($file_name!=='.') && ($file_name!=="..")){ 
if (is_dir($dir."/".$file_name)) $size +=read_dir($dir."/".$file_name); else  $size += filesize($dir."/".$file_name); 
}} 
closedir ($dir); 
return  $size;} 

//--------------- Функция подсчета файлов в загрузках -------------------//
function  count_dir($dir) { 
global $sitetime;

$count=0;
$newcount=0;

$path = opendir($dir);
while ($file = readdir($path)) {
if (( $file != ".")&&($file != "..")&&($file != ".htaccess")&&($file != "index.php")&&($file != "name.dat")&& !ereg (".txt$", "$file")&& !ereg (".JPG$", "$file")&& !ereg (".GIF$", "$file")) {
	
$count ++;

$filetime=filemtime("$dir/$file")+(3600*24*5);
if($filetime>$sitetime){	
$newcount ++;
}
}}

if($newcount>0){	
$input=(int)$count.'/+'.(int)$newcount; 
}else{
$input=(int)$count;
}

closedir ($path); 
return  $input;
} 


//--------------- Функция подсчета файлов в библиотеке -------------------//
function  count_libdir($dir) { 
global $sitetime;

$count=0;
$newcount=0;

$path = opendir($dir);
while ($file = readdir($path)) {
if (ereg(".txt$", $file)){
	
$count ++;

$filetime=filemtime("$dir/$file")+(3600*24*5);
if($filetime>$sitetime){	
$newcount ++;
}
}}

if($newcount>0){	
$input=(int)$count.'/+'.(int)$newcount; 
}else{
$input=(int)$count;
}

closedir ($path); 
return  $input;
} 


//--------------- Функция правильного вывода веса файла -------------------//
function formatsize($file_size){

if($file_size >= 1073741824){
$file_size = round($file_size / 1073741824 * 100) / 100 . " Gb";
}elseif(
$file_size >= 1048576){
$file_size = round($file_size / 1048576 * 100) / 100 . " Mb";
}elseif(
$file_size >= 1024){
$file_size = round($file_size / 1024 * 100) / 100 . " Kb";
}else{
$file_size = round($file_size) . " b";}
return $file_size;
}


//--------------- Функция правильного вывода времени -------------------//
function formattime($file_time){

if($file_time >= 86400){
$file_time = 'суток: '.round((($file_time / 60) / 60) / 24, 1);
}elseif(
$file_time >= 3600){
$file_time = 'часов:  '.round(($file_time / 60) / 60, 1);
}elseif(
$file_time >= 60){
$file_time =  'минут: '.round($file_time / 60);
}else{
$file_time = 'секунд:  '.round($file_time);}
return $file_time;
}

//------------------ Функция транслита букв --------------------//
function transliter($string){
$trans1=array("CSH","Csh","ZH","Zh","CH","Ch","SH","Sh","JO","Jo","JE","Je","JU","Ju","JA","Ja","csh","zh","ch","sh","jo","je","ju","ja","A","B","V","G","D","E","Z","I","J","K","L","M","N","O","P","R","S","T","U","F","H","C","&#39;","'","Y","a","b","v","g","d","e","z","i","j","k","l","m","n","o","p","r","s","t","u","f","h","c","&#39;","'","y");
$trans2=array("Щ","Щ","Ж","Ж","Ч","Ч","Ш","Ш","Ё","Ё","Э","Э","Ю","Ю","Я","Я","щ","ж","ч","ш","ё","э","ю","я","А","Б","В","Г","Д","Е","З","И","Й","К","Л","М","Н","О","П","Р","С","Т","У","Ф","Х","Ц","ь","ь","Ы","а","б","в","г","д","е","з","и","й","к","л","м","н","о","п","р","с","т","у","ф","х","ц","ь","ь","ы"); 
$string=str_replace($trans1,$trans2,$string);
return $string;}


//------------------ Функция антимата --------------------//
function antimat($string){
	      
$mat = file_get_contents(BASEDIR."local/antimat.dat"); 
$arr_mat= explode("|",$mat);
    
foreach($arr_mat as $value){
if($value!=""){
$string = preg_replace("|$value|iu","***",$string); 
}}

return $string;}

//------------------ Функция определения прав доступа (CHMOD) --------------------//
function permissions($filez){
$filez = decoct(fileperms($filez)) % 1000;
return $filez;
}

//------------------ Функция правильного вывода статуса --------------------//
function user_status($message){ 
if($message==101){$status='Суперадмин';}
elseif($message==102){$status='Админ';}
elseif($message==103){$status='Старший модер';}
elseif($message==105){$status='Модер';}
else{$status='Пользователь';}
return $status;  }	


//------------------ Функция выводящая картинку в загрузках --------------------//
function raiting_vote($string){ 	
if($string==0){$string=str_replace('0','<img src="../images/img/rating0.gif" alt="0"/>',$string);}
if($string>'0' && $string<='0.5'){ $string=str_replace($string,'<img src="../images/img/rating1.gif" alt="0.5"/>',$string); }
if($string>'0.5' && $string<='1'){ $string=str_replace($string,'<img src="../images/img/rating2.gif" alt="1"/>',$string); }   
if($string>'1' && $string<='1.5'){ $string=str_replace($string,'<img src="../images/img/rating3.gif" alt="1.5"/>',$string); }  
if($string>'1.5' && $string<='2'){ $string=str_replace($string,'<img src="../images/img/rating4.gif" alt="2"/>',$string); } 
if($string>'2' && $string<='2.5'){ $string=str_replace($string,'<img src="../images/img/rating5.gif" alt="2.5"/>',$string); } 
if($string>'2.5' && $string<='3'){ $string=str_replace($string,'<img src="../images/img/rating6.gif" alt="3"/>',$string); }  
if($string>'3' && $string<='3.5'){ $string=str_replace($string,'<img src="../images/img/rating7.gif" alt="3.5"/>',$string); }
if($string>'3.5' && $string<='4'){ $string=str_replace($string,'<img src="../images/img/rating8.gif" alt="4"/>',$string); }  
if($string>'4' && $string<='4.5'){ $string=str_replace($string,'<img src="../images/img/rating9.gif" alt="4.5"/>',$string); } 
if($string>'4.5' && $string<='5'){ $string=str_replace($string,'<img src="../images/img/rating10.gif" alt="5"/>',$string); }       
return $string;  }	


//--------------- Функция русского ника -------------------//
function nickname($string){
global $config_includenick;
if($config_includenick==1){
if(file_exists(BASEDIR."local/profil/$string.prof")){
$text = file(BASEDIR."local/profil/$string.prof"); 
if ($text){
$udata = explode(":||:",$text[0]);
$runickname=$udata[65];
if(!empty($runickname) && $udata[36]>=150){
$string=$runickname;
}}}}
return $string;  
}

//------------------------- Функция антифлуда ------------------------------//
$php_self=check($_SERVER['PHP_SELF']);
function flooder($ip, $php_self){
global  $config_floodstime,$sitetime;

$old_db = file(BASEDIR."local/flood.dat");
$new_db = fopen(BASEDIR."local/flood.dat", w);
flock ($new_db,LOCK_EX);
$result = FALSE;

foreach($old_db as $old_db_line){
$old_db_arr = explode("|", $old_db_line);

if(($old_db_arr[0] + $config_floodstime) > $sitetime ){
	
fputs ($new_db, $old_db_line);

if($old_db_arr[1] == $ip && $old_db_arr[2] == $php_self)
{ $result = TRUE; }}}

fflush($new_db);
flock ($new_db,LOCK_UN);
fclose($new_db);
return $result;
}

//------------------ Функция для обработки base64 --------------------//
function safe_encode($string) {
$data = base64_encode($string);
$data = str_replace(array('+','/','='),array('_','-',''),$data);
return $data;
}

function safe_decode($string) {
$string = str_replace(array('_','-'),array('+','/'),$string);
$data = base64_decode($string);
return $data;
}

//------------------ Функция шифрования по ключу --------------------//
function xoft_encode($string, $key){   
$result = "";   
for($i = 1; $i<=strlen($string); $i++){   
$char = substr($string, $i-1,1);   
$keychar = substr($key, ($i % strlen($key)) - 1, 1);   
$char = chr(ord($char)+ord($keychar));   
$result .= $char;   
}   
return safe_encode($result);   
}   

//------------------ Функция расшифровки по ключу --------------------//	
function xoft_decode($string, $key){  
$string = safe_decode($string); 
$result = "";   
for($i = 1; $i<=strlen($string); $i++){   
$char = substr( $string, $i - 1, 1 );   
$keychar = substr($key, ($i % strlen($key)) - 1, 1);   
$char = chr(ord($char) - ord($keychar));   
$result .= $char;   
}   
return $result;   
}   

//------------------ Функция генерирования паролей --------------------//
function generate_password($length){
if($length==""){$length=rand(10,12);}	
$salt = "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789";
$len = strlen($salt);
$makepass = '';
for ($i = 0; $i < $length; $i++)
$makepass .= $salt[mt_rand(0,$len - 1)];
return $makepass;
}

//------------------ Функция для читаемого вывода массива --------------------//
function text_dump(&$var,$level=0){ 
if(is_array($var)) $type="array[".count($var)."]";
else if(is_object($var)) $type="object";
else $type="";
if($type) {
echo $type.'<br>';
for(Reset($var),$level++; list($k,$v)=each($var);) {
if(is_array($v) && $k==="GLOBALS") continue;
for($i=0; $i<$level*3; $i++) echo ' ';
echo '<b>'.htmlspecialchars($k).'</b> => ', text_dump($v,$level);
}
}
else echo '"',htmlspecialchars($var),'"<br>';
}

function dump(&$var){ 
if((is_array($var)||is_object($var)) && count($var)){
echo '<pre>',text_dump($var),'</pre>';
}else{
echo '<tt>',text_dump($var),'</tt>';
}}

//------------------ Функция кодировки-раскодировки юникода --------------------//
$uniarray1=array("А","Б","В","Г","Д","Е","Ж","З","И","Й","К","Л","М","Н","О","П","Р","С","Т","У","Ф","Х","Ц","Ч","Ш","Щ","Ъ","Ы","Ь","Э","Ю","Я","а","б","в","г","д","е","ж","з","и","й","к","л","м","н","о","п","р","с","т","у","ф","х","ц","ч","ш","щ","ъ","ы","ь","э","ю","я","Ё","ё"); 

$uniarray2=array("&#1040;","&#1041;","&#1042;","&#1043;","&#1044;","&#1045;","&#1046;","&#1047;","&#1048;","&#1049;","&#1050;","&#1051;","&#1052;","&#1053;","&#1054;","&#1055;","&#1056;","&#1057;","&#1058;","&#1059;","&#1060;","&#1061;","&#1062;","&#1063;","&#1064;","&#1065;","&#1066;","&#1067;","&#1068;","&#1069;","&#1070;","&#1071;","&#1072;","&#1073;","&#1074;","&#1075;","&#1076;","&#1077;","&#1078;","&#1079;","&#1080;","&#1081;","&#1082;","&#1083;","&#1084;","&#1085;","&#1086;","&#1087;","&#1088;","&#1089;","&#1090;","&#1091;","&#1092;","&#1093;","&#1094;","&#1095;","&#1096;","&#1097;","&#1098;","&#1099;","&#1100;","&#1101;","&#1102;","&#1103;","&#1025;","&#1105;");


function unicode_encode($string){
global $uniarray1,$uniarray2;
$string=str_replace($uniarray1,$uniarray2,$string);
return $string;
};

function unicode_decode($string){
global $uniarray1,$uniarray2;
$string=str_replace($uniarray2,$uniarray1,$string);
return $string;
};

//------------------- Функция подсчета строк в файле--------------------//
function counter_string($files){

$count_lines=0;
if (file_exists($files)){
$lines = file($files);
$count_lines = count($lines);
}
return $count_lines;
}

//--------------- Функция листинга всех файлов и папок ---------------//
function scan_dir($dirname){
GLOBAL $array_check,$totalfiles_check,$totalsize_check,$totalfolders_check,$config_nocheck;
$no_check = explode(',',$config_nocheck);

$dir = opendir($dirname);
while (($file = readdir($dir)) !== false){
if($file != "." && $file != ".."){
	
if(is_file("$dirname/$file")){
	
$ext = strtolower(substr($file, strrpos($file, '.') + 1));

if (!in_array($ext, $no_check)){
$array_check[] = $dirname."/".$file." - ".date("d.m.y / H:i",filemtime($dirname."/".$file))." - ".formatsize(filesize($dirname."/".$file));
$totalfiles_check++;
$totalsize_check+= filesize($dirname."/".$file);
}
}

if(is_dir("$dirname/$file")){
	
$array_check[] = "$dirname/$file";
$totalfolders_check++;
scan_dir("$dirname/$file");
}

}}
closedir($dir);
}

//--------------- Функция вывода календаря---------------//
function makeCal ($year, $month){
$wday = date("w", mktime(0,0,0,$month,1,$year));
if ($wday==0) {$wday=7;}
$n=-($wday-2);
$cal=array();
for ($y=0; $y<6; $y++) {
$row=array();
$notEmpty=false;
for ($x=0; $x<7; $x++, $n++) {
if (checkdate($month, $n, $year)) {
$row[]=$n;
$notEmpty=true;
} else {
$row[]="";
}}
if (!$notEmpty) break;
$cal[]=$row;
}
return $cal;
}

//--------------- Функция выключения графики ---------------//
function disable_img($image){
$image = preg_replace('|<img src="\.\./images/smiles/(.*?)\.gif" alt="">|',':$1', $image);
$image = preg_replace('|<img src="\.\./images/smiles2/(.*?)\.gif" alt="">|',':$1', $image);
$image = preg_replace('|<img src="(.*?)" alt="">|','&#8226;', $image);
return $image;} 


//--------------- Функция подсчета денег у юзера ---------------//
function user_many($login){

$prof_summ=0;
$text = file(BASEDIR."local/profil/$login.prof"); 
if ($text!=""){
$udata = explode(":||:",$text[0]);
$prof_summ=$udata[41];
}


$bank_summ=0;
$bank_file=file(BASEDIR."local/bank.dat"); 
if ($bank_file!=""){
foreach($bank_file as $value) {
$dt=explode("|",$value); 
if ($dt[1]==$login) {$bank_summ=$dt[2]; break;}
}}


$all_many=(int)$prof_summ.'/'.(int)$bank_summ;


return $all_many;
}


//--------------- Функция подсчета денег в банке ---------------//
function user_bankmany($login){

$bank_summ=0;
$bank_file=file(BASEDIR."local/bank.dat"); 
if ($bank_file!=""){
foreach($bank_file as $value) {
$dt=explode("|",$value); 
if ($dt[1]==$login) {$bank_summ=$dt[2]; break;}
}}

$bank_summ=(int)$bank_summ;

return $bank_summ;
}

//--------------- Функция подсчета писем у юзера ---------------//
function user_mail($login){
global $config_priv;

$all_privat = counter_string(BASEDIR."local/privat/$login.$config_priv");

$new_privat=0;
$text = file(BASEDIR."local/profil/$login.prof"); 
if ($text!=""){
$udata = explode(":||:",$text[0]);
$new_privat=$udata[10];
}

$all_mail=(int)$new_privat.'/'.(int)$all_privat;

return $all_mail;
}


//--------------- Функция подсчета здоровья персонажа ---------------//
function user_health($login){

$health=0;
$text = file(BASEDIR."local/profil/$login.prof"); 
if ($text!=""){
$udata = explode(":||:",$text[0]);
$health=(int)$udata[56].'%';
}

return $health;
}

//--------------- Функция подсчета выносливости персонажа ---------------//
function user_stamina($login){

$stamina=0;
$text = file(BASEDIR."local/profil/$login.prof"); 
if ($text!=""){
$udata = explode(":||:",$text[0]);
$stamina=(int)$udata[57].'%';
}

return $stamina;
}

//--------------- Функция вывода аватара пользователя ---------------//
function user_avatars($login){

if(file_exists(BASEDIR."local/profil/$login.prof")){
$text = file_get_contents(BASEDIR."local/profil/$login.prof"); 
$udata = explode(":||:",$text);

if($udata[43]!=""){
return '<img src="'.BASEDIR.$udata[43].'" alt=""> ';
}}

return '<img src="'.BASEDIR.'images/avators/noavatar.gif" alt=""> ';
}

//--------------- Функция подсчета карт в игре ---------------//
function cards_score($str){
if($str==1||$str==2||$str==3||$str==4){
$num = 6;
}
if($str==5||$str==6||$str==7||$str==8){
$num = 7;
}
if($str==9||$str==10||$str==11||$str==12){
$num = 8;
}                
if($str==13||$str==14||$str==15||$str==16){
$num = 9;
}                
if($str==17||$str==18||$str==19||$str==20){
$num = 10;
}                
if($str==21||$str==22||$str==23||$str==24){
$num = 2;
}                
if($str==25||$str==26||$str==27||$str==28){
$num = 3;
}                      
if($str==29||$str==30||$str==31||$str==32){
$num = 4;
}                      
if($str==33||$str==34||$str==35||$str==36){
$num = 11;
}                      
return $num;
}


//--------------- Функция подсчета очков в игре ---------------//
function cards_points($str){
$str=(int)$str;	
$points = ' очков';
if($str==2||$str==3||$str==4||$str==22||$str==23||$str==24|$str==32||$str==33||$str==34){$points = ' очка';}
if($str==21){$points = ' <b>очко!!!</b>';}
if($str==31){$points = ' очко';}
return $str.$points;
}


//--------------- Функция вывода статуса ---------------//
function user_ststuses($balls) {

$text = file(BASEDIR."local/status.dat"); 
if ($text!=""){
$udta = explode("|",$text[0]);}
if($balls>=0 && $balls<5){$statuses=$udta[0];}
if($balls>=5 && $balls<10){$statuses=$udta[1];}	
if($balls>=10 && $balls<20){$statuses=$udta[2];}
if($balls>=20 && $balls<50){$statuses=$udta[3];}
if($balls>=50 && $balls<100){$statuses=$udta[4];}
if($balls>=100 && $balls<250){$statuses=$udta[5];}	
if($balls>=250 && $balls<500){$statuses=$udta[6];}
if($balls>=500 && $balls<750){$statuses=$udta[7];}
if($balls>=750 && $balls<1000){$statuses=$udta[8];}
if($balls>=1000 && $balls<1250){$statuses=$udta[9];}
if($balls>=1250 && $balls<1500){$statuses=$udta[10];}
if($balls>=1500 && $balls<1750){$statuses=$udta[11];}
if($balls>=1750 && $balls<2000){$statuses=$udta[12];}
if($balls>=2000 && $balls<2250){$statuses=$udta[13];}
if($balls>=2250 && $balls<2500){$statuses=$udta[14];}
if($balls>=2500 && $balls<2750){$statuses=$udta[15];}
if($balls>=2750 && $balls<3000){$statuses=$udta[16];}
if($balls>=3000 && $balls<3250){$statuses=$udta[17];}
if($balls>=3250 && $balls<3499){$statuses=$udta[18];}
if($balls>=3500 && $balls<4999){$statuses=$udta[19];}
if($balls>=5000 && $balls<7499){$statuses=$udta[20];}
if($balls>=7500 && $balls<9999){$statuses=$udta[21];}
if($balls>=10000){$statuses=$udta[22];}
$statuses=check($statuses);

return $statuses;
}


//--------------- Функция подсчета человек в контакт-листе ---------------//
function user_kontakt($login) {
return counter_string(BASEDIR."local/datakontakt/$login.dat");
}

//--------------- Функция подсчета человек в игнор-листе ---------------//
function user_ignor($login) {
return counter_string(BASEDIR."local/dataignor/$login.dat");
}

//--------------- Функция определения местонахождения ---------------//
function user_position($string) {

$position='Не определено';

if(file_exists(BASEDIR."local/headlines.dat")){
$file = file(BASEDIR."local/headlines.dat"); 

foreach($file as $value){
$line = explode("|",$value);

if ($string=='/'.$line[1]){$position='<a href="'.BASEDIR.$line[1].'?'.SID.'">'.$line[2].'</a>'; break;}

}}

return $position;
}

//--------------- Функция автоустановки прав доступа ---------------//
function chmode ($path = ".") { 
if ($handle = opendir ($path)) { 

while (false !== ($file = readdir($handle))) { 

if ($file != "." && $file != "..") { 
$file_path = $path . "/" . $file; 

if (is_dir ($file_path)) { 
chmod ($file_path, 0777);
chmode ($file_path); 

} else { 
chmod ($file_path, 0666);
}}} 

closedir($handle); 
}} 


//--------------- Функция определение онлайн-статуса ---------------//
function user_online($login) {
global $sitetime;
$statwho='<font color="#FF0000">[Off]</font>';

if(file_exists(BASEDIR."local/datalife/$login.dat")){
$lifefile = file_get_contents(BASEDIR."local/datalife/$login.dat");
if ($lifefile!=""){

$lifestr = explode("|",$lifefile); 
$userlife=$sitetime-$lifestr[0];

if($userlife<600){
$statwho='<font color="#00FF00">[On]</font>';
}}}
return $statwho;
}

//---- Функция определение последнего посещения и местонахождения -----//
function user_visit($login, $where="") {
global $sitetime;

if (file_exists(BASEDIR."local/datalife/$login.dat")){
$lifefile = file_get_contents(BASEDIR."local/datalife/$login.dat");
if ($lifefile!=""){

$lifestr = explode("|",$lifefile); 
$userlife=$sitetime-$lifestr[0];

if($userlife<600){
$visit = '(Сейчас на сайте)';
$whereuser = user_position($lifestr[3]);
} else {
$visit = '(Последнее посещение '.date_fixed($lifestr[0]).')';
$whereuser = 'Оффлайн';
}
if($where==""){ return $visit; } else { return $whereuser; }
}} else {
return 'Оффлайн';
}}

//--------------- Функции сжатия страниц ---------------//
function compress_output_gzip($output) {
	return gzencode($output, 5);
} 

function compress_output_deflate($output) {
	return gzdeflate($output, 5);
}
 
//---------- Функция обработки строк данных и ссылок ---------//
function check_string($string) {
$string = strtolower($string);
$string = str_replace("http://www.","",$string);
$string = str_replace("http://wap.","",$string);
$string = str_replace("http://","",$string);
$string = str_replace("https://","",$string);
$string = strtok($string,'/');
$string = strtok($string,'?');
return $string;
} 

//---------- Функция определение должности юзера ---------//
function user_title($login) {
if(file_exists(BASEDIR."local/profil/$login.prof")){
$text = file(BASEDIR."local/profil/$login.prof"); 
if ($text){
$udata = explode(":||:",$text[0]);
if($udata[7]>=101 && $udata[7]<=105){
if($udata[7]==105){$title='<font color="#FF8000">[Модер]</font>';}
if($udata[7]==103){$title='<font color="#FF8000">[Модер]</font>';}
if($udata[7]==102){$title='<font color="#0000FF">[Админ]</font>';}
if($udata[7]==101){$title='<font color="#0000FF">[Админ]</font>';}
return $title;
}}}

}

//---------- Аналог функции substr для UTF-8 ---------//
function utf_substr($str, $offset, $length = null){

if (function_exists('mb_substr')) return mb_substr($str, $offset, $length, 'utf-8');
if (function_exists('iconv_substr')) return iconv_substr($str, $offset, $length, 'utf-8');

$str=utf_to_win($str);
$str=substr($str,$offset,$length);
return win_to_utf($str);
}


//---------------------- Аналог функции strlen для UTF-8 -----------------------//
function utf_strlen($str){
if (function_exists('mb_strlen')) return mb_strlen($str, 'utf-8');
if (function_exists('iconv_strlen')) return iconv_strlen($str, 'utf-8');
if (function_exists('utf8_decode')) return strlen(utf8_decode($str));
return strlen(utf_to_win($str));
} 

//---------- Аналог функции wordwrap для UTF-8 ---------//
function utf_wordwrap($str, $width=75, $break="\n", $cut=false){
$str=utf_to_win($str);
$str=wordwrap($str, $width, $break, $cut);
return win_to_utf($str);
}

//----------------------- Функция определения кодировки ------------------------//
function is_utf($str) {
if (function_exists('mb_detect_encoding')){
if(mb_detect_encoding($str) == "UTF-8") {return 1;} else { return 0;}
}

$letters=array("а","б","в","г","д","е","ё","ж","з","и","й","к","л","м","н","о","п","р","с","т","у","ф","х","ц","ч","ш","щ","ъ","ы","ь","э","ю","я");
foreach($letters as $letval){
if(strstr($str,$letval)){return 1; break;} else { return 0;}
}} 


//--------------------- Функция вырезания битых символов UTF -------------------//
function utf_badstrip($str) {
$ret = '';
for ($i = 0;$i < strlen($str);) {
$tmp = $str{$i++};
$ch = ord($tmp);
if ($ch > 0x7F) {
if ($ch < 0xC0) continue;
elseif ($ch < 0xE0) $di = 1;
elseif ($ch < 0xF0) $di = 2;
elseif ($ch < 0xF8) $di = 3;
elseif ($ch < 0xFC) $di = 4;
elseif ($ch < 0xFE) $di = 5;
else continue;

for ($j = 0;$j < $di;$j++) {
$tmp .= $ch = $str{$i + $j};
$ch = ord($ch);
if ($ch < 0x80 || $ch > 0xBF) continue 2;
}
$i += $di;
}
$ret .= $tmp;

}
return $ret;
}

//----------------------- Функция генерирования уникального ID ------------------------//
function unitime() {

$microtime = explode(' ', microtime()); 

$unitime=$microtime[1].substr($microtime[0],2,2) ; 

return $unitime;
} 

//----------------------- Функция отправки письма по e-mail ------------------------//
function addmail($usermail, $subject, $msg, $mail="", $name="") {
global $config_nikname, $config_emails;

if($mail==""){$mail=$config_emails; $name=$config_nikname;}

$subject = utf_to_win($subject);
$msg = utf_to_win($msg);
$name = utf_to_win($name);

$subject = convert_cyr_string($subject, 'w','k');
$msg = convert_cyr_string($msg, 'w','k');
$name = convert_cyr_string($name, 'w','k');

$subject = '=?KOI8-R?B?'.base64_encode($subject).'?=';

$adds = "From: ".$name." <".$mail.">\n"; 
$adds .= "X-sender: ".$name." <".$mail.">\n";
$adds .= "Content-Type: text/plain; charset=koi8-r\n";   
$adds .= "MIME-Version: 1.0\n";
$adds .= "Content-Transfer-Encoding: 8bit\n";
$adds .= "X-Mailer: PHP v.".phpversion();

return mail($usermail,$subject,$msg,$adds);
}


//----------------------- Постраничная навигация (Переходы) ------------------------//
function page_jumpnavigation($link, &$posts, &$start, &$total) {

echo '<hr>'; 
if ($start != 0) {echo '<a href="'.$link.'start='.($start - $posts).'&amp;'.SID.'">&lt;-Назад</a> ';}else{echo '&lt;-Назад';}
echo ' | '; 
if ($total > $start + $posts) {echo '<a href="'.$link.'start='.($start + $posts).'&amp;'.SID.'">Далее-&gt;</a>';}else{echo 'Далее-&gt;';}

}


//----------------------- Постраничная навигация (Страницы) ------------------------//
function page_strnavigation($link, &$posts, &$start, &$total, $koll = 4) {

if($total>0){
$ba=ceil($total/$posts);
$ba2=$ba*$posts-$posts;

echo '<hr>Страницы: ';
$min = $start - $posts * ($koll - 1);
$max = $start + $posts * $koll;

if($min<$total && $min>0){
if($min-$posts>0){
echo '<a href="'.$link.'start=0&amp;'.SID.'">1</a> ... ';
} else {
echo '<a href="'.$link.'start=0&amp;'.SID.'">1</a> ';
}}

for($i=$min; $i<$max;){

if($i<$total && $i>=0){
$ii=floor(1+$i/$posts);

if ($start==$i) {
echo ' <b>('.$ii.')</b>';
} else {
echo ' <a href="'.$link.'start='.$i.'&amp;'.SID.'">'.$ii.'</a>';
}}

$i=$i+$posts;}

if($max<$total){
if($max+$posts<$total){
echo ' ... <a href="'.$link.'start='.$ba2.'&amp;'.SID.'">'.$ba.'</a>';
} else {
echo ' <a href="'.$link.'start='.$ba2.'&amp;'.SID.'">'.$ba.'</a>';
}}
}}

function site_title($string) {
global $config_title;

$position=$config_title;

$file = file(BASEDIR."local/headlines.dat"); 
if ($file!=""){
foreach($file as $value){
$line = explode("|",$value);

if ($string=='/'.$line[1]){$position.=' - '.$line[2]; break;}

}}

return $position;
}
?>