Просмотр файла publs_v1_0/fileman.php

Размер файла: 17.25Kb
<?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&amp;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&amp;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">&deg</strong>' : '<b class="text-danger">*&deg</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&amp;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&amp;id='.$mas['id'].'&amp;start='.$start.'">Изменить</a> / ';
				echo ' <a href="file.php?act=delfile&amp;id='.$mas['id'].'">Удалить</a> / ';
				echo ' <a href="file.php?act=perfile&amp;id='.$mas['id'].'">Переместить</a> / ';
				echo ' <a href="file.php?act=precfile&amp;id='.$mas['id'].'">Прекрипить файл</a> ';
				if	($c > 0) {
					echo ' / <a href="file.php?act=editprec&amp;id='.$mas['id'].'">Управление Прек. файлами</a>';
				}
				echo '</p></div></div>';
			}
		}
	} else {
		show_error('Список пуст!'); 	
	}
	
	if ($total > $kol_file) {
		page_strnavigation('fileman.php?id='.$id.'&amp;', $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&amp;id='.$id.'&amp;ord='.$ord.'&amp;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&amp;id='.$id.'&amp;ord='.$ord.'&amp;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().'&amp;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&amp;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&amp;id='.$id.'&amp;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&amp;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&amp;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&amp;id='.$id.'&amp;admin=1">Выгрузить статью</a></li>'; 
		echo '<li><a href="file.php?act=newstat&amp;id='.$id.'&amp;admin=1">Написать статью</a></li>';


        echo '<li><a href="fileman.php?act=mas&amp;id='.$id.'">Массово выгрузить стаьи</a></li>';
		# Массовая выгрузка
		if ($act == 'mas') {
			if (empty($_POST['submit'])) {
				echo '<form method="POST" action="fileman.php?act=mas&amp;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');
?>