Просмотр файла modules/loads/file.php

Размер файла: 16.11Kb
  1. <?php
  2.  
  3. // Уведомление о закрытии загруз-центра
  4. if ($system['downloads_module'] == '2' && $user['level'] < 14) {
  5. # Шапка модуля
  6. require_once(HOME .'/incfiles/header.php');
  7. echo '<div class="title">Технические работы</div>
  8. <div class="menu">
  9. '. output($system['downloads_module_about']) .'
  10. </div>';
  11. echo '<div class="block">
  12. &raquo; <a href="/">На главную</a>
  13. </div>';
  14. # Ноги модуля
  15. require_once(HOME .'/incfiles/footer.php');
  16. }
  17.  
  18. if (isset($_GET['file_id']) && mysql_result(mysql_query("SELECT COUNT(*) FROM `loads` WHERE `id` = '". num($_GET['file_id']) ."'"), 0) == 0) $dir_id = 0;
  19. else $dir_id = num($_GET['file_id']);
  20.  
  21. if ($dir_id == 0) {
  22. header('Location: /loads/index.php');
  23. }
  24.  
  25. # Массив с данными
  26. $file = mysql_fetch_assoc(mysql_query("SELECT * FROM `loads` WHERE `id` = '$dir_id' LIMIT 1"));
  27.  
  28. # Заголовок модуля
  29. $system['page_title'] = $file['name'];
  30.  
  31. # Шапка модуля
  32. require_once(HOME .'/incfiles/header.php');
  33.  
  34. if (isset($_GET['edit']) && isset($user) && ($user['level'] >= 14 || $user['level'] == 10) && isset($_POST['edit'])) {
  35. # директория файлов
  36. $file_dir = HOME .'/files/loads_screens/';
  37.  
  38. if ($_FILES['screen1']['tmp_name']) {
  39. # Инфа о файле
  40. $patch = pathinfo($_FILES['screen1']['name']);
  41.  
  42. // Проверка верности расширения
  43. if (!in_array($patch['extension'], explode(';', $system['img_files']))) $err .= 'Запрещенное расширение скриншотов.<br />';
  44.  
  45. if (!isset($err)) {
  46. # Уникальное имя файла
  47. $key1 = md5('screen1' . time());
  48. $key1 = substr($key1, 0, 15) .'.'. $patch['extension'];
  49.  
  50. if ($file['screen1'] != NULL) unlink($file_dir . $file['screen1']);
  51.  
  52. # Копирование файла
  53. move_uploaded_file($_FILES['screen1']['tmp_name'], $file_dir . $key1);
  54.  
  55. # Сохраняем данные
  56. mysql_query("UPDATE `loads` SET `screen1` = '". $key1 ."' WHERE `id` = '$dir_id' LIMIT 1");
  57. }
  58. }
  59.  
  60. if ($_FILES['screen2']['tmp_name']) {
  61. # Инфа о файле
  62. $patch = pathinfo($_FILES['screen2']['name']);
  63.  
  64. // Проверка верности расширения
  65. if (!in_array($patch['extension'], explode(';', $system['img_files']))) $err .= 'Запрещенное расширение скриншотов.<br />';
  66.  
  67. if (!isset($err)) {
  68. # Уникальное имя файла
  69. $key2 = md5('screen2' . time());
  70. $key2 = substr($key2, 0, 15) .'.'. $patch['extension'];
  71.  
  72. if ($file['screen2'] != NULL) unlink($file_dir . $file['screen2']);
  73.  
  74. # Копирование файла
  75. move_uploaded_file($_FILES['screen2']['tmp_name'], $file_dir . $key2);
  76.  
  77. # Сохраняем данные
  78. mysql_query("UPDATE `loads` SET `screen2` = '". $key2 ."' WHERE `id` = '$dir_id' LIMIT 1");
  79. }
  80. }
  81.  
  82. if ($_FILES['screen3']['tmp_name']) {
  83. # Инфа о файле
  84. $patch = pathinfo($_FILES['screen3']['name']);
  85.  
  86. // Проверка верности расширения
  87. if (!in_array($patch['extension'], explode(';', $system['img_files']))) $err .= 'Запрещенное расширение скриншотов.<br />';
  88.  
  89. if (!isset($err)) {
  90. # Уникальное имя файла
  91. $key3 = md5('screen3' . time());
  92. $key3 = substr($key3, 0, 15) .'.'. $patch['extension'];
  93.  
  94. if ($file['screen3'] != NULL) unlink($file_dir . $file['screen3']);
  95.  
  96. # Копирование файла
  97. move_uploaded_file($_FILES['screen3']['tmp_name'], $file_dir . $key3);
  98.  
  99. # Сохраняем данные
  100. mysql_query("UPDATE `loads` SET `screen3` = '". $key3 ."' WHERE `id` = '$dir_id' LIMIT 1");
  101. }
  102. }
  103.  
  104. $rate = num($_POST['rate']);
  105.  
  106. if ($rate != 0 && $rate != 1 && $rate != 2 && $rate != 3 && $rate != 4 && $rate != 5 && $rate != 6 && $rate != 7 && $rate != 8 && $rate != 9 && $rate != 10) $err .= 'Неверный формат оценки.<br />';
  107.  
  108. $about = txt($_POST['about']);
  109.  
  110. # Проверка длины логина
  111. if (!empty($about) && (strlen_rus($about) < 3 || strlen_rus($about) > 7000)) $err .= 'Неверная длина описания. Допустимо от 3 до 7000 символов<br />';
  112.  
  113. if (!isset($err)) {
  114. # Сохраняем данные
  115. mysql_query("UPDATE `loads` SET `about` = '". input($about) ."', `rate` = '$rate' WHERE `id` = '$dir_id' LIMIT 1");
  116.  
  117. echo '<div class="title">Изменение информации</div>
  118. <div class="menu">
  119. Информация успешно изменена.
  120. </div>';
  121.  
  122. echo '<div class="block">
  123. &raquo; <a href="/loads/file.php?file_id='. $dir_id .'">Вернуться к объекту</a><br />
  124. &raquo; <a href="/">На главную</a>
  125. </div>';
  126.  
  127. # Ноги модуля
  128. require_once(HOME .'/incfiles/footer.php');
  129. }
  130. }
  131.  
  132. // Добавление файлов
  133. if (isset($_GET['add_files']) && isset($user) && ($user['level'] >= 14 || $user['level'] == 10) && isset($_POST['add'])) {
  134. # Кол-во добавляемых файлов
  135. $kol_files_n = num($_POST['kol_files_n']);
  136.  
  137. # Директория файлов
  138. $file_dir = HOME .'/files/loads/';
  139.  
  140. // Цикл сохраняющий файлы
  141. for ($i=0;$i<$kol_files_n;$i++) {
  142. # Номер сохраняемого файла
  143. $num_file = $i + 1;
  144.  
  145. // Проверяем отправку файла
  146. if ($_FILES['file_'. $num_file]['tmp_name']) {
  147. # Имя файла
  148. $file_name = txt($_POST['name_'. $num_file]);
  149.  
  150. # Проверяем длину имени
  151. if (!empty($file_name) && (strlen_rus($file_name) < 3 || strlen_rus($file_name) > 64)) $err .= 'Неверная длина файла номер '. $num_file .'. Допустимо от 3 до 60 символов.<br />';
  152.  
  153. # Информация о файле
  154. $patch = pathinfo($_FILES['file_'. $num_file]['name']);
  155.  
  156. // Проверка верности расширения
  157. if (!in_array($patch['extension'], explode(';', $system['files_ext']))) $err .= 'Запрещенное расширение файла номер '. $num_file .'.<br />';
  158.  
  159. // Сохранение файла
  160. if (!isset($err)) {
  161. # Уникальное имя файла
  162. $key = md5(str_replace('.'. $patch['extension'], '', $patch['basename']) . $file['id']);
  163. $name = str_replace('.'. $patch['extension'], '', $patch['basename']) .'_'. substr($key, 0, 5) .'.'. $patch['extension'];
  164.  
  165. if (file_exists($file_dir . $name)) $err .= 'Такой же файл, как и файл номер '. $num_file .' уже существует на сервере.<br />';
  166. if (mysql_result(mysql_query("SELECT COUNT(*) FROM `loads_files` WHERE `server_name` = '$name' AND `file_id` = '$file[id]'"), 0) != 0) $err .= 'Такой же файл, как и файл номер '. $num_file .' уже существует в базе данных.<br />';
  167.  
  168. if (!isset($err)) {
  169. # Копирование файла
  170. move_uploaded_file($_FILES['file_'. $num_file]['tmp_name'], $file_dir . $name);
  171. # Имя файла
  172. if (empty($file_name)) $file_name = str_replace('.'. $patch['extension'], '', $patch['basename']);
  173.  
  174. # Сохраняем данные
  175. mysql_query("INSERT INTO `loads_files` SET `file_id` = '$file[id]', `time` = '". time() ."', `name` = '". input($file_name) ."', `size` = '". $_FILES['file_'. $num_file]['size'] ."', `server_name` = '$name', `ext` = '$patch[extension]'");
  176. }
  177. }
  178. }
  179. }
  180.  
  181. if (!isset($err)) {
  182. # Вывод уведомления
  183. echo '<div class="title">Добавление файлов</div>
  184. <div class="menu">
  185. Файлы успешно добавлены.
  186. </div>';
  187. echo '<div class="block">
  188. &raquo; <a href="/loads/file.php?file_id='. $dir_id .'">Вернуться к объекту</a><br />
  189. &raquo; <a href="/">На главную</a>
  190. </div>';
  191.  
  192. # Ноги модуля
  193. require_once(HOME .'/incfiles/footer.php');
  194. }
  195. }
  196.  
  197. error($err);
  198.  
  199. # Массив с данными
  200. $file = mysql_fetch_assoc(mysql_query("SELECT * FROM `loads` WHERE `id` = '$dir_id' LIMIT 1"));
  201.  
  202. // изменение объекта
  203. if (isset($_GET['edit']) && isset($user) && ($user['level'] >= 14 || $user['level'] == 10)) {
  204. echo '<div class="title">Изменение информации</div>
  205. <form enctype="multipart/form-data" method="post" method="post" action="/loads/file.php?file_id='. $dir_id .'&amp;edit">
  206. '. (!empty($file['screen1'])?'<div class="menu">Скриншот 1:<br /><img src="/files/loads_screens/'. $file['screen1'] .'" alt="" width="100" /><br /><input type="file" name="screen1" accept="image/*, image/gif, image/png, image/jpeg" /></div>':'<div class="menu">Скриншот 1:<br /><input type="file" name="screen1" accept="image/*, image/gif, image/png, image/jpeg" /></div>') .'
  207. '. (!empty($file['screen2'])?'<div class="menu">Скриншот 2:<br /><img src="/files/loads_screens/'. $file['screen2'] .'" alt="" width="100" /><br /><input type="file" name="screen2" accept="image/*, image/gif, image/png, image/jpeg" /></div>':'<div class="menu">Скриншот 2:<br /><input type="file" name="screen2" accept="image/*, image/gif, image/png, image/jpeg" /></div>') .'
  208. '. (!empty($file['screen3'])?'<div class="menu">Скриншот 3:<br /><img src="/files/loads_screens/'. $file['screen3'] .'" alt="" width="100" /><br /><input type="file" name="screen3" accept="image/*, image/gif, image/png, image/jpeg" /></div>':'<div class="menu">Скриншот 3:<br /><input type="file" name="screen3" accept="image/*, image/gif, image/png, image/jpeg" /></div>') .'
  209. <div class="menu">
  210. Описание:<br />
  211. <textarea name="about" rows="4" cols="20">'. $file['about'] .'</textarea><br />
  212. Оценка Promob:<br />
  213. <select name="rate" size="1">
  214. <option value="0"'. ($file['rate'] == 0?' selected="selected"':NULL) .'>0</option>
  215. <option value="1"'. ($file['rate'] == 1?' selected="selected"':NULL) .'>1</option>
  216. <option value="2"'. ($file['rate'] == 2?' selected="selected"':NULL) .'>2</option>
  217. <option value="3"'. ($file['rate'] == 3?' selected="selected"':NULL) .'>3</option>
  218. <option value="4"'. ($file['rate'] == 4?' selected="selected"':NULL) .'>4</option>
  219. <option value="5"'. ($file['rate'] == 5?' selected="selected"':NULL) .'>5</option>
  220. <option value="6"'. ($file['rate'] == 6?' selected="selected"':NULL) .'>6</option>
  221. <option value="7"'. ($file['rate'] == 7?' selected="selected"':NULL) .'>7</option>
  222. <option value="8"'. ($file['rate'] == 8?' selected="selected"':NULL) .'>8</option>
  223. <option value="9"'. ($file['rate'] == 9?' selected="selected"':NULL) .'>9</option>
  224. <option value="10"'. ($file['rate'] == 10?' selected="selected"':NULL) .'>10</option>
  225. </select><br />
  226. <input type="submit" name="edit" value="Сохранить" />
  227. </div>
  228. </form>';
  229.  
  230. echo '<div class="block">
  231. &raquo; <a href="/loads/file.php?file_id='. $dir_id .'">Вернуться к объекту</a><br />
  232. &raquo; <a href="/">На главную</a>
  233. </div>';
  234.  
  235. # Ноги модуля
  236. require_once(HOME .'/incfiles/footer.php');
  237. }
  238.  
  239. // изменение объекта
  240. if (isset($_GET['add_files']) && isset($user) && ($user['level'] >= 14 || $user['level'] == 10)) {
  241. # Кол-во форм для вывода
  242. if (num($_POST['kol_files']) != 0) $kol_files = num($_POST['kol_files']);
  243. else $kol_files = 1;
  244.  
  245. echo '<div class="title">Добавление файлов</div>
  246. <form enctype="multipart/form-data" method="post" method="post" action="/downloads/file.php?file_id='. $dir_id .'&amp;add_files">
  247. <div class="menu">
  248. Кол-во файлов: <input type="text" name="kol_files" size="3" value="'. $kol_files .'" /> <input type="submit" value="&gt;" />
  249. </div>';
  250.  
  251.  
  252. // Цикл выводящий формы
  253. for ($i=0;$i<$kol_files;$i++) {
  254. # Номер файла
  255. $num_file = $i + 1;
  256.  
  257. # Вывод формы
  258. echo '<div class="menu">
  259. Название '. $num_file .':<br />
  260. <input type="text" name="name_'. $num_file .'" /><br />
  261. Файл '. $num_file .':<br />
  262. <input type="file" name="file_'. $num_file .'" />
  263. </div>';
  264. }
  265.  
  266. echo '<div class="menu">
  267. <input type="submit" name="add" value="Загрузить" />
  268. </div>
  269. <input type="hidden" name="kol_files_n" value="'. $kol_files .'" checked />
  270. </form>';
  271.  
  272. echo '<div class="block">
  273. &raquo; <a href="/loads/file.php?file_id='. $dir_id .'">Вернуться к объекту</a><br />
  274. &raquo; <a href="/">На главную</a>
  275. </div>';
  276.  
  277. # Ноги модуля
  278. require_once(HOME .'/incfiles/footer.php');
  279. }
  280.  
  281. echo '<div class="title">'. $file['name'] .'</div>
  282. <div class="menu">';
  283.  
  284. if (empty($file['screen1']) && empty($file['screen2']) && empty($file['screen3'])) {
  285. echo 'Скриншотов нет.';
  286. }
  287. else if (!empty($file['screen1']) && !isset($_GET['screen'])) {
  288. echo '<img src="/files/loads_screens/'. $file['screen1'] .'" alt="" width="100" /><br />Скриншоты: [1]'. (!empty($file['screen2'])?', <a href="/loads/file.php?file_id='. $file['id'] .'&amp;screen=2">2</a>':NULL) . (!empty($file['screen3'])?', <a href="/loads/file.php?file_id='. $file['id'] .'&amp;screen=3">3</a>':NULL);
  289. }
  290. else if (isset($_GET['screen']) && $_GET['screen'] == 2 && !empty($file['screen2'])) {
  291. echo '<img src="/files/loads_screens/'. $file['screen2'] .'" alt="" width="100" /><br />Скриншоты: <a href="/loads/file.php?file_id='. $file['id'] .'">1</a>, [2]'. (!empty($file['screen3'])?', <a href="/loads/file.php?file_id='. $file['id'] .'&amp;screen=3">3</a>':NULL);
  292. }
  293. else if (isset($_GET['screen']) && $_GET['screen'] == 3 && !empty($file['screen3'])) {
  294. echo '<img src="/files/loads_screens/'. $file['screen3'] .'" alt="" width="100" /><br />Скриншоты: <a href="/loads/file.php?file_id='. $file['id'] .'">1</a>, <a href="/loads/file.php?file_id='. $file['id'] .'&amp;screen=2">2</a>, [3]';
  295. }
  296. else {
  297. echo 'Скриншотов нет.';
  298. }
  299.  
  300. echo '</div>
  301. <div class="menu">
  302. Добавлен: '. vtime($file['time']) .'<br />
  303. Скачиваний: '. $file['loads'] .'
  304. </div>
  305. <div class="menu">
  306. Описание: '. ($file['about'] != NULL?output($file['about']):'нет.') .'
  307. </div>
  308. <div class="menu">
  309. Оценка Promob: '. ($file['rate'] == 0?'не оценен.':$file['rate'] .' из 10') .'
  310. </div>';
  311.  
  312. // Вывод файлов
  313. if (mysql_result(mysql_query("SELECT COUNT(*) FROM `loads_files` WHERE `file_id` = '$file[id]'"), 0) == 0) echo '<div class="menu">Файлов нет.</div>';
  314. else {
  315. echo '<div class="menu">Скачать:</div>';
  316.  
  317. // Цикл вывода
  318. $sql_files = mysql_query("SELECT * FROM `loads_files` WHERE `file_id` = '$file[id]' ORDER BY time DESC");
  319. while ($file_info = mysql_fetch_assoc($sql_files)) {
  320. echo '<div class="menu">'. (isset($user) && $settings['img_site'] == 2?'['. $file_info['ext'] .'] ':'<img src="/design/icons/files/'. $file_info['ext'] .'.png" alt="['. $file_info['ext'] .']" /> ') .'<a href="/loads/load_file.php?file_id='. $file_info['id'] .'">'. $file_info['name'] .'</a>'. ($file_info['ext'] == 'jar'?' [<a href="/loads/get_jad.php?file_id='. $file_info['id'] .'">JAD</a>]':NULL) .' ('. size($file_info['size']) .')</div>';
  321. }
  322. }
  323.  
  324.  
  325. echo '<div class="block">
  326. '. ($file['dir_id'] > 0?'&raquo; <a href="/loads/index.php?dir_id='. $file['dir_id'] .'">'. mysql_result(mysql_query("SELECT `name` FROM `loads` WHERE `id` = '$file[dir_id]'"), 0) .'</a><br />':'&raquo; <a href="/loads/">В загрузки</a><br />') .'
  327. &raquo; <a href="/">На главную</a>
  328. </div>';
  329.  
  330. if (isset($user) && ($user['level'] >= 14 || $user['level'] == 10)) {
  331. echo '<div class="block">&raquo; <a href="/loads/file.php?file_id='. $dir_id .'&amp;edit">Изменить информацию</a><br />
  332. &raquo; <a href="/loads/file.php?file_id='. $dir_id .'&amp;add_files">Добавить файлы</a></div>';
  333. }
  334.  
  335. # Ноги модуля
  336. require_once(HOME .'/incfiles/footer.php');
  337.  
  338. ?>