Файл: 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);
?>