<?php
define('_IN_JOHNCMS', 1);
$headmod = 'pub';
$textl = 'Библиотека';
require_once ('../includes/start.php');
require_once ('../includes/functions.php');
require_once ('../includes/header.php');
include_once ('../themes/header.php');
require_once ("./inc/conf.php");
if (isset($_GET['act'])) { $act = check($_GET['act']); } else { $act = 'index'; }
if (isset($_GET['start'])) { $start = abs(intval($_GET['start'])); } else { $start = 0; }
if (isset($_GET['id'])) { $id = abs(intval($_GET['id'])); } else { $id = 0; }
$p = isset($_GET['p']) ? check($_GET['p']) : false;
if (is_admin()) {
switch ($p):
#############################################################
## Подготовка к редактированию разделов ##
#############################################################
case 'editcats':
if (is_admin(array(9))) {
$downs = DB::run() -> queryFetch("SELECT * FROM `pub_arts` WHERE `type`='dir' AND `id`=? LIMIT 1;", array($id));
$fid = $downs['fid'];
if (!empty($downs)) {
echo '<b><big>Редактирование</big></b><br />';
echo '<div class="form">';
echo '<form action="?p=addeditcats&id='.$id.'&fid='.$fid.'&&page='.$page.'" method="post">';
echo '<label>Раздел:</label> <br />';
echo '<input type="text" name="name" maxlength="50" value="'.$downs['name'].'" /><br />';
echo '<label>Положение:</label> <br />';
echo '<input type="text" name="ord" maxlength="3" value="'.$downs['ord'].'" /> <br />';
echo '<label>Уровень:</label> <br />';
echo '<input type="text" name="parent" maxlength="3" value="'.$downs['parent'].'" /> <br />';
$checked = ($downs['view'] == 1) ? ' checked="checked"' : '';
echo '<input name="view" type="checkbox" value="1"'.$checked.' /> ';
echo ' <label>Показывать полный текст:</label> <br />';
echo '<input type="submit" value="Изменить" /></form></div><br />';
} else { show_error('Ошибка! Данного раздела не существует!'); }
} else { show_error('Ошибка! Изменять разделы могут только суперадмины!'); }
echo ' <a href="?">Вернуться</a> <br />';
break;
#############################################################
## Редактирование разделов ##
#############################################################
case 'addeditcats':
$fid = check($_GET['fid']);
$name = check($_POST['name']);
$ord = abs(intval($_POST['ord']));
$parent = abs(intval($_POST['parent']));
$view = (empty($_POST['view'])) ? 0 : 1;
if (is_admin(array(9))) {
if (utf_strlen($name) >= 3 && r_utf_strlen($name) < 50) {
DB::run() -> query("
UPDATE `pub_arts`
SET `ord`=?, `parent`=?, `name`=?, `view`=?
WHERE `id`=?;", array($ord, $parent, $name, $view, $id)
);
notice('Раздел успешно отредактирован!');
redirect('?id='.$fid.'&page='.$page.'');
} else { show_error('Ошибка! Слишком длинное или короткое название раздела (4-50)!'); }
} else { show_error('Ошибка! Изменять разделы могут только суперадмины!'); }
echo '<a href="?p=editcats&id='.$id.'">Вернуться</a> <br />';
break;
endswitch;
echo '<a href="admin.php?">В админку</a> <br />';
if (empty($id)) {
echo '<div class="phdr">Файл менеджер</div>';
} else {
////////////////////////////////////////////////////////////
// Получаем структуру каталогов //
////////////////////////////////////////////////////////////
$tree = array();
$dirid = $id;
while ($dirid != '0' && $dirid != "") {
$res = DB::run() -> queryFetch("SELECT `name`,`fid` FROM `pub_arts` WHERE `type` = 'dir' and `id` = ? LIMIT 1;", array($dirid));
$tree[] = '<a href="fileman.php?id='.$dirid.'">'.$res['name'].'</a>';
$dirid = $res['fid'];
}
krsort($tree);
$cdir = array_pop($tree);
echo '<div class="phdr"><a href="index.php">В публикации</a> | <a href="fileman.php">Файл менеджер</a> | ';
foreach ($tree as $value) {
echo $value.' | ';
}
echo '<b>'.strip_tags($cdir).'</b></div>';
}
$tot_dir = DB::run() -> querySingle("SELECT count(*) FROM `pub_arts` WHERE `type` = ? AND `fid`=?;", array('dir', $id));
$totalfile = DB::run() -> querySingle("select COUNT(*) from `pub_arts` where `type` = 'file' and `fid` = '".$id."'");
$total = $tot_dir + $totalfile;
if ($total > 0) {
$req = DB::run() -> query("SELECT * FROM `pub_arts` WHERE `fid` = '".$id."' ORDER BY `type` ASC, `ord` ASC LIMIT ".$start.", ".$kol_file."");
$i = 0;
while ($mas = $req -> fetch()) {
if ($tot_dir > 0 && $mas['type'] == 'dir') {
echo ($i % 2) ? '<div class="list1">' : '<div class="list2">'; ++$i;
echo '<a href="?p=editcats&id='.$mas['id'].'&fid='.$mas['fid'].'&start='.$start.'">'.$mas['ord'].' / '.$mas['parent'].'</a>
<img src="./img/'.($mas['type2'] == "YES" ? 'folder_user' : 'folder').'.png" alt="" />
<a href="fileman.php?id='.$mas['id'].'">'.htmlentities($mas['name'],ENT_QUOTES,'utf-8').'</a>';
$count = 0;
$countnew = 0;
$count = DB::run() -> querySingle("select COUNT(*) from `pub_arts` where `type` = 'file' and `path` LIKE '".$mas['path']."%'");
$countnew = DB::run() -> querySingle("select COUNT(*) from `pub_arts` where `type` = 'file' and `path` LIKE '".$mas['path']."%' and `time` > '".(SITETIME -($new_fil * 24 * 3600) )."'");
echo '('.intval($count);
if ($countnew !== "0"){
echo '/<span class="red">+'.intval($countnew).'</span>)';
} else {
echo ')';
}
if (!empty($mas['opis'])) {
echo '<div class="sub">'.htmlentities($mas['opis'],ENT_QUOTES,'utf-8').'</div>';
}
echo '</div>';
}
if ($totalfile > 0 && $mas['type'] == 'file') {
echo ($i % 2) ? '<div class="list1">' : '<div class="list2">'; ++$i;
echo ''.$mas['moder'] == 1 ? '<strong class="text-success">°</strong>' : '<b class="text-danger">*°</b>';
echo '<img src="./img/page_white_text.png" alt="" />'.htmlentities($mas['name'],ENT_QUOTES,'utf-8');
$c = DB::run() -> querySingle("select COUNT(*) from `pub_file` where `fid` = '".$mas['id']."'");
if ($c > 0) {
echo '<br/>';
echo '<div class="quote">Прикрепленные файлы:<br/>';
$BD = DB::run() -> query("select * from `pub_file` where `fid` = '".$mas['id']."'");
while ($res = $BD -> fetch()) {
echo '<a href="file.php?act=look&id='.$res['id'].'">'.htmlentities($res['name']).'</a>, ';
}
echo '</div>';
}
if (!empty($mas['opis'])) {
echo '<div class="sub">'.htmlentities($mas['opis'],ENT_QUOTES,'utf-8').'</div>';
} else {
echo '<br />';
}
echo '<p><div class="func">';
echo '<a href="file.php?act=editfile&id='.$mas['id'].'&start='.$start.'">Изменить</a> / ';
echo ' <a href="file.php?act=delfile&id='.$mas['id'].'">Удалить</a> / ';
echo ' <a href="file.php?act=perfile&id='.$mas['id'].'">Переместить</a> / ';
echo ' <a href="file.php?act=precfile&id='.$mas['id'].'">Прекрипить файл</a> ';
if ($c > 0) {
echo ' / <a href="file.php?act=editprec&id='.$mas['id'].'">Управление Прек. файлами</a>';
}
echo '</p></div></div>';
}
}
} else {
show_error('Список пуст!');
}
if ($total > $kol_file) {
page_strnavigation('fileman.php?id='.$id.'&', $kol_file, $start, $total);
}
echo '<div class="breadcrumb">Всего: '.$total.'</div>';
echo '<hr/><div class="bmenu" role="alert">';
echo '<ul>';
$ord = ($total+1);
echo '<li><a class="alert-link" href="fileman.php?act=newdir&id='.$id.'&ord='.$ord.'&start='.$start.'">Создать папку</a></li>';
$mas = DB::run() -> queryFetch("SELECT * FROM `pub_arts` WHERE `fid`=? LIMIT 1;", array($id));
# Новый каталог
if ($act == 'newdir') {
if (empty($_POST['submit'])) {
echo '<form method="post" action="fileman.php?act=newdir&id='.$id.'&ord='.$ord.'&start='.$start.'">';
echo '<div class="form ml-n4 pl-3">';
echo '<label>Название папки:</label> <br /><input name="dirname"/> <br />';
echo '<label>Описание папки: <br /><textarea name="diropis"></textarea> <br />';
$par = $mas['parent'] == 0 ? 1 : $mas['parent'] = 1;
echo '<label>Уровень:</label> <br /><input name="parent" value = "'.$par.'"/> <br />';
echo '<label>Разрешить добовлять статьи:</label> <br />';
echo '<select name="type"> <option value="YES">Да</option><option value="NO">Нет</option> </select>';
echo '<br /><br /><input value="Создать" type="submit" name="submit"/></form>';
echo '</div>';
} else {
$ord = isset($ord) ? $ord : 0;
$parent = check($_POST['parent']);
$dirname = trim($_POST['dirname']);
$diropis = trim($_POST['diropis']);
$type2 = trim($_POST['type']);
$dir = DB::run() -> querySingle("SELECT count(*) FROM `pub_arts` WHERE `name`=? AND `type` = ?;", array($dirname, "dir"));
$sql = DB::run() -> queryFetch("SELECT `path` from `pub_arts` WHERE `id` = ? and `type` = 'dir';", array($id));
$path = $sql['path'].'/'.trans2($dirname);
$dt = date("d.m.Y");
if ($dir == "0" && !empty($dirname)) {
if (DB::run() -> query("insert into `pub_arts` set
`fid` = '".$id."',
`parent` = '".$parent."',
`ord` = '".$ord."',
`path` = '".$path."',
`file` = '',
`type` = 'dir',
`type2` = '".$type2."',
`view` = '0',
`name` = '".$dirname."',
`opis` = '".$diropis."',
`text` = '',
`tegs` = '',
`ip` = '".$ip."',
`soft` = '".$brow."',
`time` = '".SITETIME."',
`count` = '0',
`avtor` = '1',
`rating` = '',
`moder` = '1',
`dt` = '".$dt."'
;")) {
echo 'Каталог успешно создан<br/> В каталог :<a href="fileman.php?id='.DB::run() ->lastInsertId().'&start='.$start.'">'.$dirname.'</a><br/>';
} else {
echo 'ОШИБКА!!!<br/><a href="fileman.php?id='.$id.'">Назад</a><br/>';
}
} else {
echo 'ОШИБКА!!! Такой каталог уже существует<br/><a href="'.check($_SERVER['HTTP_REFERER']).'">Назад</a><br/>';
}
}
}
if (!empty($_GET['id'])) {
echo '<li><a href="fileman.php?act=deldir&id='.$id.'">Удалить каталог</a></li>';
# Удаление каталога
if ($act == 'deldir') {
//$aa = mysql_fetch_array(mysql_query("select `path` from `pub_arts` where `id` = '".$id."'"));
$aa = DB::run() -> queryFetch("select `path` from `pub_arts` where `id` = '".$id."'");
$sql = DB::run() -> query("select * from `pub_arts` where `path` LIKE '".$aa['path']."%'");
$res_id = array();
$count_dir = 0;
$count_file = 0;
while ($re = $sql -> fetch()) {
$res_id[] = $re['id'];
if ($re['type'] == 'dir') {
++$count_dir;
}
if ($re['type'] == 'file') {
++$count_file;
}
}
echo 'Вы собираетесь удалить <strong>'.$count_dir.'</strong> Каталогов и <strong>'.$count_file.'</strong> Публикаций<hr/>';
echo 'Если вы хотите удалить их нажмите
<a href="fileman.php?act=deldir&id='.$id.'&yes"><strong>ДА</strong></a>
или отмените <a href="fileman.php?id='.$id.'"><strong>НЕТ</strong></a>';
if (isset($_GET['yes'])) {
foreach ($res_id as $v) {
mysql_query("DELETE FROM `pub_arts` WHERE `id` = '".$v."'");
}
header("Location: fileman.php?");
}
}
echo '<li><a href="fileman.php?act=ren&id='.$id.'">Редактировать каталог</a></li>';
# Редактор каталога
if ($act == 'ren') {
if (empty($_POST['submit'])) {
$sql = DB::run() -> queryFetch("select `name`,`opis` from `pub_arts` where `id` = '".$id."' LIMIT 1");
echo '<form method="post" action="fileman.php?act=ren&id='.$id.'">';
echo 'Новое имя каталога:<br/><input name="newname" value="'.$sql['name'].'"/><br/>';
echo 'Новое описание каталога:<br/><textarea name="newopis">'.$sql['opis'].'</textarea><br/>';
echo 'Разрешить добовлять статьи:<br/><select name="type">';
echo '<option value="YES">Да</option><option value="NO">Нет</option>';
echo '</select><br/>';
echo '<input value="Изменить" type="submit" name="submit"/></form>';
} else {
if (!empty($_POST['newname'])) {
$newname = trim($_POST['newname']);
$newopis = trim($_POST['newopis']);
$type2 = trim($_POST['type']);
$sql = DB::run() -> queryFetch("select `path` from `pub_arts` where `id` = '".$id."'");
$path = $sql['path'];
$exp = explode("/",$path);
unset($exp[count($exp)-1]);
$path = join("/",$exp);
if (DB::run() -> query("
UPDATE `pub_arts` SET
`name` = '".$newname."', `path` = '".$path.'/'.trans2($newname)."', `opis` = '".$newopis."', `type2` = '".$type2."'
WHERE `id` = '".$id."'
")) {
echo 'Каталог успешно переименован<br/>В каталог:<a href="fileman.php?id='.$id.'">'.$newname.'</a><br/>';
} else {
echo 'ОШИБКА !!!<br/><a href="fileman.php?id='.$id.'">Назад</a>';
}
} else {
echo 'ОШИБКА !!! Забыли ввести имя каталога<br/><a href="fileman.php?id='.$id.'">Назад</a>';
}
}
}
$sq = DB::run() -> querySingle("select `type2` from `pub_arts` where `id` = '".$id."' LIMIT 1");
echo '<li><a href="file.php?act=upload&id='.$id.'&admin=1">Выгрузить статью</a></li>';
echo '<li><a href="file.php?act=newstat&id='.$id.'&admin=1">Написать статью</a></li>';
echo '<li><a href="fileman.php?act=mas&id='.$id.'">Массово выгрузить стаьи</a></li>';
# Массовая выгрузка
if ($act == 'mas') {
if (empty($_POST['submit'])) {
echo '<form method="POST" action="fileman.php?act=mas&id='.$id.'"><p>';
$glob_do = glob('file/mas/*',GLOB_ONLYDIR);
if (count($glob_do) > 0) {
echo '<div class="menu">
Выберете каталог из которого будем импортировать статьи <br />
<span class="red">Имя каталога должно быть обязательно написано латинскими буквами</span>: <br />
<select name="dirdo">';
foreach ($glob_do as $v) {
$v = str_replace('file/mas/','',$v);
echo '<option value="'.$v.'">'.$v.'</option>';
}
echo '</select></div>';
} else {
echo '<div class="rmenu">Нечего добовлять</div>';
}
echo '<input value="Добавить" name="submit" type="submit"/></p></form>';
} else {
if (!empty($_POST['dirdo'])) {
$put = 'file/mas/'.trim($_POST['dirdo']).'/*.{txt,dat}';
$glob = glob($put,GLOB_BRACE);
if (count($glob) > 0) {
foreach ($glob as $v) {
$d = str_replace('file/mas/'.trim($_POST['dirdo']).'/','',$v);
$name = iconv('windows-1251','UTF-8', $d);
$name1 = str_replace('.txt','',$name);
$txt = file_get_contents($v);
if (mb_check_encoding($txt, 'UTF-8')) {
} else if (mb_check_encoding($txt, 'windows-1251')) {
$txt = iconv("windows-1251", "UTF-8", $txt);
} else if (mb_check_encoding($txt, 'KOI8-R')) {
$txt = iconv("KOI8-R", "UTF-8", $txt);
}
$sql = DB::run() -> queryFetch("select `path` from `pub_arts` where `id` = '".$id."' and `type` = 'dir' LIMIT 1");
$path = $sql['path'];
$file = $name;
$moder = ($rights == 5 || $rights >= 6 ? '1' : "0");
$dt = date("d.m.Y");
DB::run() -> query("
insert into `pub_arts` set
`fid` = '".$id."',
`parent` = '0',
`path` = '".$path."',
`file` = '".$file."',
`type` = 'file',
`type2` = 'YES',
`view` = '0',
`name` = '".$name1."',
`opis` = '',
`text` = '".mysql_real_escape_string($txt)."',
`ip` = '".$ip."',
`soft` = '".$brow."',
`time` = '".SITETIME."',
`count` = '0',
`id_avtor` = '".$log."',
`rating` = '0',
`moder` = '".$moder."',
`dt` = '".$dt."'
;");
#@unlink($v);
}
echo 'Статьи успешно добавленны<br/><a href="fileman.php?id='.$id.'">Назад</a><br/>';
} else {
echo 'Нет статей для добовления<br/>';
}
} else {
echo 'Не выбрана категория для импорта<br/>';
}
}
}
}
echo '</ul>';
echo '</div>';
}
include_once ('../themes/footer.php');
?>