<?php
require_once('../classes/body.class.php');
require_once('../classes/db.class.php');
require_once('../classes/system.class.php');
$title= new Body;
$title->SetTitle('Загруз-центр - Добавление файла');

///Подключаем шапку
$title->GetHeader();
$query = DB :: $dbs -> query ("SELECT * FROM `down_pr` WHERE `id` = ?", [(int)$_GET['id']]);
if ($query -> rowCount () == 0) {
header ('location: /');
exit;
}
$pr = $query -> fetch();
$raz = DB :: $dbs -> queryFetch("SELECT * FROM `down_r` WHERE `id` = ?", [$pr['id_r']]);

echo '<div class="container-fluid page_header"><div class="container"><div class="row"><div class="col-xs-12 col-sm-8 col-md-9 col-lg-9"><h1>Загруз-центр - Загрузка файла </h1><ol class="breadcrumb" xmlns:v="http://'.homeurl.'/#"><li typeof="v:Breadcrumb"><a href="/" rel="v:url" property="v:title">'.homeurl.'</a></li><li class="active" typeof="v:Breadcrumb"><span property="v:title">Загрузка файла</span></li></ol></div></div></div></div>';
echo'<div class="container page_body"><div class="row"><div class="col-xs-12 page_content col-lg-9"><div class="navbar page_content_navbar collapse hidden-lg"><div class="container-fluid"><div class="navbar-collapse"></div></div></div><div class="text_box hidden-lg pr_block_small hidden"></div><div class="container-fluid cols_table">';

echo'<div class="catSides"><a href="/downs"><i class="md-format-list-bulleted"></i> Загруз-центр</a> - Добавление файла </div>';
$zip = new ZipArchive;

