Просмотр файла modules/downloads/index.php

Размер файла: 21.08Kb
<?php

// Уведомление о закрытии форума
if ($system['downloads_module'] == '2' && !user_access('view_closed_modules')) {
  # Шапка модуля
  require_once(HOME .'/incfiles/header.php');
  
  echo '<div class="title">Технические работы</div>
  <div class="menu">
  '. output($system['downloads_module_about']) .'
  </div>';
  
  echo '<div class="block">
  &raquo; <a href="/">На главную</a>
  </div>';
  
  # Ноги модуля
  require_once(HOME .'/incfiles/footer.php');
}

# ID папки
$dir_id = num($_GET['dir_id']);

# Проверка наличия папки с таким ID
if (mysql_result(mysql_query("SELECT COUNT(*) FROM `downloads` WHERE `id` = '$dir_id'"), 0) == 0) $dir_id = 0;

// Создаем массив с данными папки
if ($dir_id != 0) {
  # Массив с данными
  $dir = mysql_fetch_assoc(mysql_query("SELECT * FROM `downloads` WHERE `id` = '$dir_id' LIMIT 1"));
  
  $dir_path = $dir['path'];
} else {
  $dir_path = '/';
}

// Удаление папки
if (isset($_GET['delete_id']) && (!user_access('add_dir_downloads') || mysql_result(mysql_query("SELECT COUNT(*) FROM `downloads` WHERE `id` = '". num($_GET['delete_id']) ."'"), 0) == 0)) {
	header('Location: /downloads/index.php?dir_id='. $dir_id);
}

// Удаление папки
if (isset($_GET['delete_id']) && user_access('add_dir_downloads') && mysql_result(mysql_query("SELECT COUNT(*) FROM `downloads` WHERE `id` = '". num($_GET['delete_id']) ."'"), 0) != 0 && isset($_POST['no'])) {
	header('Location: /downloads/index.php?dir_id='. $dir_id);
}

// Сортировка
if (isset($_GET['sort'])) {
  # Фильтр
  $sort = txt($_GET['sort']);
  
  # Проверка формата
  if ($sort != 'name' && $sort != 'time') $err .= 'Неверный формат сортировки.<br />';
  
  // Сохраняем параметры
  if (!isset($err)) {
    # Записываем параметры в сессию
    $_SESSION['sort'] = $sort;
  }
}

# Заголовок модуля
$system['page_title'] = ($dir_id != 0?$dir['name']:'Загруз-центр');

# Шапка модуля
require_once(HOME .'/incfiles/header.php');

