Вход Регистрация
Файл: app/core/classes/Functions.php
Строк: 635
<?php

class Functions {

    public static function 
position($text, $chr) {
        
$result = mb_strpos($text, $chr);

        return 
$result !== false ? $result : 100;
    }

    function 
seokeywords($contents, $symbol = 5, $words = 35) {
        
$contents = preg_replace(array("'<[/!]*?[^<>]*?>'si", "'([rn])[s]+'si", "'&[a-z0-9]{1,6};'si", "'( +)'si"), array("", "\1 ", " ", " "), strip_tags($contents));
        
$rearray = array("~", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "_", "+",
            
"`", '"', "№", ";", ":", "?", "-", "=", "|", """, "\", "/",
            "
[", "]", "{", "}", "'", ",", ".", "<", ">", "rn", "n", "t", "«", "»", "quot");

        $adjectivearray = array("ые", "ое", "ие", "ий", "ая", "ый", "ой", "ми", "ых", "ее", "ую", "их", "ым",
            "как", "для", "что", "или", "это", "этих",
            "всех", "вас", "они", "оно", "еще", "когда",
            "где", "эта", "лишь", "уже", "вам", "нет",
            "если", "надо", "все", "так", "его", "чем",
            "при", "даже", "мне", "есть", "только", "очень",
            "сейчас", "точно", "обычно"
        );


        $contents = str_replace($rearray, " ", $contents);
        $keywordcache = explode(" ", $contents);
        $rearray = array();

        foreach ($keywordcache as $word) {
            if (strlen($word) >= $symbol && !is_numeric($word)) {
                $adjective = substr($word, -2);
                if (!in_array($adjective, $adjectivearray) && !in_array($word, $adjectivearray)) {
                    $rearray[$word] = (array_key_exists($word, $rearray)) ? ($rearray[$word] + 1) : 1;
                }
            }
        }

        arsort($rearray);
        $keywordcache = array_slice($rearray, 0, $words);
        $keywords = "";

        foreach ($keywordcache as $word => $count) {
            $keywords .= ", " . $word;
        }

        return substr($keywords, 1);
    }

    function close_tags($content) {
        $position = 0;
        $open_tags = array();
        //теги для игнорирования
        $ignored_tags = array(
            '
br',
            '
hr',
            '
img'
        );

        while (($position = strpos($content, '
<', $position)) !== FALSE) {
            //забираем все теги из контента
            if (preg_match("|^<(/?)([a-zd]+)b[^>]*>|i", substr($content, $position), $match)) {
                $tag = strtolower($match[2]);
                //игнорируем все одиночные теги
                if (in_array($tag, $ignored_tags) == FALSE) {
                    //тег открыт
                    if (isset($match[1]) AND $match[1] == '') {
                        if (isset($open_tags[$tag])) {
                            $open_tags[$tag] ++;
                        } else
                            $open_tags[$tag] = 1;
                    }
                    //тег закрыт
                    if (isset($match[1]) AND $match[1] == '
/') {
                        if (isset($open_tags[$tag])) {
                            $open_tags[$tag] --;
                        }
                    }
                }
                $position += strlen($match[0]);
            } else {
                $position++;
            }
        }
        //закрываем все теги
        foreach ($open_tags as $tag => $count_not_closed) {
            $content .= str_repeat("</{$tag}>", $count_not_closed);
        }

        return $content;
    }

    //функция для определения размера папки
    function dir_size($f, $format = true) {
        if ($format) {
            $size = dir_size($f, false);
            if ($size <= 1024) {
                return $size . ' 
bytes';
            }
            //else if($size<=1024*1024) return round($size/(1024),2).' 
Kb'; 
            else if ($size <= 1024 * 1024 * 1024) {
                return round($size / (1024 * 1024), 2);
            }
            //else if($size<=1024*1024*1024*1024) return round($size/(1024*1024*1024),2).' 
Gb'; 
            //else if($size<=1024*1024*1024*1024*1024) return round($size/(1024*1024*1024*1024),2).' 
Tb'; //:))) 
            //else return round($size/(1024*1024*1024*1024*1024),2).' 
Pb'; // ;-) 
        } else {
            if (is_file($f)) {
                return filesize($f);
            }
            $size = 0;
            $dh = opendir($f);
            while (($file = readdir($dh)) !== false) {
                if ($file == '
.' || $file == '..') {
                    continue;
                }
                if (is_file($f . '
/' . $file)) {
                    $size += filesize($f . '
/' . $file);
                } else {
                    $size += dir_size($f . '
/' . $file, false);
                }
            }
            closedir($dh);
            return $size + filesize($f);
        }
    }

    function ending($num) {
        $num100 = $num % 100;
        $num10 = $num % 10;
        if (($num100 >= 5 && $num100 <= 20) || ($num10 == 0) || ($num10 == 1) || ($num10 >= 5 && $num10 <= 9)) {
            return $num . ' 
раз';
        } else if ($num10 >= 2 && $num10 <= 4) {
            return $num . ' 
раза';
        } else {
            return $num . ' 
разик';
        }
    }

    function minute($num) {
        $num100 = $num % 100;
        $num10 = $num % 10;
        if (($num100 >= 5 && $num100 <= 20) || ($num10 == 0) || ($num10 >= 5 && $num10 <= 9)) {
            return $num . ' 
минут';
        } else if ($num10 >= 2 && $num10 <= 4) {
            return $num . ' 
минуты';
        } else {
            return $num . ' 
минута';
        }
    }

    function hour($num) {
        $num100 = $num % 100;
        $num10 = $num % 10;
        if (($num100 >= 5 && $num100 <= 20) || ($num10 == 0) || ($num10 >= 5 && $num10 <= 9)) {
            return $num . ' 
часов';
        } else if ($num10 >= 2 && $num10 <= 4) {
            return $num . ' 
часа';
        } else {
            return $num . ' 
час';
        }
    }

    function day($num) {
        $num100 = $num % 100;
        $num10 = $num % 10;
        if (($num100 >= 5 && $num100 <= 20) || ($num10 == 0) || ($num10 >= 5 && $num10 <= 9)) {
            return $num . ' 
дней';
        } else if ($num10 >= 2 && $num10 <= 4) {
            return $num . ' 
дня';
        } else {
            return $num . ' 
день';
        }
    }

    function month($num) {
        $num100 = $num % 100;
        $num10 = $num % 10;
        if (($num100 >= 5 && $num100 <= 20) || ($num10 == 0) || ($num10 >= 5 && $num10 <= 9)) {
            return $num . ' 
месяцев';
        } else if ($num10 >= 2 && $num10 <= 4) {
            return $num . ' 
месяца';
        } else {
            return $num . ' 
месяц';
        }
    }

    function ending_user($num) {
        $num100 = $num % 100;
        $num10 = $num % 10;
        if (($num100 >= 5 && $num100 <= 20) || ($num10 == 0) || ($num10 >= 5 && $num10 <= 9)) {
            return $num . ' 
пользователей';
        } else if ($num10 >= 2 && $num10 <= 4) {
            return $num . ' 
пользователя';
        } else {
            return $num . ' 
пользователь';
        }
    }

    function ending_quest($num) {
        $num100 = $num % 100;
        $num10 = $num % 10;
        if (($num100 >= 5 && $num100 <= 20) || ($num10 == 0) || ($num10 >= 5 && $num10 <= 9)) {
            return $num . ' 
посетителей';
        } else if ($num10 >= 2 && $num10 <= 4) {
            return $num . ' 
посетителя';
        } else {
            return $num . ' 
посетитель';
        }
    }

    function ending_money($num) {
        $num100 = $num % 100;
        $num10 = $num % 10;
        if (($num100 >= 5 && $num100 <= 20) || ($num10 == 0) || ($num10 >= 5 && $num10 <= 9)) {
            return $num . ' 
рублей';
        } else if ($num10 >= 2 && $num10 <= 4) {
            return $num . ' 
рубля';
        } else {
            return $num . ' 
рубль';
        }
    }

    function ending_second($num) {
        $num100 = $num % 100;
        $num10 = $num % 10;
        if (($num100 >= 5 && $num100 <= 20) || ($num10 == 0) || ($num10 >= 5 && $num10 <= 9)) {
            return $num . ' 
секунд';
        } else if ($num10 >= 2 && $num10 <= 4) {
            return $num . ' 
секунды';
        } else {
            return $num . ' 
секунда';
        }
    }

    function ending_board($num) {
        $num100 = $num % 100;
        $num10 = $num % 10;
        if (($num100 >= 5 && $num100 <= 20) || ($num10 == 0) || ($num10 >= 5 && $num10 <= 9)) {
            return $num . ' 
объявлений';
        } else if ($num10 >= 2 && $num10 <= 4) {
            return $num . ' 
объявления';
        } else {
            return $num . ' 
объявление';
        }
    }

    function ending_age($num) {
        $num100 = $num % 100;
        $num10 = $num % 10;
        if (($num100 >= 5 && $num100 <= 20) || ($num10 == 0) || ($num10 == 1) || ($num10 >= 5 && $num10 <= 9)) {
            return $num . ' 
лет';
        } else if ($num10 >= 2 && $num10 <= 4) {
            return $num . ' 
года';
        } else {
            return $num . ' 
год';
        }
    }

    function message($num) {
        $num100 = $num % 100;
        $num10 = $num % 10;
        if (($num100 >= 5 && $num100 <= 20) || ($num10 == 0) || ($num10 >= 5 && $num10 <= 9)) {
            return $num . ' 
сообщений';
        } else if ($num10 >= 2 && $num10 <= 4) {
            return $num . ' 
сообщения';
        } else {
            return $num . ' 
сообщение';
        }
    }

    function esc($text) {
        $text = htmlspecialchars_decode(htmlspecialchars_decode($text));
        return $text;
    }

    function _GET($key) {
        return isset($_GET[$key]) ? $_GET[$key] : null;
    }

    function _POST($key) {
        return isset($_POST[$key]) ? $_POST[$key] : null;
    }

    function IS_POST() {
        return $_SERVER['
REQUEST_METHOD'] == 'POST';
    }

    function GET_METHOD() {
        $method = $_SERVER['
REQUEST_METHOD'];

        if (self::IS_POST()) {
            if (isset($_SERVER['
X-HTTP-METHOD-OVERRIDE'])) {
                $method = strtoupper($_SERVER['
X-HTTP-METHOD-OVERRIDE']);
            }
        }

        return $method;
    }

    function _e($str) {
        return htmlspecialchars($str, ENT_QUOTES, '
UTF-8');
    }

    function _d($str, $default) {
        return $str ? _e($str) : _e($default);
    }

    function dd($value) {
        var_dump($value);
        die();
    }

    function IS_HTTPS() {
        return isset($_SERVER['
HTTPS']) && $_SERVER['HTTPS'] != 'off';
    }

    function GET_HTTP_HOST() {
        $host = self::IS_HTTPS() ? '
https://' : 'http://';
        
$host .= self::GET_HOST();
        return 
$host;
    }

    function 
GET_HOST() {
        
$host = $_SERVER['HTTP_HOST'];

        
$host = strtolower(preg_replace('/:d+$/', '', trim($host)));

        if (
$host && !preg_match('/^[?(?:[a-zA-Z0-9-:]_]+.?)+$/', $host)) {
            throw new 
UnexpectedValueException(sprintf('Invalid Host "%s"', $host));
        }

        return 
$host;
    }

    function 
GET_PATH_INFO($baseUrl = null) {
        static 
$pathInfo;

        if (!
$pathInfo) {
            
$pathInfo = $_SERVER['REQUEST_URI'];

            if (!
$pathInfo) {
                
$pathInfo = '/';
            }

            
$schemeAndHttpHost = self::IS_HTTPS() ? 'https://' : 'http://';
            
$schemeAndHttpHost .= $_SERVER['HTTP_HOST'];

            if (
strpos($pathInfo, $schemeAndHttpHost) === 0) {
                
$pathInfo = substr($pathInfo, strlen($schemeAndHttpHost));
            }

            if (
$pos = strpos($pathInfo, '?')) {
                
$pathInfo = substr($pathInfo, 0, $pos);
            }

            if (
null != $baseUrl) {
                
$pathInfo = substr($pathInfo, strlen($pathInfo));
            }

            if (!
$pathInfo) {
                
$pathInfo = '/';
            }
        }

        return 
$pathInfo;
    }

    function 
number($str) {
        
$str = preg_replace("/[^0-9]/", '', $str);
        return 
$str;
    }

    function 
pagination($base_url, $start, $max_value, $num_per_page) {
        
$pgcont = 5;
        
$pgcont = (int) ($pgcont - ($pgcont % 2)) / 2;
        if (
$start >= $max_value) {
            
$start = max(0, (int) $max_value - (((int) $max_value % (int) $num_per_page) == 0 ? $num_per_page : ((int) $max_value % (int) $num_per_page)));
        } else {
            
$start = max(0, (int) $start - ((int) $start % (int) $num_per_page));
        }
        
$base_link = '<li><a class="pagenav" href="' . strtr($base_url, array(
                    
'%' => '%%'
                
)) . 'page=%d' . '">%s</a></li>';
        
$pageindex = $start == 0 ? '' : sprintf($base_link, $start - $num_per_page, '<i class="fa fa-angle-left"></i>');
        if (
$start > $num_per_page * $pgcont) {
            
$pageindex .= sprintf($base_link, 0, '1');
        }
        if (
$start > $num_per_page * ($pgcont + 1)) {
            
$pageindex .= '<li><span style="font-weight: bold;"> ... </span></li>';
        }
        for (
$nCont = $pgcont; $nCont >= 1; $nCont--) {
            if (
$start >= $num_per_page * $nCont) {
                
$tmpStart = $start - $num_per_page * $nCont;
                
$pageindex .= sprintf($base_link, $tmpStart, $tmpStart / $num_per_page + 1);
            }
        }
        
$pageindex .= '<li class="active"><a>' . ($start / $num_per_page + 1) . '</a></li> ';
        
$tmpMaxPages = (int) (($max_value - 1) / $num_per_page) * $num_per_page;
        for (
$nCont = 1; $nCont <= $pgcont; $nCont++) {
            if (
$start + $num_per_page * $nCont <= $tmpMaxPages) {
                
$tmpStart = $start + $num_per_page * $nCont;
                
$pageindex .= sprintf($base_link, $tmpStart, $tmpStart / $num_per_page + 1);
            }
        }
        if (
$start + $num_per_page * ($pgcont + 1) < $tmpMaxPages) {
            
$pageindex .= '<li><span style="font-weight: bold;"> ... </span></li>';
        }
        if (
$start + $num_per_page * $pgcont < $tmpMaxPages) {
            
$pageindex .= sprintf($base_link, $tmpMaxPages, $tmpMaxPages / $num_per_page + 1);
        }
        if (
$start + $num_per_page < $max_value) {
            
$display_page = ($start + $num_per_page) > $max_value ? $max_value : ($start + $num_per_page);
            
$pageindex .= sprintf($base_link, $display_page, '<i class="fa fa-angle-right"></i>');
        }
        return 
$pageindex;
    }

    function 
passgen($k_simb = 8, $types = 3) {
        
$password = "";
        
$small = "abcdefghijklmnopqrstuvwxyz";
        
$large = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        
$numbers = "1234567890";
        
mt_srand((double) microtime() * 1000000);
        for (
$i = 0; $i < $k_simb; $i++) {
            
$type = mt_rand(1, min($types, 3));
            switch (
$type) {
                case 
3:
                    
$password .= $large[mt_rand(0, 25)];
                    break;
                case 
2:
                    
$password .= $small[mt_rand(0, 25)];
                    break;
                case 
1:
                    
$password .= $numbers[mt_rand(0, 9)];
                    break;
            }
        }
        return 
$password;
    }

    function 
redirect($url) {
        
header('Location: ' . $url);

        
$content = sprintf('<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta http-equiv="refresh" content="1;url=%1$s" /><title>Redirecting to %1$s</title></head><body>Redirecting to <a href="%1$s">%1$s</a>.</body></html>', htmlspecialchars($url, ENT_QUOTES, 'UTF-8'));

        echo 
$content;
        exit;
    }

    function 
name_replace($name) {
        
//////////// Транслитируем имя ///////
        
$trans1 = array("Ё", "Ж", "Ч", "Ш", "Щ", "Э", "Ю", "Я", "ё", "ж", "ч", "ш", "щ", "э", "ю", "я", "А", "Б", "В", "Г", "Д", "Е", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ы", "а", "б", "в", "г", "д", "е", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ь", "Ь", "Ъ", "ъ", "ы");
        
$trans2 = array("JO", "ZH", "CH", "SH", "SCH", "JE", "JY", "JA", "jo", "zh", "ch", "sh", "sch", "je", "jy", "ja", "A", "B", "V", "G", "D", "E", "Z", "I", "J", "K", "L", "M", "N", "O", "P", "R", "S", "T", "U", "F", "H", "C", "Y", "a", "b", "v", "g", "d", "e", "z", "i", "j", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f", "h", "c", "q", "Q", "_", "_", "y");
        
$ftp = str_replace($trans1, $trans2, mb_strtolower($name));
        
////////// Вырезаем/заменяем различные неподходящие символы ////////
        
$ftp = str_replace(' ', '-', $ftp);
        
$ftp = str_replace(''', '-', $ftp);
        $ftp = str_replace('
_', '-', $ftp);
        $ftp = str_replace('
,', '-', $ftp);
        $simb = array('
?', '/', '|', '~', '+', '=', '%', '^', '&', '@', '!', '`', '*', '$', '#', '№', '"', ':', ';', '.');
        
$ftp = str_replace($simb, "", $ftp);
        
$ftp = str_replace("'", "", $ftp);
        return 
$ftp;
    }

    function replace(
$ftp) {
        ////////// Вырезаем/заменяем различные неподходящие символы ////////
        
$ftp = str_replace(' ', '-', $ftp);
        
$ftp = str_replace(''', '-', $ftp);
        
$ftp = str_replace('_', '-', $ftp);
        
$ftp = str_replace(',', '-', $ftp);
        
$simb = array('?', '/', '|', '~', '+', '=', '%', '^', '&', '@', '!', '`', '*', '$', '#', '№', '"', ':', ';', '.');
        
$ftp = str_replace($simb, "", $ftp);
        
$ftp = str_replace("'", "", $ftp);
        return 
$ftp;
    }

    
//правильный вывод размера файла
    
function size($size) {
        if (
$size >= 1073741824) {
            
$size = round($size / 1073741824 * 100) / 100 . ' Gb';
        } elseif (
$size >= 1048576) {
            
$size = round($size / 1048576 * 100) / 100 . ' Mb';
        } elseif (
$size >= 1024) {
            
$size = round($size / 1024 * 100) / 100 . ' Kb';
        } else {
            
$size = round($size) . ' b';
        }
        return 
$size;
    }

    function 
fsize($path) {
        
$fp = fopen($path, "r");
        
$inf = stream_get_meta_data($fp);
        
fclose($fp);
        foreach (
$inf["wrapper_data"] as $v) {
            if (
stristr($v, "content-length")) {
                
$v = explode(":", $v);
                return 
trim($v[1]);
            }
        }
    }

    
//функция времени
    
function times($time = NULL) {
        if (
$time == NULL) {
            
$time = time();
        }
        
$timep = "" . date("j M Y в H:i", $time) . "";
        
$time_p[0] = date("j n Y", $time);
        
$time_p[1] = date("H:i", $time);
        
$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;
    }

    function 
times_page() {
        list(
$msec, $sec) = explode(chr(32), microtime(1));
        return 
$msec + $sec;
    }

    function 
truncate($string, $length = 80, $etc = '...', $break_words = false, $middle = false) {
        if (
$length == 0) {
            return 
'';
        }

        
// no MBString fallback
        
if (isset($string[$length])) {
            
$length -= min($length, strlen($etc));
            if (!
$break_words && !$middle) {
                
$string = preg_replace('/s+?(S+)?$/', '', substr($string, 0, $length + 1));
            }
            if (!
$middle) {
                return 
substr($string, 0, $length) . $etc;
            }

            return 
substr($string, 0, $length / 2) . $etc . substr($string, -$length / 2);
        }

        return 
$string;
    }

    function 
utf8_str_split($str) {
        
// place each character of the string into and array
        
$split = 1;
        
$array = array();
        for (
$i = 0; $i < strlen($str);) {
            
$value = ord($str[$i]);
            if (
$value > 127) {
                if (
$value >= 192 && $value <= 223)
                    
$split = 2;
                elseif (
$value >= 224 && $value <= 239)
                    
$split = 3;
                elseif (
$value >= 240 && $value <= 247)
                    
$split = 4;
            }else {
                
$split = 1;
            }
            
$key = NULL;
            for (
$j = 0; $j < $split; $j++, $i++) {
                
$key .= $str[$i];
            }
            
array_push($array, $key);
        }
        return 
$array;
    }

    
/**
     * Функция вырезки всех лишних символов
     * @param <type> $str
     * @return <type>
     */
    
function clearstr($str) {
        
$sru = 'ёйцукенгшщзхъфывапролджэячсмитьбю';
        
$s1 = array_merge(self::utf8_str_split($sru), self::utf8_str_split(strtoupper($sru)), range('A', 'Z'), range('a', 'z'), range('0', '9'), array('&', ' ', '#', ';', '%', '?', ':', '(', ')', '-', '_', '=', '+', '[', ']', ',', '.', '/'));
        
$codes = array();
        for (
$i = 0; $i < count($s1); $i++) {
            
$codes[] = ord($s1[$i]);
        }
        
$str_s = self::utf8_str_split($str);
        for (
$i = 0; $i < count($str_s); $i++) {
            if (!
in_array(ord($str_s[$i]), $codes)) {
                
$str = str_replace($str_s[$i], '', $str);
            }
        }
        return 
$str;
    }

    function 
pagination_text($total, $page, $url) {
        if (
$page != 1) {
            
$pervpage = ' <li><a href= "' . $url . 'page=' . ($page - 1) . '"><i class="fa fa-angle-left"></i></a></li> ';
        }
// Проверяем нужны ли стрелки вперед 
        
if ($page != $total) {
            
$nextpage = ' <li><a href="' . $url . 'page=' . ($page + 1) . '"><i class="fa fa-angle-right"></i></a></li>';
        }
        if (
$page - 4 > 0) {
            
$first = '<li><a href="' . $url . 'page=1">1</a><a>...</a></li>';
        }
        if (
$page + 4 <= $total) {
            
$last = '<li><a>...</a><a href="' . $url . 'page=' . $total . '">' . $total . '</a></li>';
        }
// Находим две ближайшие станицы с обоих краев, если они есть 
        
if ($page - 2 > 0) {
            
$page2left = ' <li><a href= "' . $url . 'page=' . ($page - 2) . '">' . ($page - 2) . '</a></li> ';
        }
        if (
$page - 1 > 0) {
            
$page1left = '<li><a href= "' . $url . 'page=' . ($page - 1) . '">' . ($page - 1) . '</a></li> ';
        }
        if (
$page + 2 <= $total) {
            
$page2right = ' <li><a href= "' . $url . 'page=' . ($page + 2) . '">' . ($page + 2) . '</a></li>';
        }
        if (
$page + 1 <= $total) {
            
$page1right = ' <li><a href="' . $url . 'page=' . ($page + 1) . '">' . ($page + 1) . '</a></li>';
        }
        return 
$pervpage . $first . $page2left . $page1left . '<li class="active"><a>' . $page . '</a></li>' . $page1right . $page2right . $last . $nextpage;
    }

}
Онлайн: 2
Реклама