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

class Base {

    public static function 
view($view, array $data = array()) {
        
Flight::view()->display($view.'.phtml', $data);
    }

    public static function 
admin() {

        
$cookie = Flight::request()->cookies->admin_verify;

        if (
$cookie) {
            if (
md5(PASSWORD) === $cookie) return true;
            else return 
false;
        } else return 
false;

    }

    public static function 
named($name) {
        return 
mb_substr($name, 0, 60);
    }

    public static function 
data($obj) {
        return 
Flight::request()->data->$obj;
    }

    public static function 
files($obj) {
        return 
Flight::request()->files->$obj;
    }

    public static function 
isMethod($method) {
        if (
Flight::request()->method == $method)
            return 
true;
        else
            return 
false;
    }

    public static function 
times($time = NULL) {
        if (
$time) {
            
$data = date('d.m.Y', $time);
            
$time = date('H:i', $time);
            if (
$data == date('d.m.Y')) return 'Сегодня в ' . $time;
            if (
$data == date('d.m.Y', time() - 3600 * 24)) return 'Вчера в ' . $time;
            return 
$data . ' в ' . $time;
        }
    }

    public static function 
sec($sec) {
        
$sec = abs(intval($sec));
        
$time = new DateTime('@'.$sec);

        if (
$time->format('H') != '00') {
            return 
$time->format('H:i:s');
        } else return 
$time->format('i:s');
    }

    public static function 
videoRand() {

        
/*return Flight::db()
            ->query("SELECT * FROM `video` ORDER BY RAND() LIMIT ".RANDLIST)
            ->fetchAll();*/
            
        
return Flight::db()
            ->
query("
                    SELECT video.*, category.*, video.name AS vName, category.name AS cName, video.url AS vURL, category.url AS cURL
                    FROM video LEFT JOIN category ON category.id = video.catid ORDER BY RAND() LIMIT " 
. RANDLIST)
            ->
fetchAll();

    }

    public static function 
videoRate() {

        
/*return Flight::db()
            ->query("SELECT * FROM `video` WHERE `last_load` > 0 ORDER BY `last_load` DESC LIMIT ".RATEVIDEO)
            ->fetchAll();*/
            
        
return Flight::db()
            ->
query("
                    SELECT video.*, category.*, video.name AS vName, category.name AS cName, video.url AS vURL, category.url AS cURL
                    FROM video LEFT JOIN category ON category.id = video.catid WHERE video.last_load > 0 ORDER BY video.last_load DESC LIMIT " 
. RATEVIDEO)
            ->
fetchAll();

    }

    public static function 
category($id, $url = false) {

        
$q = Flight::db()
            ->
query("SELECT `name`, `url` FROM `category` WHERE `id` = {$id}")
            ->
fetch();

        if ( ! 
$url)
            return 
$q['name'];
        else
            return 
$q['url'];

    }

    public static function 
catcount($id, $url = false) {

        
$q = Flight::db()
            ->
query("SELECT COUNT(*) FROM `video` WHERE `catid` = {$id}")
            ->
fetchColumn();

        return 
$q;

    }

    public static function 
size($num) {
        if ( ! 
$num) $num = 0;

        if (
$num >= 1000000000000) {
            
$num = round($num / 1099511627776, 1);
            
$unit = 'Тб';
        }
        elseif (
$num >= 1000000000) {
            
$num = round($num / 1073741824, 1);
            
$unit = 'Гб';
        }
        elseif (
$num >= 1000000) {
            
$num = round($num / 1048576, 1);
            
$unit = 'Мб';
        }
        elseif (
$num >= 1000) {
            
$num = round($num / 1024, 1);
            
$unit = 'Кб';
        }
        else {
            
$unit = 'б';
            return 
number_format($num).' '.$unit;
        }

        return 
number_format($num, 1).' '.$unit;
    }

