<?
include('../include/path.php');
if($config["accload"]==1 || ($rank&255)==255){
if($config["accloadreg"]!=1 || isset($user)){
if(isset($_GET['c']) && !preg_match('/[^0-9]/',$_GET['c'])){
if($result=sql_query('SELECT cat_parent_id,cat_name,file_max_size,auth_upload,files_exp FROM `'.PRE.'dc_categories` WHERE cat_id='.$_GET['c'])){
if($row=mysql_fetch_assoc($result)){
$cat=$row;
$cat['id']=$_GET['c'];
}
}
}
if(isset($cat)){
if(($rank&$cat['auth_upload'])==$cat['auth_upload']){
$demo_max_size=100; // максимальный вес демо-картинки в КБ
// Получить типы, допущенные к загрузке
function get_types($ctype,$selected){
$i=0;
foreach($ctype as $key=>$value){
if(($selected&pow(2,$i))==pow(2,$i)){ $tmp1[]=$key;}
$tmp2[]=$key;
$i++;
}
if(isset($tmp1)){ return $tmp1; }
return $tmp2;
}
//получить имя по дефолту
function get_name($exp){
global $path;
if($handle=opendir($path.'/files/'.$exp.'/')) {
$id=0;
while(false!==($file=readdir($handle))) {
if($file!='.' && $file!='..') {
if(preg_match('/file[0-9]+\.'.$exp.'/',$file)){
preg_match('/[0-9]+/',$file,$number);
if($number[0]>$id){ $id=$number[0]; }
}
}
}
closedir($handle);
}
return 'file'.++$id;
}
//-----------Загрузка Java--------------------------------------------------------------------------------------
function UploadFiles($files){
global $path,$user,$cat,$demo_max_size;
require($path.'/manage/ctype.php');
if(is_uploaded_file($files['tmp_name'][0])) {
$part=explode('.',StrToLow($files['name'][0]));
if(sizeof($part)>1){
$exp[0]=array_pop($part);
$exp[0]=($exp[0]=='jpeg')?'jpg':$exp[0];
$name[0]=implode($part);
//if(count($part)==2) {
// $name[0]=$part[0];
// $exp[0]=($part[1]=='jpeg')?'jpg':$part[1];
$tmp_type=get_types($ctype,$cat['files_exp']);
if(isset($ctype) && in_array($exp[0],$tmp_type)) {
if(!is_dir($path.'/files/'.$exp[0])){ mkdir($path.'/files/'.$exp[0],0770); }
if(preg_match('/[^a-z0-9\._-]/',$name[0]) || file_exists($path.'/files/'.$exp[0].'/'.$name[0].'.'.$exp[0])) {
$name[0]=get_name($exp[0]);
}
$fsize=filesize($files['tmp_name'][0]);
if($fsize<=$cat['file_max_size']) {
if(move_uploaded_file($files['tmp_name'][0],$path.'/files/'.$exp[0].'/'.$name[0].'.'.$exp[0])) {
if(isset($_POST['title']) && $_POST['title']!='') {
$title=filtr($_POST['title']);
} else { $title=$name[0]; $error[]='- Название отсутствует или содержит недопустимые символы. Присвоено название по умолчанию<br>'; }
$desc=(isset($_POST['desc']))?filtr($_POST['desc']):'';
if(!sql_query("INSERT INTO `".PRE."dc_files` (cat_id,user,file_name,file_exp,file_title,file_description,file_size,file_date,com_perpage) VALUES (".$cat['id'].",'".((isset($user))?$user['login']:'Гость')."','".$name[0]."','".$exp[0]."','".$title."','".$desc."',".filesize($path.'/files/'.$exp[0].'/'.$name[0].'.'.$exp[0]).",NOW(),10)")){ $error[]='- Файл не добавлен в БД<br>'.mysql_error().'<br><br>'; }
if($exp[0]=='jar'){ getJAD($path.'/files/jar/',$name[0]); }
$error[]='- Файл '.$name[0].'.'.$exp[0].' успешно загружен<br>';
if(is_uploaded_file($files['tmp_name'][1])) {
if(!preview($exp[0])){
$part=explode('.',StrToLow($files['name'][1]));
if(count($part)==2) {
$part[1]=($part[1]=='jpeg')?'jpg':$part[1];
if($part[1]=='gif' || $part[1]=='jpg' || $part[1]=='png'){
$exp[1]=$part[1];
$fsize=round(filesize($files['tmp_name'][1])/1024);
if($fsize<=$demo_max_size){
if(!is_dir($path.'/files/thumbnails/'.$exp[0])){ mkdir($path.'/files/thumbnails/'.$exp[0],0770); }
if(move_uploaded_file($files['tmp_name'][1],$path.'/files/thumbnails/'.$exp[0].'/'.$name[0].'.'.$exp[1])) {
$error[]='- Файл '.$name[0].'.'.$exp[1].' успешно загружен<br>';
} else { $error[]='- Ошибка при перемещении файла Demo-картинки<br>'; }
} else { $error[]='- Demo-картинка должна быть не более '.$demo_max_size.' KB<br>'; }
} else { $error[]='- Недопустимый тип Demo-картинки<br>'; }
} else { $error[]='- Имя файла Demo-картинки должно содержать только одну точку перед расширением<br>'; }
} else { $error[]='- Невозможно добавить Demo для картинки<br>'; }
}
} else { $error[]='- Ошибка при перемещении файла '.$name[0].'.'.$exp[0].'<br>'; }
} else { $error[]='- Файл не должен быть не более '.round($cat['file_max_size']/1024).' KB<br>'; }
}else{ $error[]='- Такой формат файлов запрещен к загрузке<br>'; }
}else{ $error[]='- Неизвестный формат файла<br>'; }
}else{ $error[]='- Ошибка при загрузке файла<br>'; }
return array_unique($error);
}
//-----------------------------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------------------
function mOperaUploadFiles($files){
global $path,$user,$cat,$demo_max_size;
require($path.'/manage/ctype.php');
$array[0]=explode('file=',$files[0]);
$part[0]=explode('.',StrToLow($array[0][0]));
if(sizeof($part)>1){
$exp[0]=array_pop($part);
$exp[0]=($exp[0]=='jpeg')?'jpg':$exp[0];
$name[0]=implode($part);
//if(count($part[0])==2) {
//$name[0]=$part[0][0];
//$exp[0]=($part[0][1]=='jpeg')?'jpg':$part[0][1];
$tmp_type=get_types($ctype,$cat['files_exp']);
if(isset($ctype) && in_array($exp[0],$tmp_type)) {
if(!is_dir($path.'/files/'.$exp[0])){ mkdir($path.'/files/'.$exp[0],0770); }
if(preg_match('/[^a-z0-9_-]/',$name[0]) || file_exists($path.'/files/'.$exp[0].'/'.$name[0].'.'.$exp[0])) { $name[0]=get_name($exp[0]); }
if(strlen($array[0][1])<=$cat['file_max_size']){
$fdata=base64_decode($array[0][1]);
$fp=fopen($path.'/files/'.$exp[0].'/'.$name[0].'.'.$exp[0],"w");
fwrite($fp,$fdata);
fclose($fp);
if(isset($_POST['title']) && $_POST['title']!='') {
$title=filtr($_POST['title']);
} else { $title=$name[0]; $error[]='- Название отсутствует или содержит недопустимые символы. Присвоено название по умолчанию<br>'; }
$desc=(isset($_POST['desc']) && preg_match('/^.{1,1024}$/iuD',$_POST['desc']))?filtr($_POST['desc']):'';
if(!sql_query("INSERT INTO `".PRE."dc_files` (cat_id,user,file_name,file_exp,file_title,file_description,file_size,file_date) VALUES (".$cat['id'].",".((isset($user))?$user['login']:'Гость').",'".$name[0]."','".$exp[0]."','".addslashes($title)."','".addslashes($desc)."',".filesize($path.'/files/'.$exp[0].'/'.$name[0].'.'.$exp[0]).",NOW())")){ $error[]='- Файл не добавлен в БД<br>'.mysql_error().'<br><br>'; }
if($exp[0]=='jar'){ getJAD($path.'/files/jar/',$name[0]); }
$error[]='- Файл '.$name[0].'.'.$exp[0].' загружен<br><br>';
// Обработка загрузки DEMO-картинки
$array[1]=explode('file=',$files[1]);
$part[1]=explode('.',StrToLow($array[1][0]));
if(count($part[1])==2) {
$part[1][1]=($part[1][1]=='jpeg')?'jpg':$part[1][1];
if($part[1][1]=='gif' || $part[1][1]=='jpg'){
$exp[1]=$part[1][1];
if(round(strlen($array[1][1])/1024)<=$demo_max_size){
$fdata=base64_decode($array[1][1]);
if(!is_dir($path.'/files/thumbnails/'.$exp[0])){ mkdir($path.'/files/thumbnails/'.$exp[0],0770); }
$fp=fopen($path.'/files/'.$exp[0].'/'.$name[0].'.'.$exp[1],'w');
fwrite($fp,$fdata);
fclose($fp);
$error[]='- Demo-картинка загружена<br>';
} else { $error[]='- Demo-картинка должна быть не более '.$demo_max_size.' KB<br>'; }
} else { $error[]='- Недопустимый тип Demo-картинки<br>'; }
} else { $error[]='- Имя файла Demo-картинки содержит более одной точки перед расширением<br>'; }
}else{ $error[]='- Файл должнен быть не более '.round($cat['file_max_size']/1024).' KB<br>'; }
} else { $error[]='- Недопустимое расширение файла.<br>В настоящее время к загрузке доступны файлы с расширением '.implode(', ',array_keys($ctype)); }
} else { $error[]='- Неизвестный формат файла<br>'; }
return $error;
}
if(!stristr($_SERVER["HTTP_USER_AGENT"],'opera mini')){
if(isset($_FILES['file'])){
$error=UploadFiles($_FILES['file']);
}
}else{
if(isset($_POST['file'])) {
$error=mOperaUploadFiles($_POST['file']);
}
}
//---------------------------------------------------
function put_content() {
global $error,$path,$cat;
echo '<div class="title">Файлобменник</div>';
if(isset($error)) { echo implode($error); }
echo '<div class="header">'.$cat['cat_name'].'</div>';
if(file_exists($path.'/manage/ctype.php')) {
include($path.'/manage/ctype.php');
}
if(isset($ctype) && $tmp=get_types($ctype,$cat['files_exp'])){
echo 'Типы файлов: ';
foreach($tmp as $value){ echo $value.' '; }
echo '<br>';
}
echo 'Максимальный размер: '.($cat['file_max_size']/1024).' KB<br>';
echo'* - обязательные поля';
//-----Форма загрузки----------------------------------
echo'<form action="upload.php?c='.$cat['id'].'&'.SID.'" enctype="multipart/form-data" method="post"><br>';
echo'*Файл<br><input type="file" name="file[]"><br>';
echo'Название [1-255]:<br><input type="text" maxlength="255" name="title" class="text" value=""><br>';
echo'Demo-картинка:<br><input type="file" name="file[]"><br>';
echo'Описание [1-1024]:<br><textarea maxlength="1024" name="desc" class="text"></textarea><br>';
echo'<input type="submit" class="button" value="Загрузить">';
echo'</form>';
//------------------------------------------------------
echo '<div class="nav">';
echo'<a href="index.php?c='.$cat['id'].'&'.SID.'">назад</a><br>';
echo '<a href="../?'.SID.'">на главную</a>';
echo '</div>';
}
}else{
$link = '1; URL=index.php?'.SID;
function put_content() {
echo '- Вы не можете загружать файлы в этот каталог<br><br>';
echo '<a href="index.php?'.SID.'">далее...</a>';
}
}
}else{
function put_content() {
echo '- Загрузка файлов невозможна!<br>';
echo '<div class="nav">';
echo '<a href="../?'.SID.'">на главную</a>';
echo '</div>';
}
}
} else {
$link = '10; URL=../?'.SID;
function put_content() {
echo '- Доступ запрещен незарегистрированным пользователям<br><br>';
echo '<a href="../?'.SID.'">далее...</a>';
}
}
} else {
$link = '10; URL=../?'.SID;
function put_content() {
echo '- Доступ запрещен администрацией сайта<br><br>';
echo '<a href="../?'.SID.'">далее...</a>';
}
}
// подключение дизайна
design();?>