// Создание папки
if (isset($_GET['add_dir']) && user_access('add_dir_downloads') && isset($_POST['add_dir'])) {
  # Отображаемое имя
  $view_name = txt($_POST['view_name']);
  
  # Имя на сервере
  $server_name = txt($_POST['server_name']);
  
  # Проверка ввода
  if (empty($view_name)) $err .= 'Не введено отображаемое имя<br />';
  
  # Проверка ввода
  if (empty($server_name)) $err .= 'Не введено имя на сервере<br />';    
    
  # Проверка длины
  if (!empty($server_name) && (strlen($server_name) < 3 || strlen($server_name) > 64)) $err .= 'Неверная длина имени на сервере. Допустимо от 3 до 64 символов<br />';
  
  # Проверка длины
  if (!empty($view_name) && (strlen($view_name) < 3 || strlen($view_name) > 64)) $err .= 'Неверная длина отображаемого имени. Допустимо от 3 до 64 символов<br />';
  
  # Проверка допустимых символов
  if (!empty($server_name) && !preg_match("#^([A-z0-9\-\_])+$#ui", $server_name)) $err .= 'Запрещенные символы в имени на сервере. Разрешены символы A-z0-9-_<br />';
    
  # Проверка занятости
  if (mysql_result(mysql_query("SELECT COUNT(*) FROM `downloads` WHERE `name` = '". input($view_name) ."' AND `server_name` = '". input($server_name) ."' AND `dir_id` = '$dir_id'"), 0) != 0) $err .= 'Папка с таким именем уже существует.<br />';
  
  if (!isset($err)) {
    $dir_path1 = './files/downloads'. $dir_path . $server_name;
    $dir_n = $dir_path . $server_name .'/';
  
    # Запрос в базу
    mysql_query("INSERT INTO `downloads` (`id`, `dir_id`, `path`, `type`, `name`, `server_name`, `time`, `user_id`, `file_ext`, `screen1`, `screen2`, `screen3`, `about`, `producer`, `year_release`, `rate_promob`, `loads`, `rate`) VALUES (NULL, '$dir_id', '$dir_n', '1', '$view_name', '$server_name', '". time() ."', '$user[id]', 'dir', '', '', '', '', '', '', '', '', '')");
    
    mkdir($dir_path1, 0777);
    
    echo '<div class="title">Добавление папки</div>
    <div class="menu">
    Папка успешно добавлена.
    </div>';
    
    # Имя родительской папки
    if ($dir['dir_id'] != 0) $rod_name = mysql_result(mysql_query("SELECT `name` FROM `downloads` WHERE `id` = '$dir[dir_id]'"), 0);
    else if ($dir['dir_id'] == 0)  $rod_name = 'Загруз-центр'; 

	 echo '<div class="block">
	 &raquo; <a href="/downloads/index.php?dir_id='. $dir_id .'">Вернуться в папку</a><br />
	 '. (isset($rod_name)?'&raquo; <a href="/downloads/index.php?dir_id='. $dir['dir_id'] .'">'. $rod_name .'</a><br />':NULL) .'
	 &raquo; <a href="/">На главную</a>
	 </div>';

	 # Ноги модуля
	 require_once(HOME .'/incfiles/footer.php');
  }
}

// Удаление папки
if (isset($_POST['yes']) && user_access('add_dir_downloads') && isset($_GET['delete_id']) && mysql_result(mysql_query("SELECT * FROM `downloads` WHERE `id` = '". num($_GET['delete_id']) ."'"), 0) != 0 )
{
  $path_delete = mysql_result(mysql_query("SELECT `path` FROM `downloads` WHERE `id` = '". num($_GET['delete_id']) ."'"), 0);
  
  mysql_query("DELETE FROM `downloads_files` WHERE `path` LIKE '%$path_delete%'");
  mysql_query("DELETE FROM `downloads` WHERE `path` LIKE '%$path_delete%'");
  
  rrmdir('./files/downloads'. $path_delete);

  echo '<div class="title">Удаление папки</div>
  <div class="menu">
  Папка со всем содержимым удалена.
  </div>';

  # Имя родительской папки
  if ($dir['dir_id'] != 0) $rod_name = mysql_result(mysql_query("SELECT `name` FROM `downloads` WHERE `id` = '$dir[dir_id]'"), 0);
  else if ($dir['dir_id'] == 0)  $rod_name = 'Загруз-центр'; 

	echo '<div class="block">
	&raquo; <a href="/downloads/index.php?dir_id='. $dir_id .'">Вернуться в папку</a><br />
	'. (isset($rod_name)?'&raquo; <a href="/downloads/index.php?dir_id='. $dir['dir_id'] .'">'. $rod_name .'</a><br />':NULL) .'
	&raquo; <a href="/">На главную</a>
	</div>';

	# Ноги модуля
	require_once(HOME .'/incfiles/footer.php');
}

