Просмотр файла inc/func.php

Размер файла: 13.62Kb
<?
defined('WBCAT') or die('Restricted access');
// Функция  обработка тегов в тексте
function tags($text = '') {
$text = preg_replace('#\[b\](.*?)\[/b\]#si', '<span style="font-weight: bold;">\1</span>', $text);
$text = preg_replace('#\[i\](.*?)\[/i\]#si', '<span style="font-style:italic;">\1</span>', $text);
$text = preg_replace('#\[u\](.*?)\[/u\]#si', '<span style="text-decoration:underline;">\1</span>', $text);
$text = preg_replace('#\[s\](.*?)\[/s\]#si', '<span style="text-decoration: line-through;">\1</span>', $text);
$text = preg_replace('#\[color=\#(.*?){3,6}\](.*?)\[/color\]#si', '<span style="color: #\1">\2</span>', $text);
$text = preg_replace('#\[left\](.*?)\[/left\]#si', '<p style="text-align:left">\1</p>', $text);
$text = preg_replace('#\[right\](.*?)\[/right\]#si', '<p style="text-align:right">\1</p>', $text);
$text = preg_replace('#\[center\](.*?)\[/center\]#si', '<p style="text-align:center">\1</p>', $text);
$text = preg_replace_callback('#\[url=(https?://.+?)\](.+?)\[/url\]#si', 'url_replace', $text);
$text = preg_replace_callback('#\[img(.*?)\](.*?)\[/img\]#si','bb_img',  $text);

return $text;
}

function bb_img($s){
global $home;
if($s[1]!=""){
$img_atributs='alt="Изображение"'.$s[1];
} else {
$img_atributs='alt="Изображение"';
}

return '<a href="'.$s[2].'"><img src="'.$home.'/images/resize.php?image='.$s[2].'" '.$img_atributs.' /></a>';

} 


// Функция парсинга ссылки
function url_replace($s) {
if (!isset ($s[3])) {
return '<a href="' . $s[1] . '">' . $s[2] . '</a>';
}
else {
return '<a href="' . $s[3] . '">' . $s[3] . '</a>';
}
}     
// Функция смайлов
function smileys($text){
$text = strtr($text, array(
':)'=>'<img src="smileys/1.gif" alt=":)"/>',
':('=>'<img src="smileys/2.gif" alt=":("/>',
':P'=>'<img src="smileys/3.gif" alt=":P"/>',
':D'=>'<img src="smileys/4.gif" alt=":D"/>',
));
return $text;
} 
// Преобразование числа в ip
function int2ip($i) {
   $d[0]=(int)($i/256/256/256);
   $d[1]=(int)(($i-$d[0]*256*256*256)/256/256);
   $d[2]=(int)(($i-$d[0]*256*256*256-$d[1]*256*256)/256);
   $d[3]=$i-$d[0]*256*256*256-$d[1]*256*256-$d[2]*256;
   return "$d[0].$d[1].$d[2].$d[3]";
}
// Преобразование ip в число
function ip2int($ip) {
   $a=explode(".",$ip);
   return $a[0]*256*256*256+$a[1]*256*256+$a[2]*256+$a[3];
}

// Получаем реальный ip-адрес пользователя
function getip()
{
 if (!empty($_SERVER['HTTP_CLIENT_IP'])) 
 {
   $ip=htmlspecialchars($_SERVER['HTTP_CLIENT_IP']);
 }
 elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
 {
  $ip=htmlspecialchars($_SERVER['HTTP_X_FORWARDED_FOR']);
 }
 else
 {
   $ip=htmlspecialchars($_SERVER['REMOTE_ADDR']);
 }
 return $ip;
}

// Функция вычисления размера 
function format_size($size) {
      $sizes = array(" Bytes", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB");
      if ($size == 0) { return('n/a'); } else {
      return (round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) . $sizes[$i]); }
}

// Функция иконок
function ico_format($text){
$text = strtr($text, array(
'zip'=>'<img src="img/zip.png" alt="zip"/>',
'txt'=>'<img src="img/txt.png" alt="txt"/>',
'rar'=>'<img src="img/rar.png" alt="rar"/>',
'mp3'=>'<img src="img/mp3.gif" alt="mp3"/>',
));
return $text;
} 

########################
# Seo-функции 
#########################
///////////// Google PR //////////////////
$googlehost='toolbarqueries.google.com';
$googleua='Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5';

function StrToNum($Str, $Check, $Magic) {
    $Int32Unit = 4294967296;
    $length = strlen($Str);
    for ($i = 0; $i < $length; $i++) {
        $Check *= $Magic;
        if ($Check >= $Int32Unit) {
            $Check = ($Check - $Int32Unit * (int) ($Check / $Int32Unit));
            $Check = ($Check < -2147483648) ? ($Check + $Int32Unit) : $Check;
        }
        $Check += ord($Str{$i});
    }
    return $Check;
}

