Файл: lib/inc/upload_act.php
Строк: 115
<?
if (user_access('lib_stat_zip') && isset($_GET['act']) && $_GET['act']=='upload_zip' && isset($_GET['ok']) && isset($_FILES['file']) && @preg_match('#.zip$#i',$_FILES['file']['name']))
{
$k_new_dir=0;
$k_new_st=0;
if (function_exists('set_time_limit'))@set_time_limit(600);
include_once H.'/sys/inc/zip.php';
$zip = new PclZip($_FILES['file']['tmp_name']);
$list = $zip->listContent(); // содержание архива
$dirs=null;
for ($i=0; $i<sizeof($list); $i++)
{
if ($list[$i]['folder']==1)
{
$dirs[]=(function_exists('iconv'))?@iconv('cp866', 'utf-8', $list[$i]['filename']):$list[$i]['filename'];
}
elseif (preg_match('#.txt$#i',$list[$i]['filename']))
{
$files_id[]=$list[$i]['index'];
$files[]=(function_exists('iconv'))?@iconv('cp866', 'utf-8', $list[$i]['filename']):$list[$i]['filename'];
}
}
for ($i=0;$i<sizeof($dirs);$i++)
{
$dir=preg_replace('#/+#','/','/'.$dirs[$i].'/');
$dir_arr=explode('/', $dir);
$path_osn=$l.'/';
for ($id=1;$id<count($dir_arr)-1;$id++)
{
$dirname=preg_replace('#[^A-zА-я0-9()-_ .?]#ui', null, $dir_arr[$id]);
$path_dir=$path_osn.tr_loads(retranslit($dir_arr[$id])).'/';
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `lib_dir` WHERE `dir` = '$path_dir' AND `dir_osn` = '$path_osn'"),0)==0)
{
mysql_query("INSERT INTO `lib_dir` (`name` , `dir` , `dir_osn` ) VALUES ('$dirname', '$path_dir', '$path_osn')");
$k_new_dir++;
}
$path_osn=$path_dir;
}
}
for ($i=0;$i<sizeof($files);$i++)
{
$file=preg_replace("#.*/#",NULL,urldecode($files[$i])); // получение имени файла
$name=preg_replace('#.[^.]*$#i', NULL, $file); // имя файла без расширения
$dir=preg_replace('#/+#','/','/'.$files[$i]);
$dir_arr=explode('/', $dir);
$path_dir=$l.'/';
for ($id=1;$id<count($dir_arr)-1;$id++)
{
$path_dir=$path_dir.tr_loads(retranslit($dir_arr[$id])).'/';
}
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `lib_dir` WHERE `dir` = '$path_dir' LIMIT 1"),0)!=0)
{
$dir_id2=mysql_fetch_assoc(mysql_query("SELECT * FROM `lib_dir` WHERE `dir` = '$path_dir' LIMIT 1"));
$list = $zip->extract(PCLZIP_OPT_BY_INDEX, $files_id[$i],PCLZIP_OPT_EXTRACT_AS_STRING);
$text=$list[0]['content'];
if (function_exists('iconv') && isset($_POST['charset']))
$text=@iconv($_POST['charset'], 'utf-8', $text);
if (isset($_POST['name_of']) && $_POST['name_of']=='string')
{
$name_1=split("(n|r)+", $text);
if ($name_1[0]!=NULL)$name=$name_1[0];
elseif($name_1[1]!=NULL)$name=$name_1[1];
}
$name=preg_replace('#[^A-zА-я0-9()-_ ]#ui', null, $name);
mysql_query("INSERT INTO `lib_files` (`id_dir`, `name`, `time`, `time_last`, `id_user`)
VALUES ('$dir_id2[id]', '$name', '$time', '$time', '$user[id]')");
$stat_id=mysql_insert_id();
if (!@file_put_contents(H."sys/lib/stats/$stat_id.txt.gz", gzencode($text,9)))
{
mysql_query("DELETE FROM `lib_files` WHERE `id` = '$stat_id'");
$err[]='Невозможно сохранить статью';
}
else
{
$k_new_st++;
}
}
}
admin_log('Библиотека','Создание статей',"Выгружен ZIP-архив $k_new_dir папок, $k_new_st статей");
if ($k_new_dir!=0)msg("Успешно создано $k_new_dir папок");
if ($k_new_st!=0)msg("Успешно выгружено $k_new_st статей");
}
if (user_access('lib_stat_txt') && isset($_GET['act']) && $_GET['act']=='upload_txt' && isset($_GET['ok']) && isset($_FILES['file']))
{
$file=preg_replace('#[^A-zА-я0-9()-_ .]#ui', null, $_FILES['file']['name']);
$name=preg_replace('#.[^.]*$#i', NULL, $file); // имя файла без расширения
$ras=strtolower(preg_replace('#^.*.#i', NULL, $file));
$text=file_get_contents($_FILES['file']['tmp_name']);
if (function_exists('iconv') && isset($_POST['charset']))$text=@iconv($_POST['charset'], 'utf-8', $text);
if ($name==NULL)$err='Название файла пусто или состоит из запрещенных символов';
elseif (!preg_match('#^txt$#i',$ras))$err='Неверный формат файла';
elseif (mysql_result(mysql_query("SELECT COUNT(*) FROM `lib_files` WHERE `id_dir` = '$id_dir' AND `name` = '$name'"), 0)!=0)$err='Статья с таким названием уже есть в этой папке';
elseif ($text==NULL)$err='Текст статьи пуст';
else
{
mysql_query("INSERT INTO `lib_files` (`id_dir`, `name`, `time`, `time_last`, `id_user`)
VALUES ('$dir_id[id]', '$name', '$time', '$time', '$user[id]')");
$stat_id=mysql_insert_id();
if (!@file_put_contents(H."sys/lib/stats/$stat_id.txt.gz", gzencode($text,9)))
{
mysql_query("DELETE FROM `lib_files` WHERE `id` = '$stat_id'");
$err='Нет прав на запись (sys/lib/stats/)';
}
else
{
admin_log('Библиотека','Создание статей',"Добавление статьи (txt) '$name'");
msg('Статья успешно добавлена');
}
}
}
if (user_access('lib_stat_create') && isset($_GET['act']) && $_GET['act']=='create_stat' && isset($_GET['ok']) && isset($_POST['name']) && isset($_POST['text']))
{
$name=preg_replace('#[^A-zА-я0-9()-_ ]#ui', null, $_POST['name']);
$text=trim($_POST['text']);
if ($name==NULL)$err[]='Введите название статьи';
elseif (mysql_result(mysql_query("SELECT COUNT(*) FROM `lib_files` WHERE `id_dir` = '$id_dir' AND `name` = '$name'"), 0)!=0)$err[]='Статья с таким названием уже есть в этой папке';
elseif ($text==NULL)$err[]='Текст статьи пуст';
else
{
mysql_query("INSERT INTO `lib_files` (`id_dir`, `name`, `time`, `time_last`, `id_user`)
VALUES ('$dir_id[id]', '$name', '$time', '$time', '$user[id]')");
$stat_id=mysql_insert_id();
if (!@file_put_contents(H."sys/lib/stats/$stat_id.txt.gz", gzencode($text,9)))
{
mysql_query("DELETE FROM `lib_files` WHERE `id` = '$stat_id'");
$err[]='Нет прав на запись (sys/lib/stats/)';
}
else
{
admin_log('Библиотека','Создание статей',"Добавление статьи (создание) '$name'");
msg('Статья успешно добавлена');
}
}
}
?>