    public static function 
resize($path_to_file, $path_to_save, $width, $height = 0, $quality = 100) {
        
// Проверка наличия изображения на сервере
        
if ( ! file_exists($path_to_file)) return FALSE;
        
// Получение информации о изображении
        
$info = getimagesize($path_to_file);
        
// Формат изображения
        
$format = strtolower(substr($info['mime'], strpos($info['mime'], '/') + 1));
        
// Выбор функции для изображения
        
$picfunc = 'imagecreatefrom'. $format;
        
// Старая ширина изображения
        
$old_width = $info[0];
        
// Старая высота изображения
        
$old_height = $info[1];
        
// Вычисление горизонтального соотношения
        
$horizontal = $width / $old_width;
        
// Вычисление вертикального соотношения
        
$vertical = $height / $old_height;
        
// Пропорциональное вычисление параметров
        
if ($height == 0) {
            
$vertical = $horizontal;
            
$height = $vertical * $old_height;
        }
        elseif (
$width == 0) {
            
$horizontal = $vertical;
            
$width = $horizontal * $old_width;
        }
        
// Формирование размера изображения
        
$ratio = min($horizontal, $vertical);
        
// Необходимость пропорционального изменения
        
if ($horizontal == $ratio) $use_horizontal = TRUE;
        else 
$use_horizontal = FALSE;

        
$new_width = $use_horizontal ? $width : floor($old_width * $ratio);
        
$new_height = ! $use_horizontal ? $height : floor($old_height * $ratio);
        
$new_left = $use_horizontal ? 0 : floor(($width - $new_width) / 2);
        
$new_top = ! $use_horizontal ? 0 : floor(($height - $new_height) / 2);
        
$pic_to_src = $picfunc($path_to_file);
        
// Создание изображения в памяти
        
$pic_to_save = imagecreatetruecolor($width, $height);
        
// Заполнение цветом
        
$white = imagecolorallocate($pic_to_save, 0, 0, 0);
        
imagefill($pic_to_save, 0, 0, $white);
        
// Нанесение старого изображения на новое
        
imagecopyresampled($pic_to_save, $pic_to_src, $new_left, $new_top, 0, 0, $new_width, $new_height, $old_width, $old_height);
        
// Определение формата изображения на выходе
        
$ext = @array_pop(explode('.', $path_to_save));

        switch(
$ext) {
            case 
'jpg':
            case 
'jpeg':
                
imagejpeg($pic_to_save, $path_to_save, $quality);
                break;

            case 
'gif':
                
imagegif($pic_to_save, $path_to_save);
                break;

            case 
'png':
                
imagepng($pic_to_save, $path_to_save);
                break;

            default:
                
imagepng($pic_to_save, $path_to_save);
                break;
        }

        
// Очистка памяти
        
imagedestroy($pic_to_src);
        
imagedestroy($pic_to_save);

        return 
TRUE;
    }

    public static function 
watermark($source_image_path, $result_image_path){

        list(
$source_image_width, $source_image_height, $source_image_type) = getimagesize($source_image_path);
        if (
$source_image_type === NULL) {
            return 
false;
        }
        switch (
$source_image_type) {
            case 
1: // картинка *.gif
                
$source_image = imagecreatefromgif($source_image_path);
                break;
            case 
2: // картинка *.jpeg, *.jpg
                
$source_image = imagecreatefromjpeg($source_image_path);
                break;
            case 
3: // картинка *.png
                
$source_image = imagecreatefrompng($source_image_path);
                break;
            default:
                return 
false;
        }
        
$watermark_image = imagecreatefrompng($_SERVER['DOCUMENT_ROOT'].'/public/watermark.png');
        
$watermark_width = imagesx($watermark_image);
        
$watermark_height = imagesy($watermark_image);
        
imagealphablending($source_image, true);
        
imagesavealpha($source_image, true);
        
imagecopy($source_image, $watermark_image, $source_image_width - $watermark_width, $source_image_height - $watermark_height, 0, 0, $watermark_width, $watermark_height);

        
imagejpeg($source_image, $result_image_path, 100);
        
imagedestroy($source_image);
        
imagedestroy($watermark_image);
    }
    
    public static function 
gen_timer_start() {
        global 
$timer_start_time;
        
$start_time = microtime();
        
$start_array = explode(" ",$start_time);
        
$timer_start_time = $start_array[1] + $start_array[0];
        return 
$timer_start_time;        
    }
    