// Изменение папки
if (isset($_POST['edit']) && isset($_GET['edit_id']) && user_access('add_dir_downloads')) {

	# Название
  $name = txt($_POST['name']);

  if (empty($name)) $err .= 'Не введено отображаемое имя.<br />';

  # Проверка длины логина
  if (!empty($name) && (mb_strlen($name, 'utf-8') < 3 || mb_strlen($name, 'utf-8') > 64)) $err .= 'Неверная отображаемого имени. Допустимо от 3 до 64 символов.<br />';

  # Проверка занятости логина
  if (mysql_result(mysql_query("SELECT COUNT(*) FROM `downloads` WHERE `dir_id` = '$dir_id' AND `name` = '". input($name) ."' AND `id` != '". num($_GET['edit_id']) ."'"), 0) != 0) $err .= 'Папка с таким именем уже существует.<br />';

  if (!isset($err)) {
    # Сохраняем данные
    mysql_query("UPDATE `downloads` SET `name` = '". input($name) ."' WHERE `id` = '". num($_GET['edit_id']) ."'");

    echo '<div class="title">Изменение папки</div>
    <div class="menu">
    Название папки успешно изменено.
    </div>';

    # Имя родительской папки
    if ($dir['dir_id'] != 0) $rod_name = mysql_result(mysql_query("SELECT `name` FROM `downloads` WHERE `id` = '$dir[dir_id]'"), 0);
    else if ($dir['dir_id'] == 0)  $rod_name = 'Загруз-центр'; 

	 echo '<div class="block">
	 &raquo; <a href="/downloads/index.php?dir_id='. $dir_id .'">Вернуться в папку</a><br />
	 '. (isset($rod_name)?'&raquo; <a href="/downloads/index.php?dir_id='. $dir['dir_id'] .'">'. $rod_name .'</a><br />':NULL) .'
	 &raquo; <a href="/">На главную</a>
	 </div>';

	 # Ноги модуля
	 require_once(HOME .'/incfiles/footer.php');
  }
}

// Создание файла
if (isset($_GET['add_file']) && user_access('add_files_downloads') && isset($_POST['add_file'])) {
  # Отображаемое имя
  $name = txt($_POST['name']);
  
  # Имя на сервере
  $type = txt($_POST['type']);
  
  # Проверка ввода
  if (empty($name)) $err .= 'Не введено имя файла<br />';
  
  # Проверка ввода
  //if ($type != 'java' && $type != 'symbian' && $type != 'images' && $type != 'video' && $type != 'music') $err .= 'Неверный медиа-тип<br />';    
  
  # Проверка длины
  if (!empty($name) && (strlen($name) < 3 || strlen($name) > 64)) $err .= 'Неверная длина имени файла. Допустимо от 3 до 64 символов<br />';
    
  # Проверка занятости
  if (mysql_result(mysql_query("SELECT COUNT(*) FROM `downloads` WHERE `type` = '2' AND `name` = '". input($name) ."' AND `dir_id` = '$dir_id'"), 0) != 0) $err .= 'Файл с таким именем уже существует.<br />';
  
  if (!isset($err)) {  
    # Запрос в базу
    mysql_query("INSERT INTO `downloads` (`id`, `dir_id`, `path`, `type`, `name`, `server_name`, `time`, `user_id`, `file_ext`, `screen1`, `screen2`, `screen3`, `about`, `producer`, `year_release`, `rate_promob`, `loads`, `rate`) VALUES (NULL, '$dir_id', '', '2', '". input($name) ."', '', '". time() ."', '$user[id]', '". input($type) ."', '', '', '', '', '', '', '', '', '')");
    
    $dir_path1 = './files/downloads'. $dir_path . mysql_insert_id() .'/';
    $dir_n = $dir_path . mysql_insert_id() .'/';
    
    mkdir($dir_path1, 0777);
    
    mysql_query("UPDATE `downloads` SET `path` = '$dir_n' WHERE `id` = '". mysql_insert_id() ."'");
    
    echo '<div class="title">Добавление файла</div>
    <div class="menu">
    Файл успешно добавлен.
    </div>';
    
    # Имя родительской папки
    if ($dir['dir_id'] != 0) $rod_name = mysql_result(mysql_query("SELECT `name` FROM `downloads` WHERE `id` = '$dir[dir_id]'"), 0);
    else if ($dir['dir_id'] == 0)  $rod_name = 'Загруз-центр'; 

	 echo '<div class="block">
	 &raquo; <a href="/downloads/index.php?dir_id='. $dir_id .'">Вернуться в папку</a><br />
	 '. (isset($rod_name)?'&raquo; <a href="/downloads/index.php?dir_id='. $dir['dir_id'] .'">'. $rod_name .'</a><br />':NULL) .'
	 &raquo; <a href="/">На главную</a>
	 </div>';

	 # Ноги модуля
	 require_once(HOME .'/incfiles/footer.php');
  }
}

