Вход Регистрация
Файл: 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($name060);
    }

    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 10995116277761);
            
$unit 'Тб';
        }
        elseif (
$num >= 1000000000) {
            
$num round($num 10737418241);
            
$unit 'Гб';
        }
        elseif (
$num >= 1000000) {
            
$num round($num 10485761);
            
$unit 'Мб';
        }
        elseif (
$num >= 1000) {
            
$num round($num 10241);
            
$unit 'Кб';
        }
        else {
            
$unit 'б';
            return 
number_format($num).' '.$unit;
        }

        return 
number_format($num1).' '.$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 floor(($width $new_width) / 2);
        
$new_top = ! $use_horizontal floor(($height $new_height) / 2);
        
$pic_to_src $picfunc($path_to_file);
        
// Создание изображения в памяти
        
$pic_to_save imagecreatetruecolor($width$height);
        
// Заполнение цветом
        
$white imagecolorallocate($pic_to_save000);
        
imagefill($pic_to_save00$white);
        
// Нанесение старого изображения на новое
        
imagecopyresampled($pic_to_save$pic_to_src$new_left$new_top00$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_imagetrue);
        
imagesavealpha($source_imagetrue);
        
imagecopy($source_image$watermark_image$source_image_width $watermark_width$source_image_height $watermark_height00$watermark_width$watermark_height);

        
imagejpeg($source_image$result_image_path100);
        
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"$uagentPDO::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"$uagentPDO::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"$uagentPDO::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"$aliasPDO::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;
        }
        
    }

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