function HashURL($String) {
    $Check1 = StrToNum($String, 0x1505, 0x21);
    $Check2 = StrToNum($String, 0, 0x1003F);

    $Check1 >>= 2;
    $Check1 = (($Check1 >> 4) & 0x3FFFFC0 ) | ($Check1 & 0x3F);
    $Check1 = (($Check1 >> 4) & 0x3FFC00 ) | ($Check1 & 0x3FF);
    $Check1 = (($Check1 >> 4) & 0x3C000 ) | ($Check1 & 0x3FFF);

    $T1 = (((($Check1 & 0x3C0) << 4) | ($Check1 & 0x3C)) <<2 ) | ($Check2 & 0xF0F );
    $T2 = (((($Check1 & 0xFFFFC000) << 4) | ($Check1 & 0x3C00)) << 0xA) | ($Check2 & 0xF0F0000 );

    return ($T1 | $T2);
}

function CheckHash($Hashnum) {
    $CheckByte = 0;
    $Flag = 0;

    $HashStr = sprintf('%u', $Hashnum) ;
    $length = strlen($HashStr);

    for ($i = $length-1; $i >= 0;  $i--) {
        $Re = $HashStr{$i};
        if (1 === ($Flag % 2)) {
            $Re += $Re;
            $Re = (int)($Re / 10) + ($Re % 10);
        }
        $CheckByte += $Re;
        $Flag ++;
    }

    $CheckByte %= 10;
    if (0 !== $CheckByte) {
        $CheckByte = 10 - $CheckByte;
        if (1 === ($Flag % 2) ) {
            if (1 === ($CheckByte % 2)) {
                $CheckByte += 9;
            }
            $CheckByte >>= 1;
        }
    }

    return '7'.$CheckByte.$HashStr;
}

function getch($url) { return CheckHash(HashURL($url)); }

function getpr($url) {
    global $googlehost,$googleua;
    $ch = getch($url);
    $fp = fsockopen($googlehost, 80, $errno, $errstr, 30);
    if ($fp) {
	
        $out = "GET /tbr?features=Rank&sourceid=navclient-ff&client=navclient-auto-ff&ch=$ch&q=info:$url HTTP/1.1\r\n";
        $out .= "User-Agent: $googleua\r\n";
        $out .= "Host: $googlehost\r\n";
        $out .= "Connection: Close\r\n\r\n";

        fwrite($fp, $out);
        while (!feof($fp)) {
            $data = fgets($fp, 128);
            $pos = strpos($data, "Rank_");
            if($pos === false){

			} else{
                $pr=substr($data, $pos + 9);
                $pr=trim($pr);
                $pr=str_replace("\n",'',$pr);
				if ($pr == "") {return 0;}
				else {
                return $pr;
				}
            }
         }
         fclose($fp);
     }
}

////////////// Определяем Alexrank ////////////////
 function getAlexaRank($domain)
 {
     $url = 'http://data.alexa.com/data?cli=10&dat=snbamz&url=' . trim($domain);
     $xmldata = simplexml_load_file($url);
     if(isset($xmldata->SD[1]->POPULARITY['TEXT'])){
           return number_format((string)$xmldata->SD[1]->POPULARITY['TEXT']);
     }
     else
    {
          return 0;
    }
 }

////////////// Определяем ТИЦ ////////////////
        function getCI($url)
    {
     	$url = str_replace("http://", "", $url);
     	$url = str_replace("www.", "", $url);
     	$url = str_replace("wap.", "", $url);
     	$ci_url = "http://bar-navig.yandex.ru/u?ver=2&show=32&url=http://www.".$url."/";
     	$ci_data = implode("", file("$ci_url"));
     	preg_match("/value=\"(.\d*)\"/", $ci_data, $ci);
		if ($ci[1] == "")
      	return 0; // Если не смогли определить ТИЦ...
     	else
      	return $ci[1]; // Вот оно счастье...
    }

// Проверка корректности url
function check_url($url,$data) { // (www.)?
$a = false;
    if (preg_match("/^(([\w,-]+.)($data))$/i", $url)) {
        $a = true;
    }
	if (preg_match("/^(([0-9А-яёЁтТыЫ\-]+.)(рф))$/",$url)) {
        $a = true;
	}	
		
		return $a;
}

// Вывод преаью текста
function preview_desc ( $str, $length = 150 ) {
if (strstr($str,'[code]')) return '';
  $result = substr ( stripslashes( $str ), 0, $length );
  while( true ) {
    if( $tmp = substr ( stripslashes( $str ), $length, 1 ) ) {
      if ( $tmp == ' ' ) break;
      $result .= $tmp;
    } else break;
    $length++;
  }
  return $result;
}

// Браузер
function ua() {
	if (isset($_SERVER['HTTP_USER_AGENT'])) {
		if (!empty($_SERVER['HTTP_USER_AGENT'])) {
			return htmlspecialchars($_SERVER['HTTP_USER_AGENT']);
		} else return 'n/a';
	} else return 'n/a';
}

