PageRenderTime 25ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 1ms

/legacy/includes/pages/admin/categories.php

http://novaboard.googlecode.com/
PHP | 538 lines | 380 code | 139 blank | 19 comment | 50 complexity | 26804eafed5c8565b88b265c48f39163 MD5 | raw file
Possible License(s): AGPL-3.0
  1. <?php
  2. /*
  3. +--------------------------------------------------------------------------
  4. | NovaBoard
  5. | ========================================
  6. | By Dave Murchison
  7. | (c) 2009 NovaBoard
  8. | http://www.novaboard.net
  9. | ========================================
  10. | categories.php - create/edit/delete forums
  11. */
  12. if (!defined('NOVA_RUN')){
  13. echo "<h1>ACCESS DENIED</h1>You cannot access this file directly.";
  14. exit();
  15. }
  16. template_hook("pages/admin/categories.template.php", "start");
  17. if ($can_change_forum_settings=='0'){
  18. nova_redirect("index.php?page=error&error=11","error/11");
  19. }
  20. elseif ($_GET['func']=='delete')
  21. {
  22. if ($_POST['agree']!='1')
  23. {
  24. list($token_id, $token, $token_name) = tokenCreate('categories_delete', (int) $_GET['id']);
  25. template_hook("pages/admin/categories.template.php", "warn");
  26. }
  27. else
  28. {
  29. $category_post_id = (int) $_GET['id'];
  30. if (tokenCheck('categories_delete', $category_post_id))
  31. {
  32. $query212 = "select ID from {$db_prefix}posts WHERE FORUM_ID='$category_post_id'" ;
  33. $result212 = mysql_query($query212) or die("delete.php - Error in query: $query212") ;
  34. while ($results212 = mysql_fetch_array($result212))
  35. {
  36. $remove_id = $results212['ID'];
  37. // first, delete attachments associated with these posts...
  38. $query2121 = "select FILENAME from {$db_prefix}attachments WHERE POSTID='$remove_id'" ;
  39. $result2121 = mysql_query($query2121) or die("delete.php - Error in query: $query2121") ;
  40. while ($results2121 = mysql_fetch_array($result2121))
  41. {
  42. $filename = strip_slashes($results2121['FILENAME']);
  43. foreach (glob("uploads/attachments/$filename") as $filename)
  44. {
  45. unlink($filename);
  46. }
  47. foreach (glob("uploads/attachments/t_$filename") as $filename)
  48. {
  49. unlink($filename);
  50. }
  51. mysql_query("DELETE FROM {$db_prefix}attachments WHERE postid ='$remove_id'");
  52. }
  53. }
  54. mysql_query('
  55. DELETE p.*, pl.*, plv.*
  56. FROM ' . $db_prefix . 'posts p
  57. LEFT JOIN ' . $db_prefix . 'polls pl
  58. ON p.topic_id = pl.topic_id
  59. LEFT JOIN ' . $db_prefix . 'polls_votes plv
  60. ON pl.id = plv.poll_id
  61. WHERE forum_id = ' . $category_post_id
  62. );
  63. mysql_query("DELETE FROM {$db_prefix}categories WHERE id ='$category_post_id'");
  64. mysql_query("DELETE FROM {$db_prefix}permissions WHERE forum_id ='$category_post_id'");
  65. mysql_query('DELETE FROM ' . $db_prefix . 'moderators WHERE forum_id = ' . $category_post_id);
  66. $query3 = "select PARENT, ID from {$db_prefix}categories WHERE PARENT='$category_post_id' ORDER BY ID desc" ;
  67. $result3 = mysql_query($query3) or die("categories.php - Error in query: $query3") ;
  68. while ($results3 = mysql_fetch_array($result3))
  69. {
  70. $parent = $results3['PARENT'];
  71. $id = $results3['ID'];
  72. $query212 = "select ID from {$db_prefix}posts WHERE FORUM_ID='$id'" ;
  73. $result212 = mysql_query($query212) or die("delete.php - Error in query: $query212") ;
  74. while ($results212 = mysql_fetch_array($result212))
  75. {
  76. $remove_id = $results212['ID'];
  77. // first, delete attachments associated with these posts...
  78. $query2121 = "select FILENAME from {$db_prefix}attachments WHERE POSTID='$remove_id'" ;
  79. $result2121 = mysql_query($query2121) or die("delete.php - Error in query: $query2121") ;
  80. while ($results2121 = mysql_fetch_array($result2121))
  81. {
  82. $filename = strip_slashes($results2121['FILENAME']);
  83. foreach (glob("uploads/attachments/$filename") as $filename)
  84. {
  85. unlink($filename);
  86. }
  87. foreach (glob("uploads/attachments/t_$filename") as $filename)
  88. {
  89. unlink($filename);
  90. }
  91. mysql_query("DELETE FROM {$db_prefix}attachments WHERE postid ='$remove_id'");
  92. }
  93. }
  94. mysql_query('
  95. DELETE p.*, pl.*, plv.*
  96. FROM ' . $db_prefix . 'posts p
  97. LEFT JOIN ' . $db_prefix . 'polls pl
  98. ON p.topic_id = pl.topic_id
  99. LEFT JOIN ' . $db_prefix . 'polls_votes plv
  100. ON pl.id = plv.poll_id
  101. WHERE forum_id = ' . $id
  102. );
  103. mysql_query("DELETE FROM {$db_prefix}categories WHERE id ='$id'");
  104. mysql_query("DELETE FROM {$db_prefix}permissions WHERE forum_id ='$id'");
  105. mysql_query('DELETE FROM ' . $db_prefix . 'moderators WHERE forum_id = ' . $id);
  106. $query31 = "select PARENT, ID from {$db_prefix}categories WHERE PARENT='$id' ORDER BY ID desc" ;
  107. $result31 = mysql_query($query31) or die("categories.php - Error in query: $query31") ;
  108. while ($results31 = mysql_fetch_array($result31))
  109. {
  110. $sub_parent = $results31['PARENT'];
  111. $sub_id = $results31['ID'];
  112. $query212 = "select ID from {$db_prefix}posts WHERE FORUM_ID='$sub_id'" ;
  113. $result212 = mysql_query($query212) or die("delete.php - Error in query: $query212") ;
  114. while ($results212 = mysql_fetch_array($result212))
  115. {
  116. $remove_id = $results212['ID'];
  117. // first, delete attachments associated with these posts...
  118. $query2121 = "select FILENAME from {$db_prefix}attachments WHERE POSTID='$remove_id'" ;
  119. $result2121 = mysql_query($query2121) or die("delete.php - Error in query: $query2121") ;
  120. while ($results2121 = mysql_fetch_array($result2121))
  121. {
  122. $filename = strip_slashes($results2121['FILENAME']);
  123. foreach (glob("uploads/attachments/$filename") as $filename)
  124. {
  125. unlink($filename);
  126. }
  127. foreach (glob("uploads/attachments/t_$filename") as $filename)
  128. {
  129. unlink($filename);
  130. }
  131. mysql_query("DELETE FROM {$db_prefix}attachments WHERE postid ='$remove_id'");
  132. }
  133. }
  134. mysql_query('
  135. DELETE p.*, pl.*, plv.*
  136. FROM ' . $db_prefix . 'posts p
  137. LEFT JOIN ' . $db_prefix . 'polls pl
  138. ON p.topic_id = pl.topic_id
  139. LEFT JOIN ' . $db_prefix . 'polls_votes plv
  140. ON pl.id = plv.poll_id
  141. WHERE forum_id = ' . $sub_id
  142. );
  143. mysql_query("DELETE FROM {$db_prefix}categories WHERE id ='$sub_id'");
  144. mysql_query("DELETE FROM {$db_prefix}permissions WHERE forum_id ='$sub_id'");
  145. mysql_query('DELETE FROM ' . $db_prefix . 'moderators WHERE forum_id = ' . $sub_id);
  146. }
  147. }
  148. // perform auto-cache
  149. include "scripts/php/auto_cache.php";
  150. # Re-cache moderators
  151. $Cache->delete('moderators');
  152. template_hook("pages/admin/categories.template.php", "form_1");
  153. nova_redirect("index.php?page=admin&act=categories","admin/categories");
  154. }
  155. else
  156. {
  157. nova_redirect('index.php?page=error&error=28', 'error/28');
  158. }
  159. }
  160. }
  161. elseif ($_POST['post_form']!=''){
  162. $token_id = escape_string($_POST['token_id']);
  163. $token_name = "token_categories_reorder_$token_id";
  164. if (isset($_POST[$token_name]) && isset($_SESSION[$token_name]) && $_SESSION[$token_name] == $_POST[$token_name]){
  165. $query3 = "select ID from {$db_prefix}categories ORDER BY ID desc LIMIT 1" ;
  166. $result3 = mysql_query($query3) or die("categories.php - Error in query: $query3") ;
  167. $last = mysql_result($result3, 0);
  168. $counted="1";
  169. for ( $counter = $counted; $counter <= $last; $counter += 1) {
  170. $forum_order="forum_order"."$counter";
  171. $forum_id="forum_id"."$counter";
  172. $forum_id=escape_string($_POST[$forum_id]);
  173. $forum_order=escape_string($_POST[$forum_order]);
  174. mysql_query("UPDATE {$db_prefix}categories SET forum_order='$forum_order' WHERE id='$forum_id'");
  175. }
  176. template_hook("pages/admin/categories.template.php", "form_2");
  177. nova_redirect("index.php?page=admin&act=categories","admin/categories");
  178. }
  179. else{
  180. nova_redirect("index.php?page=error&error=28","error/28");
  181. }
  182. }
  183. elseif ($_POST['new_forum_form'] != '')
  184. {
  185. $token_id = escape_string($_POST['token_id']);
  186. $token_name = "token_categories_new_$token_id";
  187. if (isset($_POST[$token_name]) && isset($_SESSION[$token_name]) && $_SESSION[$token_name] == $_POST[$token_name])
  188. {
  189. $forum_name = escape_string($_POST['name']);
  190. $forum_description = escape_string($_POST['description']);
  191. $forum_rules = escape_string($_POST['forum_rules']);
  192. $forum_parent = escape_string($_POST['parent']);
  193. $forum_read_only = escape_string($_POST['read_only']);
  194. $forum_post_count = escape_string($_POST['post_count']);
  195. $forum_theme = escape_string($_POST['forum_theme']);
  196. if ( ($_POST['redirect_url'] != '') && (!stristr($_POST['redirect_url'], "http://")) && (!stristr($_POST['redirect_url'], "ftp://")) && (!stristr($_POST['redirect_url'], "https://")) )
  197. {
  198. $redirect_url = "http://" . escape_string($_POST['redirect_url']);
  199. }
  200. else
  201. {
  202. $redirect_url = escape_string($_POST['redirect_url']);
  203. }
  204. mysql_query("INSERT INTO {$db_prefix}categories (name, description, forum_rules, parent, forum_order, read_only, post_count, theme, redirect_url) VALUES ('$forum_name', '$forum_description', '$forum_rules', '$forum_parent', '0', '$forum_read_only', '$forum_post_count', '$forum_theme', '$redirect_url')");
  205. // now go to the permissions page...
  206. $query3 = "select ID from {$db_prefix}categories ORDER BY ID desc LIMIT 1" ;
  207. $result3 = mysql_query($query3) or die("categories.php - Error in query: $query3") ;
  208. $last = mysql_result($result3, 0);
  209. // perform auto-cache
  210. include "scripts/php/auto_cache.php";
  211. template_hook("pages/admin/categories.template.php", "form_3");
  212. nova_redirect("index.php?page=admin&act=permissions&id=$last","admin/permissions/$last");
  213. }
  214. else
  215. {
  216. nova_redirect("index.php?page=error&error=28","error/28");
  217. }
  218. }
  219. elseif($_POST['post_edit_form'] != '')
  220. {
  221. $id = escape_string($_POST['id']);
  222. $token_id = escape_string($_POST['token_id']);
  223. $token_name = "token_categories_edit_$id$token_id";
  224. if (isset($_POST[$token_name]) && isset($_SESSION[$token_name]) && $_SESSION[$token_name] == $_POST[$token_name])
  225. {
  226. $forum_name=escape_string($_POST['name']);
  227. $forum_description=escape_string($_POST['description']);
  228. $forum_rules=escape_string($_POST['forum_rules']);
  229. $forum_parent=escape_string($_POST['parent']);
  230. $forum_read_only=escape_string($_POST['read_only']);
  231. $forum_post_count=escape_string($_POST['post_count']);
  232. $forum_theme=escape_string($_POST['forum_theme']);
  233. if ( ($_POST['redirect_url'] != '') && (!stristr($_POST['redirect_url'], "http://")) && (!stristr($_POST['redirect_url'], "ftp://")) && (!stristr($_POST['redirect_url'], "https://")) )
  234. {
  235. $redirect_url = "http://" . escape_string($_POST['redirect_url']);
  236. }
  237. else
  238. {
  239. $redirect_url = escape_string($_POST['redirect_url']);
  240. }
  241. mysql_query("UPDATE {$db_prefix}categories SET name='$forum_name', description='$forum_description', forum_rules='$forum_rules', parent='$forum_parent', read_only='$forum_read_only', post_count='$forum_post_count', theme='$forum_theme', redirect_url='$redirect_url' WHERE id = '$id' ");
  242. template_hook("pages/admin/categories.template.php", "form_4");
  243. nova_redirect("index.php?page=admin&act=categories","admin/categories");
  244. }
  245. else
  246. {
  247. nova_redirect("index.php?page=error&error=28","error/28");
  248. }
  249. }
  250. elseif($_GET['func'] == 'edit')
  251. {
  252. $token_id = md5(microtime());
  253. $token = md5(uniqid(rand(),true));
  254. $category_edit_id = (int) $_GET['id'];
  255. $token_name = "token_categories_edit_$category_edit_id$token_id";
  256. $_SESSION[$token_name] = $token;
  257. $query3 = "select ID, NAME, DESCRIPTION, FORUM_RULES, PARENT, READ_ONLY, POST_COUNT, THEME, REDIRECT_URL from {$db_prefix}categories WHERE ID='$category_edit_id'" ;
  258. $result3 = mysql_query($query3) or die("attachments.php - Error in query: $query3") ;
  259. while ($results3 = mysql_fetch_array($result3))
  260. {
  261. $id = $results3['ID'];
  262. $name = strip_slashes($results3['NAME']);
  263. $description = strip_slashes($results3['DESCRIPTION']);
  264. $forum_rules = strip_slashes($results3['FORUM_RULES']);
  265. $parent = $results3['PARENT'];
  266. $read_only = $results3['READ_ONLY'];
  267. $post_count = $results3['POST_COUNT'];
  268. $forum_theme = strip_slashes($results3['FORUM_THEME']);
  269. $redirect_url = strip_slashes($results3['REDIRECT_URL']);
  270. $forum_rules = str_replace("<br />", "", $forum_rules);
  271. $query31 = "select NAME from {$db_prefix}categories WHERE ID='$parent'" ;
  272. $result31 = mysql_query($query31) or die("attachments.php - Error in query: $query31") ;
  273. $parent_name = strip_slashes(mysql_result($result31, 0));
  274. template_hook("pages/admin/categories.template.php", "5");
  275. $query34 = "select ID, NAME, PARENT from {$db_prefix}categories WHERE PARENT='0' AND ID!='$id'";
  276. $result34 = mysql_query($query34) or die("attachments.php - Error in query: $query34") ;
  277. while ($results34 = mysql_fetch_array($result34))
  278. {
  279. $id = $results34['ID'];
  280. $name = strip_slashes($results34['NAME']);
  281. $parent = $results34['PARENT'];
  282. template_hook("pages/admin/categories.template.php", "6");
  283. $query4 = "select ID, NAME from {$db_prefix}categories WHERE PARENT='$id' AND ID!='$category_edit_id'";
  284. $result4 = mysql_query($query4) or die("categories.php - Error in query: $query4") ;
  285. while ($results4 = mysql_fetch_array($result4))
  286. {
  287. $id = $results4['ID'];
  288. $name = strip_slashes($results4['NAME']);
  289. template_hook("pages/admin/categories.template.php", "7");
  290. }
  291. }
  292. template_hook("pages/admin/categories.template.php", "8");
  293. list_themes("themes/");
  294. template_hook("pages/admin/categories.template.php", "27");
  295. }
  296. }
  297. elseif ($_GET['func'] == 'new')
  298. {
  299. $token_id = md5(microtime());
  300. $token = md5(uniqid(rand(),true));
  301. $token_name = "token_categories_new_$token_id";
  302. $_SESSION[$token_name] = $token;
  303. template_hook("pages/admin/categories.template.php", "10");
  304. if ($_GET['id'] != '')
  305. {
  306. $id = escape_string($_GET['id']);
  307. $query3 = "select ID, NAME, PARENT from {$db_prefix}categories WHERE ID='$id'";
  308. }
  309. else
  310. {
  311. $query3 = "select ID, NAME, PARENT from {$db_prefix}categories WHERE PARENT='0'";
  312. echo "<option value='0'>".$lang_admin['categories_edit_parent_no']."</option>";
  313. }
  314. $result3 = mysql_query($query3) or die("categories.php - Error in query: $query3") ;
  315. while ($results3 = mysql_fetch_array($result3))
  316. {
  317. $id = $results3['ID'];
  318. $name = strip_slashes($results3['NAME']);
  319. $parent = $results3['PARENT'];
  320. template_hook("pages/admin/categories.template.php", "11");
  321. if ($_GET['id'] != '')
  322. {
  323. $query4 = "select ID, NAME from {$db_prefix}categories WHERE PARENT='$id'";
  324. $result4 = mysql_query($query4) or die("categories.php - Error in query: $query4") ;
  325. while ($results4 = mysql_fetch_array($result4))
  326. {
  327. $id = $results4['ID'];
  328. $name = strip_slashes($results4['NAME']);
  329. template_hook("pages/admin/categories.template.php", "12");
  330. }
  331. }
  332. }
  333. template_hook("pages/admin/categories.template.php", "13");
  334. list_themes("themes/");
  335. template_hook("pages/admin/categories.template.php", "26");
  336. }
  337. else
  338. {
  339. $token_id = md5(microtime());
  340. $token = md5(uniqid(rand(),true));
  341. $token_name = "token_categories_reorder_$token_id";
  342. $_SESSION[$token_name] = $token;
  343. template_hook("pages/admin/categories.template.php", "14");
  344. $query3 = "select ID, NAME, DESCRIPTION, FORUM_ORDER from {$db_prefix}categories WHERE PARENT='0' ORDER BY FORUM_ORDER, ID asc" ;
  345. $result3 = mysql_query($query3) or die("categories.php - Error in query: $query3") ;
  346. $number_of_forums=mysql_num_rows($result3);
  347. while ($results3 = mysql_fetch_array($result3)){
  348. $id = $results3['ID'];
  349. $parent_id = $results3['ID'];
  350. $name = strip_slashes($results3['NAME']);
  351. $description = strip_slashes($results3['DESCRIPTION']);
  352. $forum_order = $results3['FORUM_ORDER'];
  353. template_hook("pages/admin/categories.template.php", "15");
  354. $root_counter="1";
  355. for ( $root_counter = $counted; $root_counter <= $number_of_forums; $root_counter += 1) {
  356. template_hook("pages/admin/categories.template.php", "16");
  357. }
  358. template_hook("pages/admin/categories.template.php", "17");
  359. $query4 = "select ID, NAME, DESCRIPTION, FORUM_ORDER, READ_ONLY from {$db_prefix}categories WHERE PARENT='$id' ORDER BY FORUM_ORDER, ID asc" ;
  360. $result4 = mysql_query($query4) or die("categories.php - Error in query: $query4") ;
  361. $number_of_sub_forums=mysql_num_rows($result4);
  362. while ($results4 = mysql_fetch_array($result4)){
  363. $id = $results4['ID'];
  364. $name = strip_slashes($results4['NAME']);
  365. $read_only = $results4['READ_ONLY'];
  366. $description = strip_slashes($results4['DESCRIPTION']);
  367. $forum_order = $results4['FORUM_ORDER'];
  368. $sub_counter="1";
  369. template_hook("pages/admin/categories.template.php", "18");
  370. for ( $sub_counter = $counted; $sub_counter <= $number_of_sub_forums; $sub_counter += 1) {
  371. template_hook("pages/admin/categories.template.php", "19");
  372. }
  373. template_hook("pages/admin/categories.template.php", "20");
  374. // sub-forums...
  375. $sub_counter_two="0";
  376. $query_sub = "select ID, NAME, DESCRIPTION, FORUM_ORDER, READ_ONLY from {$db_prefix}categories WHERE PARENT='$id' ORDER BY FORUM_ORDER, ID asc" ;
  377. $result_sub = mysql_query($query_sub) or die("categories.php - Error in query: $query_sub") ;
  378. $number_of_sub_forums_two=mysql_num_rows($result_sub);
  379. while ($results_sub = mysql_fetch_array($result_sub)){
  380. $id = $results_sub['ID'];
  381. $name = strip_slashes($results_sub['NAME']);
  382. $read_only = $results_sub['READ_ONLY'];
  383. $description = strip_slashes($results_sub['DESCRIPTION']);
  384. $forum_order_two = $results_sub['FORUM_ORDER'];
  385. $sub_counter_two="1";
  386. template_hook("pages/admin/categories.template.php", "21");
  387. for ( $sub_counter_two = $counted_two; $sub_counter_two <= $number_of_sub_forums_two; $sub_counter_two += 1) {
  388. template_hook("pages/admin/categories.template.php", "22");
  389. }
  390. template_hook("pages/admin/categories.template.php", "23");
  391. }
  392. }
  393. template_hook("pages/admin/categories.template.php", "24");
  394. }
  395. template_hook("pages/admin/categories.template.php", "25");
  396. }
  397. template_hook("pages/admin/categories.template.php", "end");
  398. ?>