# Вывод ошибок
error($err);

// Форма создания папки
if (isset($_GET['add_dir']) && user_access('add_dir_downloads')) {
	echo '<div class="title">Добавление папки</div>
	<form method="post" action="/downloads/index.php?dir_id='. $dir_id .'&amp;add_dir">
	<div class="menu">
	Отображаемое имя:<br />
	<input type="text" name="view_name" /><br />
	Имя на сервере:<br />
	<input type="text" name="server_name" /><br />
	<input type="submit" name="add_dir" value="Создать" />
	</div>
	</form>';
	
	# Имя родительской папки
  if ($dir['dir_id'] != 0) $rod_name = mysql_result(mysql_query("SELECT `name` FROM `downloads` WHERE `id` = '$dir[dir_id]'"), 0);
  else if ($dir['dir_id'] == 0)  $rod_name = 'Загруз-центр'; 

	echo '<div class="block">
	&raquo; <a href="/downloads/index.php?dir_id='. $dir_id .'">Вернуться в папку</a><br />
	'. (isset($rod_name)?'&raquo; <a href="/downloads/index.php?dir_id='. $dir['dir_id'] .'">'. $rod_name .'</a><br />':NULL) .'
	&raquo; <a href="/">На главную</a>
	</div>';

	# Ноги модуля
	require_once(HOME .'/incfiles/footer.php');
}

// Удаление папки
if (isset($_GET['delete_id']) && user_access('add_dir_downloads')) {
	echo '<div class="title">Удаление папки</div>
	<form method="post" action="/downloads/index.php?dir_id='. $dir_id .'&amp;delete_id='. num($_GET['delete_id']) .'">
	<div class="menu">
	Подтвержаете удаление папки?<br />
	<input type="submit" name="yes" value="Да" /> <input type="submit" name="no" value="Нет" />
	</div>
	</form>';

	# Имя родительской папки
  if ($dir['dir_id'] != 0) $rod_name = mysql_result(mysql_query("SELECT `name` FROM `downloads` WHERE `id` = '$dir[dir_id]'"), 0);
  else if ($dir['dir_id'] == 0)  $rod_name = 'Загруз-центр'; 

	echo '<div class="block">
	&raquo; <a href="/downloads/index.php?dir_id='. $dir_id .'">Вернуться в папку</a><br />
	'. (isset($rod_name)?'&raquo; <a href="/downloads/index.php?dir_id='. $dir['dir_id'] .'">'. $rod_name .'</a><br />':NULL) .'
	&raquo; <a href="/">На главную</a>
	</div>';

	# Ноги модуля
	require_once(HOME .'/incfiles/footer.php');
}

// Изменение папки
if (isset($_GET['edit_id']) && user_access('add_dir_downloads')) {
	# Массив с инфой об объекте
	$obj = mysql_fetch_assoc(mysql_query("SELECT * FROM `downloads` WHERE `id` = '". num($_GET['edit_id']) ."' LIMIT 1"));

	echo '<div class="title">Изменение папки</div>
	<form method="post" action="/downloads/index.php?dir_id='. $dir_id .'&amp;edit_id='. num($_GET['edit_id']) .'">
	<div class="menu">
	Отображаемое имя:<br />
	<input type="text" name="name" value="'. output($obj['name']) .'" /><br />
	<input type="submit" name="edit" value="Изменить" />
	</div>
	</form>';

	# Имя родительской папки
  if ($dir['dir_id'] != 0) $rod_name = mysql_result(mysql_query("SELECT `name` FROM `downloads` WHERE `id` = '$dir[dir_id]'"), 0);
  else if ($dir['dir_id'] == 0)  $rod_name = 'Загруз-центр'; 

	echo '<div class="block">
	&raquo; <a href="/downloads/index.php?dir_id='. $dir_id .'">Вернуться в папку</a><br />
	'. (isset($rod_name)?'&raquo; <a href="/downloads/index.php?dir_id='. $dir['dir_id'] .'">'. $rod_name .'</a><br />':NULL) .'
	&raquo; <a href="/">На главную</a>
	</div>';

	# Ноги модуля
	require_once(HOME .'/incfiles/footer.php');
}

