<?
require('../include/path.php');
if(isset($user) && ($rank&2)==2){ // если админ
$dir = (isset($_GET['dir']) && !preg_match('/[^a-z0-9_\/-]/iu',$_GET['dir']))?$_GET['dir']:dirname(dirname($_SERVER['SCRIPT_FILENAME']));
if($result=sql_query("SELECT cat_id,cat_parent_id,cat_name FROM `".PRE."dc_categories`")){
while($row=mysql_fetch_assoc($result)){
$cats[$row['cat_parent_id']][$row['cat_id']]=$row['cat_name'];
}
}
// получение каталогов для загрузки
function echoSelect($c=1,$hierr=array()) {
foreach($GLOBALS['cats'][$c] as $key=>$value) {
if(isset($GLOBALS['cats'][$key])) {
$Nhierr=array_merge($hierr,(array)$value);
if($GLOBALS['grpOpn']) {echo '</optgroup>';} else {$GLOBALS['grpOpn']=true;}
echo '<optgroup label="'.implode('/',$Nhierr).'">';
echoSelect($key,$Nhierr);
if($GLOBALS['grpOpn']) {
echo '</optgroup>';
$GLOBALS['grpOpn']=false;
}
}else{
echo '<option value="'.$key.'">'.$value.'</option>';
}
}
}
// функция вывода содежимого папок
function browser($path,$dir){
require($path.'/manage/ctype.php');
$array_file = array();
$array_dir = array();
$opendir = opendir($dir);
while ($list_file = readdir($opendir)) {
$isdir = @is_dir($dir."/".$list_file);
if ($isdir == true) {
if (($list_file != ".") && ($list_file != "..")) {
array_push($array_dir, $list_file);
}
}
if ($isdir == false) {
array_push($array_file, $list_file);
}
}
array_multisort ($array_dir, SORT_ASC, SORT_STRING );
array_multisort ($array_file, SORT_ASC, SORT_STRING );
reset ($array_dir);
reset ($array_file);
$temp=array();
foreach($array_dir as $value){
$temp[]= '<a href="mancont.php?dir='.rawurlencode(($dir.'/'.$value)).'&'.SID.'">'.$value.'</a>';
}
foreach($array_file as $value){
$part=explode('.',$value);
if(count($part)==2) {
if(array_key_exists($part[1],$ctype)){
$temp[]='<input name="chbox['.$part[0].']" type="checkbox">'.$value.'<input type="hidden" name="fexp['.$part[0].']" value="'.$part[1].'">';
}else{
$temp[]=$value;
}
}
}
return $temp;
}
// обработка POST данных и добавление в базу
if(isset($_POST['add']) && isset($_POST['fexp']) && isset($_POST['chbox'])){
require($path.'/manage/ctype.php');
if(isset($_POST['fcat']) && !preg_match('/[^0-9]/',$_POST['fcat'])){
if($result=sql_query("SELECT COUNT(cat_id) FROM `".PRE."dc_categories` WHERE cat_parent_id=".$_POST['fcat'])){
if($row=mysql_fetch_row($result)){
if(!$row[0]){ // является ли каталог допустимым к загрузке
foreach ($_POST['chbox'] as $key=>$value){
if(isset($ctype) && array_key_exists(StrToLow($_POST['fexp'][$key]),$ctype)){
if(!is_dir($path.'/files/'.StrToLow($_POST['fexp'][$key]))){ mkdir($path.'/files/'.StrToLow($_POST['fexp'][$key]),0770); }
if(!preg_match('/[^a-z0-9_-]/i',$key)){
if($result=sql_query("SELECT file_id FROM `".PRE."dc_files` WHERE file_name='".$key."' AND file_exp='".StrToLow($_POST['fexp'][$key]."' LIMIT 1"))){
if(!$row=mysql_fetch_assoc($result)){
$flag1=true;$flag2=true;
if(file_exists($path.'/files/'.StrToLow($_POST['fexp'][$key]).'/'.StrToLow($key).'.'.StrToLow($_POST['fexp'][$key]))){
$flag2=false;
}elseif(!copy($dir.'/'.$key.'.'.$_POST['fexp'][$key], $path.'/files/'.StrToLow($_POST['fexp'][$key]).'/'.StrToLow($key).'.'.StrToLow($_POST['fexp'][$key]))){
$error[]='- Ошибка при копировании файла '.$key.'.'.$_POST['fexp'][$key].'<br>';
$flag1=false;
}
if($flag1){
if(StrToLow($_POST['fexp'][$key])=='jar'){ getJAD($path.'/files/jar/',StrToLow($key)); } // если ява, генерируем jad
// добавляем в базу
if(sql_query("INSERT INTO `".PRE."dc_files` (cat_id,user,file_name,file_exp,file_title,file_size,file_date,com_perpage) VALUES (".$_POST['fcat'].",'".$user['login']."','".StrToLow($key)."','".StrToLow($_POST['fexp'][$key])."','".StrToLow($key)."',".filesize($path.'/files/'.StrToLow($_POST['fexp'][$key]).'/'.StrToLow($key).'.'.StrToLow($_POST['fexp'][$key])).",NOW(),10)")){
// удаляем из общей папки
if($flag2){ unlink($dir.'/'.$key.'.'.$_POST['fexp'][$key]); }
$error[]='- Файл '.$key.'.'.$_POST['fexp'][$key].' успешно добавлен<br>';
}else $error[]=mysql_error().'<br>';
}//}else $error[]='- Ошибка при копировании файла '.$key.'.'.$_POST['fexp'][$key].'<br>';
}else $error[]='- Файл '.$key.'.'.$_POST['fexp'][$key].' уже существует в базе<br>';
}else $error[]=mysql_error().'<br>';
}else $error[]='- Имя файла ('.$key.'.'.$_POST['fexp'][$key].') недопустимо<br>';
}else $error[]='- Файл '.$key.'.'.$_POST['fexp'][$key].' не может быть загружен. Не прописан Content-type для '.$_POST['fexp'][$key].'<br>'; }
}else $error[]='- В указанный каталог загрузка файлов невозможна<br>';
}else $error[]='- Указанный каталог несуществует в базе<br>';
}else $error[]=mysql_error().'<br>';
}else $error[]='- Не выбран каталог<br>';
}
function put_content(){
global $path,$dir,$error;
echo '<div class="title">Распределение контента</div>';
if(isset($error)) { echo implode($error); }
if(@is_dir(dirname($dir))){ echo '<a href="mancont.php?dir='.rawurlencode(dirname($dir)).'&'.SID.'">..</a><br>'; }
echo'<form action="mancont.php?dir='.$dir.'&'.SID.'" method="post" accept-charset="utf-8">';
$temp=array();
$temp=browser($path,$dir);
foreach($temp as $value){
echo $value.'<br>';
}
echo '<div class="header" align="center">Добавление файлов</div>';
echo'Категория:<br><select name="fcat">';
echo'<option value="no"></option>';
$GLOBALS['grpOpn']=false;
echoSelect();
echo'</select><br>';
echo'<input type="submit" name="add" class="button" value="Добавить">';
echo'</form>';
echo '<div class="nav"><a href="index.php?'.SID.'">к загрузкам</a><br>';
echo '<a href="../?'.SID.'">на главную</a></div>';
}
} else {
$link = '1; URL=../'.SID;
function put_content() {
echo '<a href="../?'.SID.'">далее...</a>';
}
}
// подключение дизайна
design();?>