Вход Регистрация
Файл: core/functions.php
Строк: 361
<?PHP
/*
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
СИСТЕМНЫЕ ФУНКЦИИ
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
/**
 * проверяем, что функция mb_ucfirst не объявлена
 * и включено расширение mbstring (Multibyte String Functions)
 */
if (!function_exists('mb_ucfirst') && extension_loaded('mbstring'))
{
    
/**
     * mb_ucfirst - преобразует первый символ в верхний регистр
     * @param string $str - строка
     * @param string $encoding - кодировка, по-умолчанию UTF-8
     * @return string
     */
    
function mb_ucfirst($str$encoding='UTF-8')
    {
        
$str mb_ereg_replace('^[ ]+'''$str);
        
$str mb_strtoupper(mb_substr($str01$encoding), $encoding).
               
mb_substr($str1mb_strlen($str), $encoding);
        return 
$str;
    }
}

# Фильтрация текстовых данных
function check($text){
return 
trim(htmlspecialchars(mysql_escape_string($text)));
}

/*Функция для генерации случайной строки*/

    
function generateCode($length=6
    {

        
$chars "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPRQSTUVWXYZ0123456789";

        
$code "";

        
$clen strlen($chars) - 1;  
        while (
strlen($code) < $length) {

                
$code .= $chars[mt_rand(0,$clen)];  
        }

        return 
$code;

    }

    
/*Обработка времени*/
    
function time_autoformat($ts$full false){
      if(
$full)
      {
            
$d ''$t $ts;
            
$d1 = (floor($t/31622400)>0) ? floor($t/31622400) : '';
            
$d2 = (floor($t/2635200)>0) ? floor($t/2635200) % 12 '';
            
$d3 = (floor($t/86400)>0) ? floor($t/86400) % 30 '';
            
$d4 = (floor($t/3600)>0) ? floor($t/3600) % 24 '';
            
$d5 floor($t/60) % 60;
            if(
$d1$d .= sklonen($d1,'год ','года ','лет ');
            if(
$d2$d .= sklonen($d2,'месяц ','месяца ','месяцев ');
            if(
$d3$d .= sklonen($d3,'день ','дня ','дней ');
            if(
$d4$d .= sklonen($d4,'час ','часа ','часов ');
            if(
$d5$d .= sklonen($d5,'минута  ','минуты ','минут ');
            return 
$d;
        } else {
            
$sec $ts;
            
$min round($ts/60);
            
$hour round($ts/3600);
            
$days round($ts/86400);
            
$month round($ts/2635200);
            
$years round($ts/31622400);    
            if(
$sec<60) return $sec.' сек.';    
            if(
$min<60) return $min.' мин.';    
            if(
$hour<24) return sklonen($hour,'час','часа','часов',false);    
            if(
$days<31) return sklonen($days,'день','дня','дней',false);    
            if(
$month<12) return sklonen($month,'месяц','месяца','месяцев',false); 
            else return 
sklonen($years,'год','года','лет',false);
        }
    }    
     
    function 
sklonen($n,$s1,$s2,$s3$b false)
    {
        
$m $n 10$j $n 100;
        if(
$m==1$s $s1;
        if(
$m>=&& $m<=4$s $s2;
        if(
$m==|| $m>=|| ($j>=10 && $j<=20)) $s $s3;
        if(
$b$n '<b>'.$n.'</b>';
        return 
$n.' '.$s;
    }

/// Пример echo time_autoformat(1234, 1);
    
/*
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/

# Отправка внутренней почты
    
function mail_go($id_us$content$who=FALSE)
    {
        global 
$user;
        
        if(
$who == 1$who 1;
        else 
$who $user['id'];
        
        
/*[ДЛЯ ПЕРВОГО ЮЗЕРА] Добавляем сообщение*/
        
mysql_query("INSERT INTO `mail` SET `adresat`='".(int)$who."', `kto`='".(int)$who."', `komu`='".(int)$id_us."', `content`='".$content."', `data`='".date('d.m.Y в H:i')."', `time`='".time()."'");
        
/*[ДЛЯ ВТОРОГО ЮЗЕРА] Добавляем сообение*/
        
mysql_query("INSERT INTO `mail` SET `adresat`='".(int)$id_us."', `kto`='".(int)$who."', `komu`='".(int)$id_us."', `content`='".$content."', `data`='".date('d.m.Y в H:i')."', `time`='".time()."'");
        
        
/*[ДЛЯ ПЕРВОГО ЮЗЕРА] Обновляем время в контакте (что бы последните отвеченные были в верху)  или добавляем контакт*/
        
if(mysql_result(mysql_query("SELECT COUNT(*) FROM `mail_kontakt` WHERE `us`='".(int)$who."' AND `kontakt`='".(int)$id_us."'"), 0))
        {
            
mysql_query ("Update `mail_kontakt` set  `time` = '".time()."' WHERE `us`='".(int)$who."' AND `kontakt`='".(int)$id_us."'");
        }
        else
        {
            
mysql_query("INSERT INTO `mail_kontakt` SET `us`='".(int)$who."', `kontakt`='".(int)$id_us."', `time`='".time()."'");
        }                
        
/*[ДЛЯ ВТОРОГО ЮЗЕРА] Обновляем время в контакте (что бы последните отвеченные были в верху)  или добавляем контакт*/
        
if(mysql_result(mysql_query("SELECT COUNT(*) FROM `mail_kontakt` WHERE `us`='".(int)$id_us."' AND `kontakt`='".(int)$who."'"), 0))
        {
            
mysql_query ("Update `mail_kontakt` set  `time` = '".time()."' WHERE `us`='".(int)$id_us."' AND `kontakt`='".(int)$who."'");
        }
        else
        {
            
mysql_query("INSERT INTO `mail_kontakt` SET `us`='".(int)$id_us."', `kontakt`='".(int)$who."', `time`='".time()."'");
        }
                
    }
/*Меню навигиции*/
    
function page_nav($page,$total,$cssClass,$dopLink)
    {
        if (
$page != 1$pervpage '<a href= ?'.$dopLink.'page=1><button class="button_navig"><<</button></a>  
                                       <a href= ?'
.$dopLink.'page='. ($page 1) .'><button class="button_navig"><</button></a>';  
        
// Проверяем нужны ли стрелки вперед  
        
if ($page != $total$nextpage ' <a href= ?'.$dopLink.'page='. ($page 1) .'><button class="button_navig">></button></a>  
                                           <a href= ?'
.$dopLink.'page=' .$total'><button class="button_navig">>></button></a>';  

        
// Находим две ближайшие станицы с обоих краев, если они есть  
        
if($page 0$page2left '<a href= ?'.$dopLink.'page='. ($page 2) .'><button class="button_navig">'. ($page 2) .'</button></a>';  
        if(
$page 0$page1left '<a href= ?'.$dopLink.'page='. ($page 1) .'><button class="button_navig">'. ($page 1) .'</button></a>';  
        if(
$page <= $total$page2right '<a href= ?'.$dopLink.'page='. ($page 2) .'><button class="button_navig">'. ($page 2) .'</button></a>';  
        if(
$page <= $total$page1right '<a href= ?'.$dopLink.'page='. ($page 1) .'><button class="button_navig">'. ($page 1) .'</button></a>'

        
// Вывод меню  
        
if($total $num-1)
        {
            echo 
'<div class="'.$cssClass.'">  
                    <center>
                        '
.$pervpage.$page2left.$page1left.'<button class="button_navig">'.$page.'</button>'.$page1right.$page2right.$nextpage.'
                    </center>
                </div>'
;  
        }
    }
    
/*Меню навигиции для Ajax*/
    
function page_nav_Ajax($page,$total,$cssClass,$dopLink)
    {
        if (
$page != 1$pervpage '<button onClick="nav(1)" class="button_navig"><<</button>  
                                       <button onClick="nav('
.($page 1).')" class="button_navig"><</button>';  
        
// Проверяем нужны ли стрелки вперед  
        
if ($page != $total$nextpage ' <button onClick="nav('.($page 1).')" class="button_navig">></button>  
                                           <button onClick="nav('
.$total.')" class="button_navig">>></button>';  

        
// Находим две ближайшие станицы с обоих краев, если они есть  
        
if($page 0$page2left '<button onClick="nav('.($page 2).')" class="button_navig">'. ($page 2) .'</button>';  
        if(
$page 0$page1left '<button onClick="nav('.($page 1).')" class="button_navig">'. ($page 1) .'</button>';  
        if(
$page <= $total$page2right '<button onClick="nav('.($page 2).')" class="button_navig">'. ($page 2) .'</button>';  
        if(
$page <= $total$page1right '<button onClick="nav('.($page 1).')" class="button_navig">'. ($page 1) .'</button>'

        
// Вывод меню  
        
if($total $num-1)
        {
            echo 
'<div class="'.$cssClass.'">  
                    <center>
                        '
.$pervpage.$page2left.$page1left.'<button class="button_navig">'.$page.'</button>'.$page1right.$page2right.$nextpage.'
                    </center>
                </div>'
;  
        }
    }
    
# старая навигация, используется в некоторых разделах
#function page#
function page($k_page=1){ 
$page=1;
if (isset(
$_GET['page'])){
if (
$_GET['page']=='end')$page=intval($k_page);elseif(is_numeric($_GET['page'])) $page=intval($_GET['page']);}
if (
$page<1)$page=1;
if (
$page>$k_page)$page=$k_page;
return 
$page;
}

#function k_page#
function k_page($k_post=0,$k_p_str=10){ 
if (
$k_post!=0){
$v_pages=ceil($k_post/$k_p_str);
return 
$v_pages;
} else return 
1;
}

#function str#
function str($link='?',$k_page=1,$page=1){
if (
$page<1)$page=1;
echo 
'<div class="page">';
if (
$page!=1)echo '<a href="'.$link.'page=1" title="Первая страница">&lt;&lt;</a> ';
if (
$page>1)echo '<a href="'.$link.'page='.($page-1).'" title="Предыдущая страница № '.($page-1).'">&lt;</a> ';
echo 
' ';
if (
$page<$k_page)echo ' <a href="'.$link.'page='.($page+1).'" title="Следующая страница № '.($page+1).'">&gt;</a>';
if (
$page!=$k_page)echo ' <a href="'.$link.'page=end" title="Последняя страница">&gt;&gt;</a>';
echo 
'<br />';
if (
$page!=1)echo '<a href="'.$link.'page=1" title="Страница № 1">1</a>'; else echo '<b>1</b>';
for (
$ot=-3$ot<=3$ot++){
if (
$page+$ot>&& $page+$ot<$k_page){
if (
$ot==-&& $page+$ot>2)echo ' ..';
if (
$ot!=0)echo ' <a href="'.$link.'page='.($page+$ot).'" title="Страница № '.($page+$ot).'">'.($page+$ot).'</a>'; else echo ' <b>'.($page+$ot).'</b>';
if (
$ot==&& $page+$ot<$k_page-1)echo ' ..';
}
}
if (
$page!=$k_page)echo ' <a href="'.$link.'page=end" title="Страница № '.$k_page.'">'.$k_page.'</a>';elseif ($k_page>1)echo ' <b>'.$k_page.'</b>';
echo 
'</div>';
}
    
# number format
    
function n_f($i) {
        if(
$i >= 10000 && $i 1000000) {
        
$i number_format($i0'''.');
        
$i round($i,3).'K';
        }
        elseif(
$i >= 1000000) {
        
$i number_format($i0'''.');
        
$i round($i,3).'M';
        }else{
        
$i number_format($i0''''');
        }
        return $i;
    } 

    # Фильтрация чисел
    function _num($i) {
        $i = (int) abs($i);
        return $i;
    }
    # Смайли
    function smiles($text){
        $aa = mysql_query("SELECT name,adres FROM `smiles` order by `id` desc");
        while($ba = mysql_fetch_assoc($aa)){
        $text=str_replace($ba['
name'],'<img src="/file/smiles/'.$ba['adres'].'" alt="smile" class="smiles" />', $text);
        }
        # BBcode
        $bbcode = array(
        '
/[i](.+)[/i]/isU' => '<em>$1</em>',
        '
/[b](.+)[/b]/isU' => '<strong>$1</strong>',
        '
/[u](.+)[/u]/isU' => '<span style="text-decoration:underline;">$1</span>',
        '
/[big](.+)[/big]/isU' => '<span style="font-size:large;">$1</span>',
        '
/[center](.+)[/center]/isU' => '<center>$1</center>',
        '
/[small](.+)[/small]/isU' => '<span style="font-size:xx-small;">$1</span>',
        '
/[red](.+)[/red]/isU' => '<span style="color:#ff0000;">$1</span>',
        '
/[green](.+)[/green]/isU' => '<span style="color:#00bb00;">$1</span>',
        '
/[blue](.+)[/blue]/isU' => '<span style="color:#0000bb;">$1</span>',
        '
/[white](.+)[/white]/isU' => '<span style="color:#ffffff;">$1</span>');
        $text= preg_replace(array_keys($bbcode), array_values($bbcode), $text);
        $text = preg_replace('
/[img]{1}(.+?)[/img]{1}/', '<img src="$1"/>', $text);

        return nl2br($text);
    }
    # панель смайлов
    function fast_smile()
    {
        ?>
            <script>
                /* Вставка смайлов */
                function fast_smile(text)
                {
                    $("#mess").focus();
                    document.getElementById("mess").value += " "+text;
                }
            </script>
        <?PHP
        
        $q = mysql_query("SELECT * FROM `smiles` WHERE `cat`='
1' LIMIT 5");
        while($arr = mysql_fetch_assoc($q))
        {
            $smil .= '
<img src="/file/smiles/'.$arr['adres'].'" class="smiles_min" style="cursor: pointer;" alt="*" onClick="fast_smile(''.$arr['name'].'');">';
        }
        
        $smil .= ' 
<a href="/smiles" target="_blank">[Все]</a>';
        
        return $smil;
    }
    # Время
    function vremja($time=NULL)
    {
        global $user;
        
        if ($time==NULL)$time=time();
        if (isset($user))$time=$time+$user['
set_timesdvig']*60*60;
        $timep="".date("j M Y в H:i", $time)."";
        $time_p[0]=date("j n Y", $time);
        $time_p[1]=date("H:i", $time);
        if ($time_p[0]==date("j n Y"))$timep=date("H:i:s", $time);
        if (isset($user)){
        if ($time_p[0]==date("j n Y", time()+$user['
set_timesdvig']*60*60))$timep=date("H:i:s", $time);
        if ($time_p[0]==date("j n Y", time()-60*60*(24-$user['
set_timesdvig'])))$timep="Вчера в $time_p[1]";}
        else{
        if ($time_p[0]==date("j n Y"))$timep=date("H:i:s", $time);
        if ($time_p[0]==date("j n Y", time()-60*60*24))$timep="Вчера в $time_p[1]";}
        $timep=str_replace("Jan","Янв",$timep);
        $timep=str_replace("Feb","Фев",$timep);
        $timep=str_replace("Mar","Марта",$timep);
        $timep=str_replace("May","Мая",$timep);
        $timep=str_replace("Apr","Апр",$timep);
        $timep=str_replace("Jun","Июня",$timep);
        $timep=str_replace("Jul","Июля",$timep);
        $timep=str_replace("Aug","Авг",$timep);
        $timep=str_replace("Sep","Сент",$timep);
        $timep=str_replace("Oct","Окт",$timep);
        $timep=str_replace("Nov","Ноября",$timep);
        $timep=str_replace("Dec","Дек",$timep);
        return $timep;
    }

    /* Функция определения реального IP пользователя */
    function RealIp()
    {
        if (!empty($_SERVER['
HTTP_CLIENT_IP'])) 
        {
            $ip=$_SERVER['
HTTP_CLIENT_IP'];
        }
        elseif (!empty($_SERVER['
HTTP_X_FORWARDED_FOR']))
        {
            $ip=$_SERVER['
HTTP_X_FORWARDED_FOR'];
        }
        else
        {
            $ip=$_SERVER['
REMOTE_ADDR'];
        }
        return trim(mysql_real_escape_string(htmlspecialchars($ip)));
    }
    /* Проверяешь валидностьт ip */
    function validate_ip($ip) 
    {
        $ip = trim(str_replace(",", ".", $ip));
        if (!@preg_match("/^([0-9]|[0-9][0-9]|[01][0-9]
        [0-9]|2[0-4][0-9]|25[0-5])(.([0-9]|[0-9][0-9]|[01]
        [0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/", $ip))
        return false; else return true;
    }
    
    /*Удаляем изображения */
    function no_img($text) 
    {
        $text = preg_replace('
#<img(.*?)>#si', '', $text);
        
        
return $text;
    }    
?>
Онлайн: 0
Реклама