// Форма создания файла
if (isset($_GET['add_file']) && user_access('add_files_downloads')) {
	echo '<div class="title">Добавление файла</div>
	<form method="post" action="/downloads/index.php?dir_id='. $dir_id .'&amp;add_file">
	<div class="menu">
	Имя файла:<br />
	<input type="text" name="name" /><br />
	Медиа-тип:<br />
	<select name="type" size="1">
  <option value="java">Java</option>
  <option value="symbian">Symbian</option>
  <option value="images">Images</option>
  <option value="video">Video</option>
  <option value="music">Music</option>
  <option value="zip">Архив</option>
  <option value="file">Другой</option>
  </select><br />
	<input type="submit" name="add_file" value="Создать" />
	</div>
	</form>';
	
	# Имя родительской папки
  if ($dir['dir_id'] != 0) $rod_name = mysql_result(mysql_query("SELECT `name` FROM `downloads` WHERE `id` = '$dir[dir_id]'"), 0);
  else if ($dir['dir_id'] == 0)  $rod_name = 'Загруз-центр'; 

	echo '<div class="block">
	&raquo; <a href="/downloads/index.php?dir_id='. $dir_id .'">Вернуться в папку</a><br />
	'. (isset($rod_name)?'&raquo; <a href="/downloads/index.php?dir_id='. $dir['dir_id'] .'">'. $rod_name .'</a><br />':NULL) .'
	&raquo; <a href="/">На главную</a>
	</div>';

	# Ноги модуля
	require_once(HOME .'/incfiles/footer.php');
}

echo '<div class="title">'. ($dir_id != 0?$dir['name']:'Загруз-центр') .'</div>';

# Количество файлов/папок
$k_downloads = mysql_result(mysql_query("SELECT COUNT(*) FROM `downloads` WHERE `dir_id` = '$dir_id'"), 0);

# Старт навигации
nav_start($k_downloads, 10);

