Файл: panel/import.php
Строк: 110
<?php
/**
*    Author: Elime;
*    ICQ: 618878;
*    E-mail: elime4@gmail.com;
*/
require '../system/core.php';
/* Проверка прав доступа */
if(!$login) message('Ошибка авторизации!', '/panel/login.php');
if(!check_right($user['id'], 1, $db)) message('Недостаточно прав!', '/panel/index.php');
/* Если выбран файл и заполены поля */
if(isset($_POST['name']) and isset($_POST['link']) and isset($_POST['cat']))
{
    
    /* Переменные по-умолчанию */
    $name = in($_POST['name']);
    $tag = in($_POST['tag']);
    $description = '';
    $keywords = '';
    $about = '';
    $cat = num($_POST['cat']);
    
        $link=$_POST['link'];
        $type_file=strrpos($link, ".");
        $type_file=substr($link, $type_file + 1, 999);
        $type_file = strtolower($type_file);
        
        if($type_file=='mp4' || $type_file=='3gp' || $type_file=='avi' || $type_file=='flv')
                    {
                    $link=$_POST['link'];    
                    }
                        else{
                        $ch = curl_init($link);
                            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                            curl_setopt($ch, CURLOPT_HEADER, 1);
                            curl_exec($ch);
                        $header = curl_getinfo( $ch );
                        curl_close( $ch );
                        $link=$header["redirect_url"];
                        
                        $type_file=strrpos($link, ".");
                        $type_file=substr($link, $type_file + 1, 999);
                        $type_file = strtolower($type_file);
                        }
    
    /* Ищем указанную категорию */
    $query = $db->query("SELECT * FROM `categories` WHERE `id`='".$cat."'");
    if($db->num($query) != 1)
    {
        message('Указанная категория не найдена!');
    }
    $category = $db->fetch($query);
    
    
    /* Проверяем пустоту полей */
    if(empty($name))
    {
        message('Название видеофайла должно быть заполнено!');
    }
    if(empty($link))
    {
        message('Вы не ввели ссылку!');
    }
    
    
    
    
    /* Проверяем пустоту необязательных полей */
    if(!empty($_POST['description']))
    {
        $description = in($_POST['description']);
    }
    if(!empty($_POST['keywords']))
    {
        $keywords = in($_POST['keywords']);
    }
    if(!empty($_POST['about']))
    {
        $about = in($_POST['about']);
    }
    
    
    /* Проверка длины строк */
    if(mb_strlen($name, 'utf-8') > 100)
    {
        message('Название видеофайла не может быть больше 100 символов!');
    }
    if(mb_strlen($description, 'utf-8') > 255)
    {
        message('Описание (meta) должно быть не больше 255 символов!');
    }
    if(mb_strlen($keywords, 'utf-8') > 255)
    {
        message('Ключевые слова (meta) должны быть не больше 255 символов!');
    }
    if(mb_strlen($about, 'utf-8') > 500)
    {
        message('Описание видеозаписи должно быть не больше 500 символов!');
    }
    
    
    /* Пути */
    $translit_name = translit($name);
    $dir = 'files/'.$category['translit'].'/'.$translit_name;
    $translit = $category['translit'].'/'.$translit_name;
    $url_file = $dir.'/'.$config['prefix'].$translit_name.'.'.$type_file;
    
    
    
    /* Если такая папка уже существует */
    if(file_exists(ROOT.'/'.$dir))
    {
        message('Папка с именем <b>'.$dir.'</b> уже существует!');
    }
    
    
    /* Создаем папку */
    if(!mkdir(ROOT.'/'.$dir, 0777))
    {
        message('Произошла ошибка при создании папки '.$dir.' !');
    }
    chmod(ROOT.'/'.$dir, 0777);
    
    
    /* Копируем файл */
    if(!copy($link, ROOT.'/'.$url_file))
    {
        unlink(ROOT.'/'.$dir);
        message('Ошибка при копировании файла!');
    }    
    
    
    /* Создаем объект ffmpeg */
    $video = new ffmpeg_movie(ROOT.'/'.$url_file);
    
    
    /* Длительность видео в секундах */
    $duration = round($video->getDuration());
    
    
    /* Размер файла в байтах */
    $size = filesize(ROOT.'/'.$url_file);
    
    
    /* Размеры */
    $width = $video->getFrameWidth();
    $height = $video->getFrameHeight();
    $screen_size = $width.'x'.$height;
    
    /* Пути к скриншотам */
    $scr_mini = $dir.'/screen_mini.jpg';
    $scr = $dir.'/screen.jpg';
    
    /* Создаем скриншот */
    $frame_count = $video->getFrameCount();
    $frame = intval($frame_count / 2);
    $select = $video->getFrame($frame);
    if($select)
    {
        $screen = $select->toGDImage();
        imagejpeg($screen, ROOT.'/'.$scr, 100);
        imagedestroy($screen);
        imageresize(ROOT.'/'.$scr, ROOT.'/'.$scr, 480, 480, 100);
    }
    else
    {
        $frame = intval($frame_count / 3);
        $select = $video->getFrame($frame);
        if(!$select)
        {
            unset($video);
            remove_dir(ROOT.'/'.$dir);
            message('Невозможно создать скриншот для этого видео! Загрузите другое видео!');
        }
        
        $screen = $select->toGDImage();
        imagejpeg($screen, ROOT.'/'.$scr, 85);
        imagedestroy($screen);
        imageresize(ROOT.'/'.$scr, ROOT.'/'.$scr, 480, 480, 100);
    }
    
    /* Создаем уменьшенную копию скриншота */
    imageresize(ROOT.'/'.$scr, ROOT.'/'.$scr_mini, 200, 200, 100);
    
    
    /* Записываем информацию о файле в БД */
    $db->query("INSERT INTO `data` SET `cat_id`='".$cat."', `name`='".$name."', `translit`='".$translit."', `about`='".$about."', `description`='".$description."', `keywords`='".$keywords."', `duration`='".$duration."', `size`='".$size."', `format`='".$extension."', `screen_size`='".$screen_size."', `like`='0', `download`='0', `file`='".in($url_file)."', `mini_scr`='".$scr_mini."', `scr`='".$scr."', `add_time`='".time()."', `tag`='".$tag."'");
    
    /* Записываем в логи кто загрузил новый видеофайл */
    $action = $user['login'].' загрузил новый видеофайл: "'.$name.'".';
    $db->query("INSERT INTO `users_log` SET `user_id`='".$user['id']."', `action`='".in($action)."', `time`='".time()."'");
    
    
    /* Выводим сообщение */
    message('Файл успешно загружен!', '/panel/index.php');
}
/* Получаем список категорий */
$select_cat = $db->query("SELECT * FROM `categories`");
$cat_array = array();
while($result = $db->fetch($select_cat))
{
    $result['name'] = out($result['name']);
    $cat_array[] = $result;
}
/* Выводим страницу */
$data['title'] = 'Загрузить файл';
$data['cat_result'] = $cat_array;
$tpl->display('panel/import', $data);
?>