PageRenderTime 25ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/legacy/includes/pages/admin/cache.php

http://novaboard.googlecode.com/
PHP | 305 lines | 192 code | 77 blank | 36 comment | 21 complexity | ca519cc8f24ed7557690577b04a11889 MD5 | raw file
Possible License(s): AGPL-3.0
  1. <?php
  2. /*
  3. +--------------------------------------------------------------------------
  4. | NovaBoard
  5. | ========================================
  6. | By The NovaBoard team
  7. | Released under the Artistic License 2.0
  8. | http://www.novaboard.net
  9. | ======================================== |+--------------------------------------------------------------------------
  10. | cache.php - cache & purge options
  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/cache.template.php", "start");
  17. if ($can_change_forum_settings == 0)
  18. {
  19. nova_redirect("index.php?page=error&error=11","error/11");
  20. exit;
  21. }
  22. if ($_GET['func']=='posts')
  23. {
  24. // Do post counts
  25. // Now get member id...
  26. $query212 = "select ID from {$db_prefix}members ORDER BY ID desc" ;
  27. $result212 = mysql_query($query212) or die("cache.php - Error in query: $query212") ;
  28. while ($results212 = mysql_fetch_array($result212))
  29. {
  30. $member_id = strip_slashes($results212['ID']);
  31. $counted_posts="0";
  32. // First get the forum...
  33. $query211 = "select ID from {$db_prefix}categories WHERE POST_COUNT='1' ORDER BY ID desc" ;
  34. $result211 = mysql_query($query211) or die("cache.php - Error in query: $query211") ;
  35. while ($results211 = mysql_fetch_array($result211))
  36. {
  37. $id = strip_slashes($results211['ID']);
  38. // Now count how many posts that member made,
  39. // and enter it into database
  40. $query213 = "select ID from {$db_prefix}posts WHERE MEMBER='$member_id' AND FORUM_ID='$id'" ;
  41. $result213 = mysql_query($query213) or die("cache.php - Error in query: $query213") ;
  42. $posts = mysql_num_rows($result213);
  43. $counted_posts = $counted_posts + $posts;
  44. }
  45. mysql_query("UPDATE {$db_prefix}members SET user_posts='$counted_posts' WHERE id = '$member_id'");
  46. }
  47. template_hook("pages/admin/cache.template.php", "1");
  48. template_hook("pages/admin/cache.template.php", "2");
  49. template_hook("pages/admin/cache.template.php", "3");
  50. }
  51. elseif ($_GET['func']=='verify')
  52. {
  53. // Remove unverified members
  54. mysql_query('DELETE FROM ' . $db_prefix . 'members WHERE verified != 1');
  55. // perform auto-cache
  56. include "scripts/php/auto_cache.php";
  57. template_hook("pages/admin/cache.template.php", "1");
  58. template_hook("pages/admin/cache.template.php", "4");
  59. template_hook("pages/admin/cache.template.php", "3");
  60. }
  61. elseif ($_GET['func']=='online')
  62. {
  63. // Reset most online
  64. mysql_query("UPDATE {$db_prefix}settings SET most_online='0', most_online_date = '0'");
  65. # Remove settings cache
  66. $Cache->delete('settings');
  67. template_hook("pages/admin/cache.template.php", "1");
  68. template_hook("pages/admin/cache.template.php", "5");
  69. template_hook("pages/admin/cache.template.php", "3");
  70. }
  71. elseif ($_GET['func']=='forums')
  72. {
  73. $token_id = $_POST['token_id'];
  74. $token_id = escape_string($token_id);
  75. $token_name = "token_cache_forums_$token_id";
  76. if (isset($_POST[$token_name]) && isset($_SESSION[$token_name]) && $_SESSION[$token_name] == $_POST[$token_name] && isset($_POST['forums']))
  77. {
  78. // Purge it bitch!
  79. // First, prepare the query...
  80. $forum = implode(",",$_POST['forums']);
  81. $forum = escape_string($forum);
  82. $locked = escape_string($_POST['locked']);
  83. $date = escape_string($_POST['date']);
  84. // convert days to seconds...
  85. $date=($date*24*60*60);
  86. $current_time=time();
  87. $date=($current_time - $date);
  88. if ($locked=='1')
  89. {
  90. // first, find any topics that had a REPLY that is older than
  91. // what was specified..
  92. $query212 = "select TOPIC_ID from {$db_prefix}posts WHERE FORUM_ID IN($forum) AND locked='1' AND LAST_POST_TIME > '$date'" ;
  93. $result212 = mysql_query($query212) or die("cache.php - Error in query: $query212") ;
  94. while ($results212 = mysql_fetch_array($result212))
  95. {
  96. $topic_id = strip_slashes($results212['TOPIC_ID']);
  97. // Now remove any posts that match that topic_id...
  98. $query215 = "select ID from {$db_prefix}posts WHERE TOPIC_ID='$topic_id'" ;
  99. $result215 = mysql_query($query215) or die("delete.php - Error in query: $query215") ;
  100. while ($results215 = mysql_fetch_array($result215))
  101. {
  102. $remove_id = strip_slashes($results215['ID']);
  103. // first, delete attachments associated with these posts...
  104. $query2121 = "select FILENAME from {$db_prefix}attachments WHERE POSTID='$remove_id'" ;
  105. $result2121 = mysql_query($query2121) or die("delete.php - Error in query: $query2121") ;
  106. while ($results2121 = mysql_fetch_array($result2121))
  107. {
  108. $filename = strip_slashes($results2121['FILENAME']);
  109. foreach (glob("uploads/attachments/$filename") as $filename_original)
  110. {
  111. unlink($filename_original);
  112. }
  113. foreach (glob("uploads/attachments/t_$filename") as $filename_thumb)
  114. {
  115. unlink($filename_thumb);
  116. }
  117. mysql_query("DELETE FROM {$db_prefix}attachments WHERE postid ='$remove_id'");
  118. }
  119. }
  120. // now remove the posts
  121. mysql_query("DELETE FROM {$db_prefix}posts WHERE topic_id = '$topic_id'");
  122. }
  123. template_hook("pages/admin/cache.template.php", "1");
  124. template_hook("pages/admin/cache.template.php", "7");
  125. template_hook("pages/admin/cache.template.php", "3");
  126. }
  127. else
  128. {
  129. // first, find any topics that had a REPLY that is older than
  130. // what was specified..
  131. $query212 = "select TOPIC_ID from {$db_prefix}posts WHERE FORUM_ID IN($forum) AND LAST_POST_TIME > '$date'" ;
  132. $result212 = mysql_query($query212) or die("cache.php - Error in query: $query212") ;
  133. while ($results212 = mysql_fetch_array($result212))
  134. {
  135. $topic_id = strip_slashes($results212['TOPIC_ID']);
  136. // Now remove any posts that match that topic_id...
  137. $query215 = "select ID from {$db_prefix}posts WHERE TOPIC_ID='$topic_id'" ;
  138. $result215 = mysql_query($query215) or die("delete.php - Error in query: $query215") ;
  139. while ($results215 = mysql_fetch_array($result215))
  140. {
  141. $remove_id = strip_slashes($results215['ID']);
  142. // first, delete attachments associated with these posts...
  143. $query2121 = "select FILENAME from {$db_prefix}attachments WHERE POSTID='$remove_id'" ;
  144. $result2121 = mysql_query($query2121) or die("delete.php - Error in query: $query2121") ;
  145. while ($results2121 = mysql_fetch_array($result2121))
  146. {
  147. $filename = strip_slashes($results2121['FILENAME']);
  148. foreach (glob("uploads/attachments/$filename") as $filename_original)
  149. {
  150. unlink($filename_original);
  151. }
  152. foreach (glob("uploads/attachments/t_$filename") as $filename_thumb)
  153. {
  154. unlink($filename_thumb);
  155. }
  156. mysql_query("DELETE FROM {$db_prefix}attachments WHERE postid ='$remove_id'");
  157. }
  158. }
  159. mysql_query("DELETE FROM {$db_prefix}posts WHERE topic_id = '$topic_id'");
  160. }
  161. }
  162. template_hook("pages/admin/cache.template.php", "1");
  163. template_hook("pages/admin/cache.template.php", "7");
  164. template_hook("pages/admin/cache.template.php", "3");
  165. // perform auto-cache
  166. include "scripts/php/auto_cache.php";
  167. }
  168. else
  169. {
  170. nova_redirect("index.php?page=error&error=28","error/28");
  171. }
  172. }
  173. elseif ($_GET['func']=='readall')
  174. {
  175. // put read all date into members profiles
  176. $read_all=time();
  177. mysql_query("UPDATE {$db_prefix}members SET read_all_posts='$read_all'");
  178. // Now empty the read_all table
  179. mysql_query("DELETE FROM {$db_prefix}posts_read");
  180. template_hook("pages/admin/cache.template.php", "1");
  181. template_hook("pages/admin/cache.template.php", "8");
  182. template_hook("pages/admin/cache.template.php", "3");
  183. }
  184. elseif ($_GET['func']=='messages')
  185. {
  186. // Remove deleted private messages
  187. mysql_query('DELETE FROM ' . $db_prefix . 'messages WHERE hidden = 1 AND hidden_from = 1 AND title != ""');
  188. template_hook("pages/admin/cache.template.php", "1");
  189. template_hook("pages/admin/cache.template.php", "9");
  190. template_hook("pages/admin/cache.template.php", "3");
  191. }
  192. else
  193. {
  194. $token_id = md5(microtime());
  195. $token = md5(uniqid(rand(),true));
  196. $token_name = "token_cache_forums_$token_id";
  197. $_SESSION[$token_name] = $token;
  198. template_hook("pages/admin/cache.template.php", "1");
  199. template_hook("pages/admin/cache.template.php", "10");
  200. $query211 = "select ID, NAME from {$db_prefix}categories WHERE PARENT='0' ORDER BY FORUM_ORDER asc, ID asc" ;
  201. $result211 = mysql_query($query211) or die("topic.php - Error in query: $query211") ;
  202. while ($results211 = mysql_fetch_array($result211))
  203. {
  204. $parent_id = strip_slashes($results211['ID']);
  205. $parent_name = strip_slashes($results211['NAME']);
  206. template_hook("pages/admin/cache.template.php", "11");
  207. $query2 = "select ID, NAME from {$db_prefix}categories WHERE PARENT='$parent_id' ORDER BY FORUM_ORDER asc, ID asc" ;
  208. $result2 = mysql_query($query2) or die("topic.php - Error in query: $query2") ;
  209. while ($results2 = mysql_fetch_array($result2))
  210. {
  211. $forum_id = strip_slashes($results2['ID']);
  212. $forum_name = strip_slashes($results2['NAME']);
  213. template_hook("pages/admin/cache.template.php", "12");
  214. $query_sub = "select ID, NAME from {$db_prefix}categories WHERE PARENT='$forum_id' ORDER BY FORUM_ORDER asc, ID desc" ;
  215. $result_sub = mysql_query($query_sub) or die("move.php - Error in query: $query_sub") ;
  216. while ($results_sub = mysql_fetch_array($result_sub))
  217. {
  218. $forum_sub_id = strip_slashes($results_sub['ID']);
  219. $forum_sub_name = strip_slashes($results_sub['NAME']);
  220. template_hook("pages/admin/cache.template.php", "13");
  221. }
  222. }
  223. }
  224. template_hook("pages/admin/cache.template.php", "14");
  225. }
  226. template_hook("pages/admin/cache.template.php", "end");
  227. ?>