if ($k_downloads == 0) {
  echo '<div class="menu">Папка пуста.</div>';
} else {
  # Сортировка
  echo '<div class="menu">
  Сортировка: '. ($_SESSION['sort'] == 'name'?'имя':'<a href="/downloads/index.php?dir_id='. $dir_id .'&amp;sort=name">имя</a>') .'/'. ($_SESSION['sort'] == 'time'?'время':'<a href="/downloads/index.php?dir_id='. $dir_id .'&amp;sort=time">время</a>') .'
  </div>';

  # Проверка наличия файлов в папке
  if (mysql_result(mysql_query("SELECT COUNT(*) FROM `downloads` WHERE `dir_id` = '$dir_id' AND `type` = '2'"), 0) > 0) {
    // Запрос для вывода файлов
    if ($_SESSION['sort'] == 'name') $sql_downloads = mysql_query("SELECT * FROM `downloads` WHERE `dir_id` = '$dir_id' ORDER BY type ASC, name ASC LIMIT $start, 10");
    else if ($_SESSION['sort'] == 'time') $sql_downloads = mysql_query("SELECT * FROM `downloads` WHERE `dir_id` = '$dir_id' ORDER BY type ASC, time DESC, name ASC LIMIT $start, 10");
    else $sql_downloads = mysql_query("SELECT * FROM `downloads` WHERE `dir_id` = '$dir_id' ORDER BY type ASC, time DESC, name ASC LIMIT $start, 10");
  } else {
    # Запрос для вывода папок
    $sql_downloads = mysql_query("SELECT * FROM `downloads` WHERE `dir_id` = '$dir_id' ORDER BY type ASC, name ASC LIMIT $start, 10");
  }

  # Цикл извлечения данных
  while ($download = mysql_fetch_assoc($sql_downloads)) {
    if ($download['type'] == 1) {
      if (mysql_result(mysql_query("SELECT COUNT(*) FROM `downloads` WHERE `path` LIKE '%$download[path]%' AND `id` != '$download[id]' AND `type` = '2' AND `time` > '". (time()-3600*24*3) ."'"), 0) != 0) $new1 = '<span class="green">+'. mysql_result(mysql_query("SELECT COUNT(*) FROM `downloads` WHERE `path` LIKE '%$download[path]%' AND `id` != '$download[id]' AND `type` = '2' AND `time` > '". (time()-3600*24*3) ."'"), 0) .'</span>';
      else $new1 = '';
    
      if (mysql_result(mysql_query("SELECT COUNT(*) FROM `downloads` WHERE `path` LIKE '%$download[path]%' AND `id` != '$download[id]' AND `type` = '2' AND `time` > '". (time()-3600*24*7) ."'"), 0) != 0) $new2 = '<span class="red">+'. mysql_result(mysql_query("SELECT COUNT(*) FROM `downloads` WHERE `path` LIKE '%$download[path]%' AND `id` != '$download[id]' AND `type` = '2' AND `time` > '". (time()-3600*24*7) ."'"), 0) .'</span>';
      else $new2 = '';
      
      if ($new1 != NULL || $new2 != NULL) $new3 = $new1 . $new2;
      else $new3 = ''; 
    }
  
    echo '<div class="menu"><img src="/design/icons/downloads/'. ($download['file_ext'] != NULL?$download['file_ext']:'file') .'.png" alt="'. ($download['type'] == 1?'Папка':'Файл') .'"> <a href="/downloads/'. ($download['type'] == 1?'index.php?dir_id='. $download['id']:'file.php?file_id='. $download['id']) .'">'. $download['name'] .'</a>'. ($download['type'] == 2?' ('. vtime($download['time']) .')':' ('. mysql_result(mysql_query("SELECT COUNT(*) FROM `downloads` WHERE `path` LIKE '%$download[path]%' AND `id` != '$download[id]' AND `type` = '2'"), 0) .')'. ($new3 != NULL?' '. $new3:NULL)) . ($download['type'] == 1 && user_access('add_dir_downloads')?' [<a href="/downloads/index.php?dir_id='. $dir_id .'&amp;edit_id='. $download['id'] .'">изм</a>] [<a href="/downloads/index.php?dir_id='. $dir_id .'&amp;delete_id='. $download['id'] .'">уд</a>]':NULL) .'</div>';
  }
  
  # Вывод навигации
  view_nav('?dir_id='. $dir_id .'&amp;');
}

echo '<div class="menu"><span class="red"><span class="small_info">+X - Новые за неделю</span></span><br /><span class="green"><span class="small_info">+X - Новые за 3 дня</span></span><br /></div>';

if (user_access('add_dir_downloads') || user_access('add_files_downloads')) {
  echo '<div class="block">
  '. (user_access('add_files_downloads')?'&raquo; <a href="/downloads/index.php?dir_id='. $dir_id .'&amp;add_file">Добавить файл</a><br />':NULL) .'
  '. (user_access('add_dir_downloads')?'&raquo; <a href="/downloads/index.php?dir_id='. $dir_id .'&amp;add_dir">Добавить папку</a>':NULL) .'
  </div>';
}

# Имя родительской папки
if ($dir['dir_id'] != 0) $rod_name = mysql_result(mysql_query("SELECT `name` FROM `downloads` WHERE `id` = '$dir[dir_id]'"), 0);
else if ($dir['dir_id'] == 0 && $dir_id != 0)  $rod_name = 'Загруз-центр'; 

echo '<div class="block">
'. (isset($rod_name)?'&raquo; <a href="/downloads/index.php?dir_id='. $dir['dir_id'] .'">'. $rod_name .'</a><br />':NULL) .'
&raquo; <a href="/">На главную</a>
</div>';

# Ноги модуля
require_once(HOME .'/incfiles/footer.php');

?>