// Вывод сообщения
function print_msg ($array,$bbcode = false,$smileys = false , $module = false) {
	$view = '';
	
	$array['date'] = $module == 'book' ? $array['time'] : $array['date'];
	$array['text'] = $bbcode ? tags($array['text']) : $array['text'];
	$array['text'] = $smileys ? smileys($array['text']) : $array['text'];
	
	$view.= '<a name="'.$array['id'].'"></a>[<b>'.$array['name'].'</b>] <small>['.date('d.m.y H:i',$array['date']).'] <a href="#'.$array['id'].'">#</a></small><br/>'.nl2br($array['text']).'<br/>';
	return $view;
}


//------------Рекусивный подсчет количества загрузок в категориии и во всех вложенных папках---------------//
function count_dir_down($id){
$q=mysql_result(mysql_query('SELECT COUNT(*) FROM `down_cat` WHERE `parent_id`='.$id.''),0); 
if($q>0){ //если есть вложенные дирректории 
$q=mysql_query('SELECT * FROM `down_cat` WHERE `parent_id`='.$id.'');
$i=0;
while($m = mysql_fetch_assoc($q)) { $i=$i+count_dir_down($m['id']); }
return $i;
} else { //если нет вложенных дирректорий считаем кол-во загрузок
$q=mysql_result(mysql_query('SELECT COUNT(*) FROM `down_fields` WHERE `cat_id`='.$id.' AND `type`="1"'),0); return $q;
 }


}
//------------------------------------------------------------------------------------------------------//
//--------------- Функция правильного вывода веса файла -------------------//
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;
}
//------------ END Функция правильного вывода веса файла -------------------//
//---------Рекусивный подсчет количества подразделов в категориии и во всех вложенных папках------------//
function count_subdir_down($id){
$q=mysql_result(mysql_query('SELECT COUNT(*) FROM `down_cat` WHERE `parent_id`='.$id.''),0); //Считаем сколько под директорий 
if($q>0){ //если есть вложенные директории 
$q=mysql_query('SELECT * FROM `down_cat` WHERE `parent_id`='.$id.''); // Считаем сколько их
$i=0;
while($m = mysql_fetch_assoc($q)) { $i=$i+count_subdir_down($m['id']); } // и проверяем Каждую на наличее еще под директорий 
return $i;
} else { //если нет вложенных дирректорий считаем 
$q=mysql_result(mysql_query('SELECT COUNT(*) FROM `down_cat` WHERE `id`='.$id.''),0);
return $q;
 }
}
//------------------------------------------------------------------------------------------------------//
//-------------------------Вернет иды каталогов через запятую----------------------------------------------//
function catidbycat($id){ return substr(CountTree($id), 1); }

function CountTree($parent_id) {    
     $sql = "SELECT `id` FROM `down_cat` WHERE  `parent_id` = $parent_id ORDER BY `id`";
     $result = mysql_query($sql);    
     if (mysql_num_rows($result) > 0) {
           
         while ($row = mysql_fetch_array($result)) {
             $eq.=','.$row['id'].'';
             $eq.=CountTree($row['id']);             
         }       
       
     }
	return $eq; 
 }
//------------------------------------------------------------------------------------------------------//
//------------------------------------Узнаем когда были seo обновления ---------------------------------//
function Seo_up(){

function count_day($d,$m,$y){ 
$thisday=intval((time()-mktime(0, 0, 0, $m, $d, $y))/86400);
if($thisday==0){$count_day=' (сегодня)';
} elseif($thisday==1){$count_day=' (вчера)';
} elseif($thisday==2){$count_day=' (позавчера)';
} elseif($thisday==3){$count_day=' (' .$thisday .' дня назад)';
} elseif($thisday==4){$count_day=' (' .$thisday .' дня назад)';
} else {$count_day=' (' .$thisday .' дней назад)';}
return $count_day;
}

function get_updates_pr() { 
@$xmldata = simplexml_load_file('http://pr-cy.ru/updates.xml');
return $xmldata;
}

$get_up=get_updates_pr();
$pr_exp=explode('.',$get_up->pr);
$yav_exp=explode('.',$get_up->yav);
$cy_exp=explode('.',$get_up->cy);

$pr_day=count_day($pr_exp[0],$pr_exp[1],$pr_exp[2]);
$yav_day=count_day($yav_exp[0],$yav_exp[1],$yav_exp[2]);
$cy_day=count_day($cy_exp[0],$cy_exp[1],$cy_exp[2]);

return '
<style>
.tic { background: url("images/yandex.png") no-repeat transparent; padding: 0 0 0 20px; background-color: #EFF7FC; min-height:17px;}
.gl { background: url("images/google.png") no-repeat transparent; padding: 0 0 0 20px; min-height:17px;}
.seoUp { padding:4px;}
</style>
<div class="seoUp">
<div class="tic">Яндекс ТИЦ: '.$cy_day.' '.$get_up->cy .'</div>
<div class="gl">Google PR: '.$pr_day .' '.$get_up->pr .'</div>
<div class="tic">Яндекс выдача: '.$yav_day.' '.$get_up->yav.'</div>
</div>';
}

// Автозагрузка классов
function __autoload($classname) {
	require_once("classes/$classname.php");
}
?>