Просмотр файла mpanel/offers.php

Размер файла: 18.9Kb
  1. <?php
  2. #-----------------------------------------------------#
  3. # ********* ROTORCMS ********* #
  4. # Made by : VANTUZ #
  5. # E-mail : visavi.net@mail.ru #
  6. # Site : http://pizdec.ru #
  7. # WAP-Site : http://visavi.net #
  8. # ICQ : 36-44-66 #
  9. # Вы не имеете право вносить изменения в код скрипта #
  10. # для его дальнейшего распространения #
  11. #-----------------------------------------------------#
  12. require_once ('../includes/start.php');
  13. require_once ('../includes/functions.php');
  14. require_once ('../includes/header.php');
  15. include_once ('../themes/header.php');
  16.  
  17. $config['postoffers'] = 10;
  18. $config['postcommoffers'] = 10;
  19. $config['maxpostoffers'] = 300;
  20.  
  21. if (isset($_GET['act'])) {
  22. $act = check($_GET['act']);
  23. } else {
  24. $act = 'index';
  25. }
  26. if (isset($_GET['start'])) {
  27. $start = abs(intval($_GET['start']));
  28. } else {
  29. $start = 0;
  30. }
  31. if (isset($_GET['id'])) {
  32. $id = abs(intval($_GET['id']));
  33. } else {
  34. $id = 0;
  35. }
  36. if (isset($_GET['type'])) {
  37. $type = abs(intval($_GET['type']));
  38. } else {
  39. $type = 0;
  40. }
  41.  
  42. if (is_admin(array(101, 102))) {
  43. show_title('same.png', 'Предложения и проблемы');
  44. $config['newtitle'] = 'Предложения и проблемы';
  45.  
  46. switch ($act):
  47. ############################################################################################
  48. ## Главная страница ##
  49. ############################################################################################
  50. case 'index':
  51.  
  52. $type2 = (empty($type))? 1 : 0;
  53.  
  54. $total = DB::run() -> querySingle("SELECT count(*) FROM `offers` WHERE `offers_type`=?;", array($type));
  55. $total2 = DB::run() -> querySingle("SELECT count(*) FROM `offers` WHERE `offers_type`=?;", array($type2));
  56.  
  57. echo '<img src="../images/img/document.gif" alt="image" /> ';
  58.  
  59. if (empty($type)) {
  60. echo '<b>Предложения</b> ('.$total.') / <a href="offers.php?type=1&amp;'.SID.'">Проблемы</a> ('.$total2.')';
  61. } else {
  62. echo '<a href="offers.php?type=0&amp;'.SID.'">Предложения</a> ('.$total2.') / <b>Проблемы</b> ('.$total.')';
  63. }
  64.  
  65. echo ' / <a href="'.BASEDIR.'pages/offers.php?type='.$type.'&amp;start='.$start.'&amp;'.SID.'">Обзор</a><hr />';
  66.  
  67. if ($total > 0) {
  68. if ($start >= $total) {
  69. $start = 0;
  70. }
  71.  
  72. $queryoffers = DB::run() -> query("SELECT * FROM `offers` WHERE `offers_type`=? ORDER BY `offers_votes` DESC, `offers_time` DESC LIMIT ".$start.", ".$config['postoffers'].";", array($type));
  73.  
  74. echo '<form action="offers.php?act=del&amp;type='.$type.'&amp;start='.$start.'&amp;uid='.$_SESSION['token'].'&amp;'.SID.'" method="post">';
  75.  
  76. while ($data = $queryoffers -> fetch()) {
  77. echo '<div class="b">';
  78. echo '<img src="../images/img/files.gif" alt="image" /> ';
  79. echo '<b><a href="offers.php?act=view&amp;type='.$type.'&amp;id='.$data['offers_id'].'&amp;'.SID.'">'.$data['offers_title'].'</a></b> (Голосов: '.$data['offers_votes'].')<br />';
  80.  
  81. switch ($data['offers_status']) {
  82. case '1': echo '<img src="../images/img/custom.gif" alt="В процессе" /> <b><span style="color:#0000ff">В процессе</span></b><br />';
  83. break;
  84. case '2': echo '<img src="../images/img/open.gif" alt="Выполнено" /> <b><span style="color:#00cc00">Выполнено</span></b><br />';
  85. break;
  86. case '3': echo '<img src="../images/img/error.gif" alt="Закрыто" /> <b><span style="color:#ff0000">Закрыто</span></b><br />';
  87. break;
  88. default: echo '<img src="../images/img/faq.gif" alt="Под вопросом" /> <b><span style="color:#ffa500">Под вопросом</span></b><br />';
  89. }
  90.  
  91. echo '<input type="checkbox" name="del[]" value="'.$data['offers_id'].'" /> ';
  92. echo '<a href="offers.php?act=edit&amp;id='.$data['offers_id'].'&amp;'.SID.'">Редактировать</a> / ';
  93. echo '<a href="offers.php?act=reply&amp;id='.$data['offers_id'].'&amp;'.SID.'">Ответить</a></div>';
  94.  
  95. echo '<div>'.bb_code($data['offers_text']).'<br />';
  96. echo 'Добавлено: '.profile($data['offers_user']).' ('.date_fixed($data['offers_time']).')<br />';
  97. echo '<a href="../pages/offers.php?act=comments&amp;id='.$data['offers_id'].'&amp;'.SID.'">Комментарии</a> ('.$data['offers_comments'].') ';
  98. echo '<a href="../pages/offers.php?act=end&amp;id='.$data['offers_id'].'&amp;'.SID.'">&raquo;</a></div>';
  99. }
  100.  
  101. echo '<br /><input type="submit" value="Удалить выбранное" /></form>';
  102.  
  103. page_strnavigation('offers.php?type='.$type.'&amp;', $config['postoffers'], $start, $total);
  104.  
  105. echo 'Всего записей: <b>'.$total.'</b><br /><br />';
  106. } else {
  107. show_error('Записей еще нет!');
  108. }
  109.  
  110. if (is_admin(array(101))) {
  111. echo '<img src="../images/img/reload.gif" alt="image" /> <a href="offers.php?act=rest&amp;uid='.$_SESSION['token'].'&amp;'.SID.'">Пересчитать</a><br />';
  112. }
  113. break;
  114.  
  115. ############################################################################################
  116. ## Просмотр записи ##
  117. ############################################################################################
  118. case 'view':
  119.  
  120. $total = DB::run() -> querySingle("SELECT count(*) FROM `offers` WHERE `offers_type`=?;", array(0));
  121. $total2 = DB::run() -> querySingle("SELECT count(*) FROM `offers` WHERE `offers_type`=?;", array(1));
  122.  
  123. echo '<img src="../images/img/document.gif" alt="image" /> <a href="offers.php?type=0&amp;'.SID.'">Предложения</a> ('.$total.') / ';
  124. echo '<a href="offers.php?type=1&amp;'.SID.'">Проблемы</a> ('.$total2.') / ';
  125. echo '<a href="../pages/offers.php?act=view&amp;type='.$type.'&amp;id='.$id.'&amp;'.SID.'">Обзор</a><hr />';
  126.  
  127. $queryoff = DB::run() -> queryFetch("SELECT * FROM `offers` WHERE `offers_id`=? LIMIT 1;", array($id));
  128. if (!empty($queryoff)) {
  129. $config['newtitle'] = $queryoff['offers_title'];
  130.  
  131. echo '<div class="b">';
  132. echo '<img src="../images/img/files.gif" alt="image" /> ';
  133. echo '<b>'.$queryoff['offers_title'].'</b> (Голосов: '.$queryoff['offers_votes'].')<br />';
  134.  
  135. switch ($queryoff['offers_status']) {
  136. case '1': echo '<img src="../images/img/custom.gif" alt="В процессе" /> <b><span style="color:#0000ff">В процессе</span></b>';
  137. break;
  138. case '2': echo '<img src="../images/img/open.gif" alt="Выполнено" /> <b><span style="color:#00cc00">Выполнено</span></b>';
  139. break;
  140. case '3': echo '<img src="../images/img/error.gif" alt="Закрыто" /> <b><span style="color:#ff0000">Закрыто</span></b>';
  141. break;
  142. default: echo '<img src="../images/img/faq.gif" alt="Под вопросом" /> <b><span style="color:#ffa500">Под вопросом</span></b>';
  143. }
  144.  
  145. echo '</div>';
  146.  
  147. echo '<div class="right"><a href="offers.php?act=edit&amp;id='.$id.'&amp;'.SID.'">Редактировать</a> / ';
  148. echo '<a href="offers.php?act=reply&amp;id='.$id.'&amp;'.SID.'">Ответить</a></div>';
  149.  
  150. echo '<div>'.bb_code($queryoff['offers_text']).'<br />';
  151. echo 'Добавлено: '.profile($queryoff['offers_user']).' ('.date_fixed($queryoff['offers_time']).')<br />';
  152.  
  153. echo '<a href="../pages/offers.php?act=comments&amp;id='.$id.'&amp;'.SID.'">Комментарии</a> ('.$queryoff['offers_comments'].') ';
  154. echo '<a href="../pages/offers.php?act=end&amp;id='.$id.'&amp;'.SID.'">&raquo;</a></div><br />';
  155.  
  156. if (!empty($queryoff['offers_text_reply'])) {
  157. echo '<div class="b"><b>Официальный ответ</b></div>';
  158. echo '<div class="q">'.bb_code($queryoff['offers_text_reply']).'<br />';
  159. echo profile($queryoff['offers_user_reply']).' ('.date_fixed($queryoff['offers_time_reply']).')</div><br />';
  160. }
  161. } else {
  162. show_error('Ошибка! Данного предложения или проблемы не существует!');
  163. }
  164.  
  165. echo '<img src="../images/img/back.gif" alt="image" /> <a href="offers.php?type='.$type.'&amp;'.SID.'">Вернуться</a><br />';
  166. break;
  167.  
  168. ############################################################################################
  169. ## Ответ на предложение ##
  170. ############################################################################################
  171. case 'reply':
  172.  
  173. $queryoff = DB::run() -> queryFetch("SELECT * FROM `offers` WHERE `offers_id`=? LIMIT 1;", array($id));
  174. if (!empty($queryoff)) {
  175. $queryoff['offers_text_reply'] = yes_br($queryoff['offers_text_reply']);
  176.  
  177. echo '<div class="form">';
  178. echo '<form action="offers.php?act=answer&amp;id='.$id.'&amp;uid='.$_SESSION['token'].'&amp;'.SID.'" method="post">';
  179.  
  180. echo 'Текст ответа: <br /><textarea cols="25" rows="5" name="text">'.$queryoff['offers_text_reply'].'</textarea><br />';
  181.  
  182. echo 'Статус: <br />';
  183.  
  184. $arrstatus = array('Под вопросом', 'В процессе', 'Выполнено', 'Закрыто');
  185. echo '<select name="status">';
  186.  
  187. foreach ($arrstatus as $k => $v) {
  188. $selected = ($k == $queryoff['offers_status']) ? ' selected="selected"' : '';
  189.  
  190. echo '<option value="'.$k.'"'.$selected.'>'.$v.'</option>';
  191. }
  192. echo '</select><br />';
  193.  
  194. echo 'Закрыть комментарии: ';
  195. $checked = ($queryoff['offers_closed'] == 1) ? ' checked="checked"' : '';
  196. echo '<input name="closed" type="checkbox" value="1"'.$checked.' /><br />';
  197.  
  198. echo '<input type="submit" value="Отправить" /></form></div><br />';
  199. } else {
  200. show_error('Ошибка! Данного предложения или проблемы не существует!');
  201. }
  202.  
  203. echo '<img src="../images/img/back.gif" alt="image" /> <a href="offers.php?act=view&amp;id='.$id.'&amp;'.SID.'">Вернуться</a><br />';
  204. break;
  205.  
  206. ############################################################################################
  207. ## Добавление ответа ##
  208. ############################################################################################
  209. case 'answer':
  210.  
  211. $uid = (isset($_GET['uid'])) ? check($_GET['uid']) : '';
  212. $text = (isset($_POST['text'])) ? check($_POST['text']) : '';
  213. $status = (isset($_POST['status'])) ? abs(intval($_POST['status'])) : '';
  214. $closed = (empty($_POST['closed'])) ? 0 : 1;
  215.  
  216. if ($uid == $_SESSION['token']) {
  217. $queryoff = DB::run() -> queryFetch("SELECT * FROM `offers` WHERE `offers_id`=? LIMIT 1;", array($id));
  218. if (!empty($queryoff)) {
  219. if (utf_strlen($text) >= 5 && utf_strlen($text) <= 1000) {
  220. if ($status >= 0 && $status <= 3) {
  221. $text = no_br($text);
  222. $text = antimat($text);
  223.  
  224. DB::run() -> query("UPDATE `offers` SET `offers_status`=?, `offers_closed`=?, `offers_text_reply`=?, `offers_user_reply`=?, `offers_time_reply`=? WHERE `offers_id`=?;", array($status, $closed, $text, $log, SITETIME, $id));
  225.  
  226. if ($queryoff['offers_status'] >= 2) {
  227. DB::run() -> query("DELETE FROM `ratedoffers` WHERE `rated_offers`=?;", array($id));
  228. }
  229.  
  230. $_SESSION['note'] = 'Данные успешно отправлены!';
  231. redirect("offers.php?act=view&id=$id&".SID);
  232. } else {
  233. show_error('Ошибка! Недопустимый статус предложения или проблемы!');
  234. }
  235. } else {
  236. show_error('Ошибка! Слишком длинный или короткий текст ответа (От 5 до 1000 символов)!');
  237. }
  238. } else {
  239. show_error('Ошибка! Данного предложения или проблемы не существует!');
  240. }
  241. } else {
  242. show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
  243. }
  244.  
  245. echo '<img src="../images/img/back.gif" alt="image" /> <a href="offers.php?act=reply&amp;id='.$id.'&amp;'.SID.'">Вернуться</a><br />';
  246. break;
  247.  
  248. ############################################################################################
  249. ## Редактирование предложения ##
  250. ############################################################################################
  251. case 'edit':
  252.  
  253. $queryoff = DB::run() -> queryFetch("SELECT * FROM `offers` WHERE `offers_id`=? LIMIT 1;", array($id));
  254. if (!empty($queryoff)) {
  255. $queryoff['offers_text'] = yes_br($queryoff['offers_text']);
  256.  
  257. echo '<div class="form">';
  258. echo '<form action="offers.php?act=change&amp;id='.$id.'&amp;uid='.$_SESSION['token'].'&amp;'.SID.'" method="post">';
  259.  
  260. echo 'Тип:<br />';
  261. echo '<select name="types">';
  262. $selected = ($queryoff['offers_type'] == 0) ? ' selected="selected"' : '';
  263. echo '<option value="0"'.$selected.'>Предложение</option>';
  264. $selected = ($queryoff['offers_type'] == 1) ? ' selected="selected"' : '';
  265. echo '<option value="1"'.$selected.'>Проблема</option>';
  266. echo '</select><br />';
  267.  
  268. echo 'Заголовок: <br /><input type="text" name="title" value="'.$queryoff['offers_title'].'" /><br />';
  269. echo 'Описание: <br /><textarea cols="25" rows="5" name="text">'.$queryoff['offers_text'].'</textarea><br />';
  270.  
  271. echo 'Закрыть комментарии: ';
  272. $checked = ($queryoff['offers_closed'] == 1) ? ' checked="checked"' : '';
  273. echo '<input name="closed" type="checkbox" value="1"'.$checked.' /><br />';
  274.  
  275. echo '<input type="submit" value="Изменить" /></form></div><br />';
  276. } else {
  277. show_error('Ошибка! Данного предложения или проблемы не существует!');
  278. }
  279.  
  280. echo '<img src="../images/img/back.gif" alt="image" /> <a href="offers.php?act=view&amp;id='.$id.'&amp;'.SID.'">Вернуться</a><br />';
  281. break;
  282.  
  283. ############################################################################################
  284. ## Изменение описания ##
  285. ############################################################################################
  286. case 'change':
  287.  
  288. $uid = (isset($_GET['uid'])) ? check($_GET['uid']) : '';
  289. $title = (isset($_POST['title'])) ? check($_POST['title']) : '';
  290. $text = (isset($_POST['text'])) ? check($_POST['text']) : '';
  291. $types = (empty($_POST['types'])) ? 0 : 1;
  292. $closed = (empty($_POST['closed'])) ? 0 : 1;
  293.  
  294. if ($uid == $_SESSION['token']) {
  295. $queryoff = DB::run() -> queryFetch("SELECT * FROM `offers` WHERE `offers_id`=? LIMIT 1;", array($id));
  296. if (!empty($queryoff)) {
  297. if (utf_strlen($title) >= 5 && utf_strlen($title) <= 50) {
  298. if (utf_strlen($text) >= 5 && utf_strlen($text) <= 1000) {
  299. $text = no_br($text);
  300. $title = antimat($title);
  301. $text = antimat($text);
  302.  
  303. DB::run() -> query("UPDATE `offers` SET `offers_type`=?, `offers_closed`=?, `offers_title`=?, `offers_text`=? WHERE `offers_id`=?;", array($types, $closed, $title, $text, $id));
  304.  
  305. $_SESSION['note'] = 'Данные успешно отредактированы!';
  306. redirect("offers.php?act=view&id=$id&".SID);
  307. } else {
  308. show_error('Ошибка! Слишком длинное или короткое описание (От 5 до 1000 символов)!');
  309. }
  310. } else {
  311. show_error('Ошибка! Слишком длинный или короткий заголовок (От 5 до 50 символов)!');
  312. }
  313. } else {
  314. show_error('Ошибка! Данного предложения или проблемы не существует!');
  315. }
  316. } else {
  317. show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
  318. }
  319.  
  320. echo '<img src="../images/img/back.gif" alt="image" /> <a href="offers.php?act=edit&amp;id='.$id.'&amp;'.SID.'">Вернуться</a><br />';
  321. break;
  322.  
  323. ############################################################################################
  324. ## Удаление предложений и проблем ##
  325. ############################################################################################
  326. case 'del':
  327.  
  328. $uid = (isset($_GET['uid'])) ? check($_GET['uid']) : '';
  329. if (isset($_POST['del'])) {
  330. $del = intar($_POST['del']);
  331. } else {
  332. $del = 0;
  333. }
  334.  
  335. if ($uid == $_SESSION['token']) {
  336. if (!empty($del)) {
  337. $del = implode(',', $del);
  338.  
  339. DB::run() -> query("DELETE FROM `offers` WHERE `offers_id` IN (".$del.");");
  340. DB::run() -> query("DELETE FROM `commoffers` WHERE `comm_offers` IN (".$del.");");
  341. DB::run() -> query("DELETE FROM `ratedoffers` WHERE `rated_offers` IN (".$del.");");
  342.  
  343. $_SESSION['note'] = 'Выбранные пункты успешно удалены!';
  344. redirect("offers.php?type=$type&start=$start&".SID);
  345. } else {
  346. show_error('Ошибка! Отсутствуют выбранные предложения или проблемы!');
  347. }
  348. } else {
  349. show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
  350. }
  351.  
  352. echo '<img src="../images/img/back.gif" alt="image" /> <a href="offers.php?start='.$start.'&amp;'.SID.'">Вернуться</a><br />';
  353. break;
  354.  
  355. ############################################################################################
  356. ## Пересчет комментариев ##
  357. ############################################################################################
  358. case 'rest':
  359.  
  360. $uid = (isset($_GET['uid'])) ? check($_GET['uid']) : '';
  361.  
  362. if (is_admin(array(101))) {
  363. if ($uid == $_SESSION['token']) {
  364. DB::run() -> query("UPDATE `offers` SET `offers_comments`=(SELECT count(*) FROM `commoffers` WHERE `offers`.`offers_id`=`commoffers`.`comm_offers`);");
  365.  
  366. $_SESSION['note'] = 'Комментарии успешно пересчитаны!';
  367. redirect("offers.php?".SID);
  368. } else {
  369. show_error('Ошибка! Неверный идентификатор сессии, повторите действие!');
  370. }
  371. } else {
  372. show_error('Ошибка! Пересчитывать комментарии могут только суперадмины!');
  373. }
  374.  
  375. echo '<img src="../images/img/back.gif" alt="image" /> <a href="offers.php?'.SID.'">Вернуться</a><br />';
  376. break;
  377.  
  378. default:
  379. redirect("offers.php?".SID);
  380. endswitch;
  381.  
  382. echo '<img src="../images/img/panel.gif" alt="image" /> <a href="index.php?'.SID.'">В админку</a><br />';
  383.  
  384. } else {
  385. redirect(BASEDIR.'index.php?'.SID);
  386. }
  387.  
  388. include_once ('../themes/footer.php');
  389. ?>