if (isset($_POST['add'])) {
$err = [];
$upl = intval($_POST['upl']);
$row = abs(intval($_POST['row']));
$name = check($_POST['name']);
$author = check($_POST['author']);
$pass = check($_POST['pass']);
$info = check($_POST['info']);
$thema = abs((int)$_POST['thema']);
if (isset($_POST['url'])) $url = htmlentities($_POST['url']);
if (empty($upl)) {
$FileName = $_FILES['object']['name'];
$FileSize = $_FILES['object']['size'];
$ScreenName = $_FILES['screen']['name'];
$ScreenSize = $_FILES['screen']['size'];
$archive = array('.zip','.rar','.7z','.tar','.gz','.apk','.mp3','.amr','.wav','.txt','.pdf','.doc','.docx','.rtf','.djvu','.xls','.xlsx','.sis','.sisx','.jad','.jar','.nth','.jpg','.jpeg','.gif','.png','.bmp','.sis','.sisx','.3gp','.avi','.flv','.mpeg','.mp4','.exe','.msi','.wmf');
$frm = array('.jpg', '.jpeg', '.gif', '.png');
$ext = strtolower(strrchr($FileName, '.'));
$scr = mb_strtolower(strrchr($ScreenName, '.'), 'UTF8');
if (empty($name)) {
$err[] = 'Введите название.';
}
if (empty($info)) {
$err[] = 'Введите описание.';
}
if ($raz['id'] != 7) {
if (empty($author)) {
$err[] = 'Укажите автора файла!';
}
if ($row < 0) {
$err[] = 'Укажите уровень с которого будет доступен файл.';
}
}
if ($FileSize > (1024 * 30 * 1024)) {
$err[] = 'Размер файла не должен быть более 20 Mb!';
}
if (empty($FileName)) {
$err[] = 'Не выбран файл!';
}
if ($raz['id'] != 7) {
if (empty($ScreenName)) {
$err[] = 'Выберите скриншот.';
}
}
if (preg_match('/(\.php|\.pl|\.htaccess)/i', $FileName) || !in_array($ext, $archive)) {
$err[] = 'Запрещенный формат файла!';
}
if (!empty($ScreenName) && $ScreenSize > (1024 * 1000)) {
$err[] = 'Размер скриншота не должен быть более 1000 Kb!';
}
if (!empty($ScreenName) && preg_match('/(\.php|\.pl|\.htaccess)/i', $ScreenName) || !empty($ScreenName) && !in_array($scr, $frm)) {
$err[] = 'Скриншот не является изображением!';
}
if (empty($err)) {
if ($zip->open($_FILES['object']['tmp_name']) === TRUE) {
$zip->setArchiveComment(homeurl . ' - best collection of scripts.');
$zip->addFromString('ReadMe_PROFMAS.NET'  . '.txt', 'Cкрипт проверен и исправлен на сайте http://' . homeurl . ' заходите еще :)');
$zip->close();
}

$FileName = retrans(check($FileName));
$NameFile = 'files/downs/PROFMAS_NET_' . mt_rand(10000, 99999) . '_' .$FileName;
copy($_FILES['object']['tmp_name'], $_SERVER['DOCUMENT_ROOT'].'/'.$NameFile);

if (!empty($ScreenName)) {
$ScreenFile = 'files/downs/screen/PROFMAS_NET_' . mt_rand(10000, 99999) . '_' . retrans($ScreenName);
$Sc = $_SERVER['DOCUMENT_ROOT'].'/'.$ScreenFile;
copy($_FILES['screen']['tmp_name'], $_SERVER['DOCUMENT_ROOT'].'/'.$ScreenFile);
if ($ext != '.gif') {
$imgc = imagecreatefromstring(file_get_contents($_FILES['screen']['tmp_name']));
$imgc = img_copyright($imgc);
imagejpeg($imgc, $Sc, 90);
}
}
if ($raz['id'] != 7) {
DB::$dbs->query("INSERT INTO `downs` SET `url` = ?,
`time` = ?,
`user_id` = ?,`name` = ?, `info` = ?,
`prid` = ?,
`rid` = ?, `row` = ?, `author` = ?, `size` = ?, `mod` = ?, `thema` = ?", [$NameFile,time(),$b['id'],$name,$info,$pr['id'],$raz['id'],$row,$author,$FileSize,1,$thema]);
} else {
DB::$dbs->query("INSERT INTO `downs` SET `url` = ?,`time` = ?,`user_id` = ?,`name` = ?, `info` = ?,`prid` = ?,`rid` = ?, `size` = ?, `mod` = ?", [$NameFile,time(),$b['id'],$name,$info,$pr['id'],$raz['id'],$FileSize,0]);
}
$last = DB::$dbs->lastInsertId();
if (!empty($ScreenFile)) {
DB::$dbs->query("INSERT INTO `down_screen` SET `fid` = ?, `file` = ?", array($last,$ScreenFile));
}
$f = DB :: $dbs -> queryFetch("SELECT * FROM `downs` WHERE `id` = ?", [$last]);
if (!empty($pass)) {
DB::$dbs->query("UPDATE downs SET pass = ? WHERE id = ?", [$pass,$last]);
}
if ($raz['id'] == 7) {
header('location: file.html?id='.$last);
} else {
echo '<div class="row text_box">Файл добавлен и отправлен на модерацию!</div>';
///Подключаем меню
$title->GetMenu();


///Подключаем футер
$title->GetFooter();
die();
}
} else {
foreach($err AS $error) {
echo $error.'<br/>';
}
}
} elseif ($upl == 1) {
$ScreenName = $_FILES['screen']['name'];
$ScreenSize = $_FILES['screen']['size'];
$file = getWithOutPath($url);
$format = mb_strtolower(strrchr($file, '.'), 'UTF8');
$scr = mb_strtolower(strrchr($ScreenName, '.'), 'UTF8');
$ext = ['.zip','.rar','.7z','.tar','.gz','.apk','.mp3','.amr','.wav','.txt','.pdf','.doc','.docx','.rtf','.djvu','.xls','.xlsx','.sis','.sisx','.jad','.jar','.nth','.jpg','.jpeg','.gif','.png','.bmp','.sis','.sisx','.3gp','.avi','.flv','.mpeg','.mp4','.exe','.msi','.wmf'];
$frm = ['.jpg', '.jpeg', '.gif', '.png'];
$f = @fopen($url, 'r');
while($c = @fread($f, 1024)) $filedata .= $c;
if (empty($name)) {
$err[] = 'Введите название.';
}
if (empty($info)) {
$err[] = 'Введите описание.';
}
if ($raz['id'] != 7) {
if (empty($author)) {
$err[] = 'Укажите автора файла!';
}
if ($row < 0) {
$err[] = 'Укажите уровень с которого будет доступен файл.';
}
}
if ($raz['id'] != 7) {
if (empty($ScreenName)) {
$err[] = 'Выберите скриншот.';
}
}
if (!$f) {
$err[] = 'Ошибка импортирования файла!';
}
if (preg_match('/(\.php|\.pl|\.htaccess)/i', $file) || !in_array($format, $ext)) {
$err[] = 'Файл не является архивом!';
}
if (!empty($ScreenName) && $ScreenSize > (1024 * 1000)) {
$err[] = 'Размер скриншота не должен быть более 1000 Kb!';
}
if (!empty($ScreenName) && preg_match('/(\.php|\.pl|\.htaccess)/i', $ScreenName) || !empty($ScreenName) && !in_array($scr, $frm)){
$err[] = 'Скриншот не является изображением!';
}
if (strlen($filedata) > (1024 * 30 * 1024)) {
$err[] = 'Слишком большой размер файла!';
}
if (empty($err)) {
$file = retrans($file);
if (!empty($ScreenName)) {
$ScreenFile = 'files/downs/screen/PROFMAS_NET_' . mt_rand(10000, 99999) . '_' . retrans($ScreenName);
$Sc = $_SERVER['DOCUMENT_ROOT'].'/'.$ScreenFile;
copy($_FILES['screen']['tmp_name'], $_SERVER['DOCUMENT_ROOT'].'/'.$ScreenFile);
if ($ext != '.gif') {
$imgc = imagecreatefromstring(file_get_contents($_FILES['screen']['tmp_name']));
$imgc = img_copyright($imgc);
imagejpeg($imgc, $Sc, 90);
}
}
$NameFile = 'files/downs/GEARNET_RU_' . mt_rand(10000, 99999) . '_' . $file;
$NameF = $_SERVER['DOCUMENT_ROOT'].'/'.$NameFile;
file_put_contents($NameF, $filedata);
$sizes = filesize($NameF);
if ($raz['id'] != 7) {
DB::$dbs->query("INSERT INTO `downs` SET `url` = ?,
`time` = ?,
`user_id` = ?,`name` = ?, `info` = ?,
`prid` = ?,
`rid` = ?, `row` = ?, `author` = ?, `size` = ?, `mod` = ?, `thema` = ?", [$NameFile,time(),$b['id'],$name,$info,$pr['id'],$raz['id'],$row,$author,$sizes,1,$thema]);
} else {
DB::$dbs->query("INSERT INTO `downs` SET `url` = ?,`time` = ?,`user_id` = ?,`name` = ?, `info` = ?,`prid` = ?,`rid` = ?, `size` = ?, `mod` = ?", [$NameFile,time(),$b['id'],$name,$info,$pr['id'],$raz['id'],$sizes,0]);
}
$last = DB::$dbs->lastInsertId();
if (!empty($ScreenFile)) {
DB::$dbs->query("INSERT INTO `down_screen` SET `fid` = ?, `file` = ?", array($last,$ScreenFile));
}
$f = DB :: $dbs -> queryFetch("SELECT * FROM `downs` WHERE `id` = ?", [$last]);
if (!empty($pass)) {
DB::$dbs->query("UPDATE downs SET pass = ? WHERE id = ?", [$pass,$last]);
}
if ($raz['id'] == 7) {
header('location: file.html?id='.$last);
} else {
echo '<div class="row text_box">Файл добавлен и отправлен на модерацию!</div>';
///Подключаем меню
$title->GetMenu();


///Подключаем футер
$title->GetFooter();
die();
}
} else {
foreach($err AS $error) {
echo $error.'<br/>';
}
}
}
}
echo '<div class="row text_box"><form action="?id='.$pr['id'].'" method="POST" enctype="multipart/form-data"> 
* Название:<br/><input type="text" class="form-control" name="name"/> <br/>
* Описание:<br/><textarea class="form-control" rows="3" name="info"></textarea><br/>
'.($raz['id'] != 7 ? '* С какого статуса доступно к скачиванию:<br/><select class="form-control" name="row"><option value="0">Доступно всем</option><option value="0">Новичок</option><option value="1">Постоялец</option><option value="2">Старожил</option><option value="3">PRO</option><option value="4">MASTER</option><option value="5">Знаток</option></select><br/>':NULL).'
* Файл:<br/><input type="file" name="object"/><br/>
'.($raz['id'] != 7 ? '*':NULL).' Скрин к файлу:<br/><input type="file" name="screen"/><br/>
* Пароль к файлу: (можете оставить поле пустым, чтобы все скачали)<br/><input type="text" class="form-control" name="pass"/> </textarea><br/>
'.($raz['id'] != 7 ? '* Автор файла:<br/><input type="text" class="form-control"name="author"/> <br/>':NULL).'
<input type="radio" name="upl" value="1"> Импорт<br/>Ссылка для импорта:<br/>
<input type="text" class="form-control"value="http://" name="url"/><br/>'.($raz['id'] != 7 ? '<input type="checkbox" name="thema" value="1"/> Создать тему на форуме<br/>':NULL).'</br><input type="submit" class="btn btn-primary btn-lg btn-block" name="add" value="Загрузить"/></form></div>';

///Подключаем меню
$title->GetMenu();


///Подключаем футер
$title->GetFooter();
?>