    public static function 
gen_timer_stop() {
        global 
$timer_start_time;
        
$end_time = microtime();
        
$end_array = explode(" ",$end_time);
        
$timer_stop_time = $end_array[1] + $end_array[0];
        
$time = $timer_stop_time - $timer_start_time;
        
$time = substr($time,0,5);
        return 
"[$time сек.]";     
    }

    
/* (OLD) public static function online() {

        $ip = $_SERVER['REMOTE_ADDR'];
        $time = time();

        Flight::db()
            ->query("DELETE FROM `online` WHERE `time` > {$time} - 15");

        $q = Flight::db()
            ->query("SELECT * FROM `online` WHERE `ip` = '{$ip}'")
            ->fetch();

        if ($q) {
            Flight::db()
                ->query("UPDATE `online` SET `time` = '{$time}'");
        } else {
            Flight::db()
                ->query("INSERT INTO `online` SET `time` = '{$time}', `ip` = '{$ip}'");
        }

        $online = Flight::db()
            ->query("SELECT COUNT(*) FROM `online`")
            ->fetchColumn();

        return 'Онлайн: '.$online;
        
    }*/
    
    
public static function online() {

        
$ip = $_SERVER['REMOTE_ADDR'];
        
$uagent = trim(htmlspecialchars($_SERVER['HTTP_USER_AGENT']));
        
$session_id = session_id();
        
$time = time();
        
$ontime = 300;
        
        
Flight::db()
            ->
query("DELETE FROM online 
            WHERE time < NOW() -  INTERVAL '5' MINUTE"
);

        
$result = Flight::db()->prepare("SELECT * FROM `online` WHERE session_id = '{$session_id}' OR (ip = '{$ip}' && uagent = :uagent)");
        
$result->bindValue(":uagent", $uagent, PDO::PARAM_STR);
        
$result->execute(); 
        
$q = $result->fetch(PDO::FETCH_ASSOC);  
            
        if (
$q) {
            
$result = Flight::db()->prepare("UPDATE `online` SET `time` = NOW() WHERE session_id = '{$session_id}' OR (ip = '{$ip}' && uagent = :uagent)");
            
$result->bindValue(":uagent", $uagent, PDO::PARAM_STR);
            
$result->execute(); 
        } else {
                
            
$result = Flight::db()->prepare("INSERT INTO `online` SET `time` = NOW(), `ip` = '{$ip}', session_id = '{$session_id}', uagent = :uagent");
            
$result->bindValue(":uagent", $uagent, PDO::PARAM_STR);
            
$result->execute();
        }

        
$online = Flight::db()
            ->
query("SELECT COUNT(*) FROM `online`")
            ->
fetchColumn();
            
        
/* Статистика онлайна */
        
$stat = Flight::db()
                ->
query("SELECT * FROM `statistics`")
                ->
fetch();
                
        
$todate = date("Y-m-d"); // Текущая дата
        
        
if ($stat['date'] != $todate) {
            
// Записываем на ВЧЕРА
            
Flight::db()
                ->
query("UPDATE `statistics` SET 
                
                `views_yesterday` = '
{$stat['views_today']}', 
                `views_today` = 0, 
                
                `loads_yesterday` = '
{$stat['loads_today']}', 
                `loads_today` = 0, 
                
                `online_yesterday` = '
{$stat['online_today']}', 
                `online_today` = 0, 
                
                 date = NOW()
                
                "
);
        }
        
        
//Максимальный онлайн за все время
        
if ($online > $stat['online_max']) {
            
Flight::db()
                ->
query("UPDATE `statistics` SET `online_max` = '{$online}'");            
        }
        
        
//Максимальный онлайн за сегодня
        
if ($online > $stat['online_today']) {
            
Flight::db()
                ->
query("UPDATE `statistics` SET `online_today` = '{$online}'");            
        }
        
        
$pagesize = round((ob_get_length()+200)/1024 ,1);
        return 
'Online: '.$online . ' | ' . $pagesize . 'kb | ' . Base::gen_timer_stop();
    }
    
    public static function 
rus2translit($string) {
        
$converter = array(
            
'а' => 'a',   'б' => 'b',   'в' => 'v',
            
'г' => 'g',   'д' => 'd',   'е' => 'e',
            
'ё' => 'e',   'ж' => 'zh',  'з' => 'z',
            
'и' => 'i',   'й' => 'y',   'к' => 'k',
            
'л' => 'l',   'м' => 'm',   'н' => 'n',
            
'о' => 'o',   'п' => 'p',   'р' => 'r',
            
'с' => 's',   'т' => 't',   'у' => 'u',
            
'ф' => 'f',   'х' => 'h',   'ц' => 'c',
            
'ч' => 'ch',  'ш' => 'sh',  'щ' => 'sch',
            
'ь' => ''',  'ы' => 'y',   'ъ' => ''',
            
'э' => 'e',   'ю' => 'yu',  'я' => 'ya',
            
            
'А' => 'A',   'Б' => 'B',   'В' => 'V',
            
'Г' => 'G',   'Д' => 'D',   'Е' => 'E',
            
'Ё' => 'E',   'Ж' => 'Zh',  'З' => 'Z',
            
'И' => 'I',   'Й' => 'Y',   'К' => 'K',
            
'Л' => 'L',   'М' => 'M',   'Н' => 'N',
            
'О' => 'O',   'П' => 'P',   'Р' => 'R',
            
'С' => 'S',   'Т' => 'T',   'У' => 'U',
            
'Ф' => 'F',   'Х' => 'H',   'Ц' => 'C',
            
'Ч' => 'Ch',  'Ш' => 'Sh',  'Щ' => 'Sch',
            
'Ь' => ''',  'Ы' => 'Y',   'Ъ' => ''',
            
'Э' => 'E',   'Ю' => 'Yu',  'Я' => 'Ya',
        );
        return 
strtr($string, $converter);
    }

    public static function 
str2url($str) {
        
// переводим в транслит
        
$str = Base::rus2translit($str);
        
// в нижний регистр
        
$str = strtolower($str);
        
// заменям все ненужное нам на "-"
        
$str = preg_replace('~[^-a-z0-9_]+~u', '-', $str);
        
// удаляем начальные и конечные '-'
        
$str = trim($str, "-");
        return 
$str;
    }
    
    public static function 
get_uniqu_alias($alias) {

        
$result = Flight::db()->prepare("SELECT * FROM `fo_video` WHERE alias = :alias");
        
$result->bindValue(":alias", $alias, PDO::PARAM_STR);
        
$result->execute(); 
        
$q = $result->fetch(PDO::FETCH_ASSOC);  
                    
        if (!empty(
$q)) {
            return 
true;
        } else {
            return 
false;
        }
    }
    
    
/* Создаем уникальный алиас */
    
public static function uniqu_alias($alias) {
        
        if (
Base::get_uniqu_alias($alias)) {
            
$alias = $alias .'_' . rand(1,20);
            return 
Base::uniqu_alias($alias);
            
//return $alias;
        
} else {
            return 
$alias;
        }
        
    }

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