PageRenderTime 46ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 1ms

/website/forum/admin/admin_ranks.php

https://github.com/openaustralia/publicwhip-matthew
PHP | 349 lines | 278 code | 35 blank | 36 comment | 33 complexity | fb05f582f0f391df27e66f09fff77222 MD5 | raw file
Possible License(s): AGPL-1.0, BSD-3-Clause
  1. <?php
  2. /***************************************************************************
  3. * admin_ranks.php
  4. * -------------------
  5. * begin : Thursday, Jul 12, 2001
  6. * copyright : (C) 2001 The phpBB Group
  7. * email : support@phpbb.com
  8. *
  9. * $Id: admin_ranks.php,v 1.2 2007/05/20 07:21:34 frabcus Exp $
  10. *
  11. ***************************************************************************/
  12. /***************************************************************************
  13. *
  14. * This program is free software; you can redistribute it and/or modify
  15. * it under the terms of the GNU General Public License as published by
  16. * the Free Software Foundation; either version 2 of the License, or
  17. * (at your option) any later version.
  18. *
  19. ***************************************************************************/
  20. if( !empty($setmodules) )
  21. {
  22. $file = basename(__FILE__);
  23. $module['Users']['Ranks'] = $file;
  24. return;
  25. }
  26. define('IN_PHPBB', 1);
  27. //
  28. // Let's set the root dir for phpBB
  29. //
  30. $phpbb_root_path = "./../";
  31. require($phpbb_root_path . 'extension.inc');
  32. $cancel = ( isset($HTTP_POST_VARS['cancel']) ) ? true : false;
  33. $no_page_header = $cancel;
  34. require('./pagestart.' . $phpEx);
  35. if ($cancel)
  36. {
  37. redirect('admin/' . append_sid("admin_ranks.$phpEx", true));
  38. }
  39. if( isset($HTTP_GET_VARS['mode']) || isset($HTTP_POST_VARS['mode']) )
  40. {
  41. $mode = (isset($HTTP_GET_VARS['mode'])) ? $HTTP_GET_VARS['mode'] : $HTTP_POST_VARS['mode'];
  42. $mode = htmlspecialchars($mode);
  43. }
  44. else
  45. {
  46. //
  47. // These could be entered via a form button
  48. //
  49. if( isset($HTTP_POST_VARS['add']) )
  50. {
  51. $mode = "add";
  52. }
  53. else if( isset($HTTP_POST_VARS['save']) )
  54. {
  55. $mode = "save";
  56. }
  57. else
  58. {
  59. $mode = "";
  60. }
  61. }
  62. // Restrict mode input to valid options
  63. $mode = ( in_array($mode, array('add', 'edit', 'save', 'delete')) ) ? $mode : '';
  64. if( $mode != "" )
  65. {
  66. if( $mode == "edit" || $mode == "add" )
  67. {
  68. //
  69. // They want to add a new rank, show the form.
  70. //
  71. $rank_id = ( isset($HTTP_GET_VARS['id']) ) ? intval($HTTP_GET_VARS['id']) : 0;
  72. $s_hidden_fields = "";
  73. if( $mode == "edit" )
  74. {
  75. if( empty($rank_id) )
  76. {
  77. message_die(GENERAL_MESSAGE, $lang['Must_select_rank']);
  78. }
  79. $sql = "SELECT * FROM " . RANKS_TABLE . "
  80. WHERE rank_id = $rank_id";
  81. if(!$result = $db->sql_query($sql))
  82. {
  83. message_die(GENERAL_ERROR, "Couldn't obtain rank data", "", __LINE__, __FILE__, $sql);
  84. }
  85. $rank_info = $db->sql_fetchrow($result);
  86. $s_hidden_fields .= '<input type="hidden" name="id" value="' . $rank_id . '" />';
  87. }
  88. else
  89. {
  90. $rank_info['rank_special'] = 0;
  91. }
  92. $s_hidden_fields .= '<input type="hidden" name="mode" value="save" />';
  93. $rank_is_special = ( $rank_info['rank_special'] ) ? "checked=\"checked\"" : "";
  94. $rank_is_not_special = ( !$rank_info['rank_special'] ) ? "checked=\"checked\"" : "";
  95. $template->set_filenames(array(
  96. "body" => "admin/ranks_edit_body.tpl")
  97. );
  98. $template->assign_vars(array(
  99. "RANK" => $rank_info['rank_title'],
  100. "SPECIAL_RANK" => $rank_is_special,
  101. "NOT_SPECIAL_RANK" => $rank_is_not_special,
  102. "MINIMUM" => ( $rank_is_special ) ? "" : $rank_info['rank_min'],
  103. "IMAGE" => ( $rank_info['rank_image'] != "" ) ? $rank_info['rank_image'] : "",
  104. "IMAGE_DISPLAY" => ( $rank_info['rank_image'] != "" ) ? '<img src="../' . $rank_info['rank_image'] . '" />' : "",
  105. "L_RANKS_TITLE" => $lang['Ranks_title'],
  106. "L_RANKS_TEXT" => $lang['Ranks_explain'],
  107. "L_RANK_TITLE" => $lang['Rank_title'],
  108. "L_RANK_SPECIAL" => $lang['Rank_special'],
  109. "L_RANK_MINIMUM" => $lang['Rank_minimum'],
  110. "L_RANK_IMAGE" => $lang['Rank_image'],
  111. "L_RANK_IMAGE_EXPLAIN" => $lang['Rank_image_explain'],
  112. "L_SUBMIT" => $lang['Submit'],
  113. "L_RESET" => $lang['Reset'],
  114. "L_YES" => $lang['Yes'],
  115. "L_NO" => $lang['No'],
  116. "S_RANK_ACTION" => append_sid("admin_ranks.$phpEx"),
  117. "S_HIDDEN_FIELDS" => $s_hidden_fields)
  118. );
  119. }
  120. else if( $mode == "save" )
  121. {
  122. //
  123. // Ok, they sent us our info, let's update it.
  124. //
  125. $rank_id = ( isset($HTTP_POST_VARS['id']) ) ? intval($HTTP_POST_VARS['id']) : 0;
  126. $rank_title = ( isset($HTTP_POST_VARS['title']) ) ? trim($HTTP_POST_VARS['title']) : "";
  127. $special_rank = ( $HTTP_POST_VARS['special_rank'] == 1 ) ? TRUE : 0;
  128. $min_posts = ( isset($HTTP_POST_VARS['min_posts']) ) ? intval($HTTP_POST_VARS['min_posts']) : -1;
  129. $rank_image = ( (isset($HTTP_POST_VARS['rank_image'])) ) ? trim($HTTP_POST_VARS['rank_image']) : "";
  130. if( $rank_title == "" )
  131. {
  132. message_die(GENERAL_MESSAGE, $lang['Must_select_rank']);
  133. }
  134. if( $special_rank == 1 )
  135. {
  136. $max_posts = -1;
  137. $min_posts = -1;
  138. }
  139. //
  140. // The rank image has to be a jpg, gif or png
  141. //
  142. if($rank_image != "")
  143. {
  144. if ( !preg_match("/(\.gif|\.png|\.jpg)$/is", $rank_image))
  145. {
  146. $rank_image = "";
  147. }
  148. }
  149. if ($rank_id)
  150. {
  151. if (!$special_rank)
  152. {
  153. $sql = "UPDATE " . USERS_TABLE . "
  154. SET user_rank = 0
  155. WHERE user_rank = $rank_id";
  156. if( !$result = $db->sql_query($sql) )
  157. {
  158. message_die(GENERAL_ERROR, $lang['No_update_ranks'], "", __LINE__, __FILE__, $sql);
  159. }
  160. }
  161. $sql = "UPDATE " . RANKS_TABLE . "
  162. SET rank_title = '" . str_replace("\'", "''", $rank_title) . "', rank_special = $special_rank, rank_min = $min_posts, rank_image = '" . str_replace("\'", "''", $rank_image) . "'
  163. WHERE rank_id = $rank_id";
  164. $message = $lang['Rank_updated'];
  165. }
  166. else
  167. {
  168. $sql = "INSERT INTO " . RANKS_TABLE . " (rank_title, rank_special, rank_min, rank_image)
  169. VALUES ('" . str_replace("\'", "''", $rank_title) . "', $special_rank, $min_posts, '" . str_replace("\'", "''", $rank_image) . "')";
  170. $message = $lang['Rank_added'];
  171. }
  172. if( !$result = $db->sql_query($sql) )
  173. {
  174. message_die(GENERAL_ERROR, "Couldn't update/insert into ranks table", "", __LINE__, __FILE__, $sql);
  175. }
  176. $message .= "<br /><br />" . sprintf($lang['Click_return_rankadmin'], "<a href=\"" . append_sid("admin_ranks.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>");
  177. message_die(GENERAL_MESSAGE, $message);
  178. }
  179. else if( $mode == "delete" )
  180. {
  181. //
  182. // Ok, they want to delete their rank
  183. //
  184. if( isset($HTTP_POST_VARS['id']) || isset($HTTP_GET_VARS['id']) )
  185. {
  186. $rank_id = ( isset($HTTP_POST_VARS['id']) ) ? intval($HTTP_POST_VARS['id']) : intval($HTTP_GET_VARS['id']);
  187. }
  188. else
  189. {
  190. $rank_id = 0;
  191. }
  192. $confirm = isset($HTTP_POST_VARS['confirm']);
  193. if( $rank_id && $confirm )
  194. {
  195. $sql = "DELETE FROM " . RANKS_TABLE . "
  196. WHERE rank_id = $rank_id";
  197. if( !$result = $db->sql_query($sql) )
  198. {
  199. message_die(GENERAL_ERROR, "Couldn't delete rank data", "", __LINE__, __FILE__, $sql);
  200. }
  201. $sql = "UPDATE " . USERS_TABLE . "
  202. SET user_rank = 0
  203. WHERE user_rank = $rank_id";
  204. if( !$result = $db->sql_query($sql) )
  205. {
  206. message_die(GENERAL_ERROR, $lang['No_update_ranks'], "", __LINE__, __FILE__, $sql);
  207. }
  208. $message = $lang['Rank_removed'] . "<br /><br />" . sprintf($lang['Click_return_rankadmin'], "<a href=\"" . append_sid("admin_ranks.$phpEx") . "\">", "</a>") . "<br /><br />" . sprintf($lang['Click_return_admin_index'], "<a href=\"" . append_sid("index.$phpEx?pane=right") . "\">", "</a>");
  209. message_die(GENERAL_MESSAGE, $message);
  210. }
  211. elseif( $rank_id && !$confirm)
  212. {
  213. // Present the confirmation screen to the user
  214. $template->set_filenames(array(
  215. 'body' => 'admin/confirm_body.tpl')
  216. );
  217. $hidden_fields = '<input type="hidden" name="mode" value="delete" /><input type="hidden" name="id" value="' . $rank_id . '" />';
  218. $template->assign_vars(array(
  219. 'MESSAGE_TITLE' => $lang['Confirm'],
  220. 'MESSAGE_TEXT' => $lang['Confirm_delete_rank'],
  221. 'L_YES' => $lang['Yes'],
  222. 'L_NO' => $lang['No'],
  223. 'S_CONFIRM_ACTION' => append_sid("admin_ranks.$phpEx"),
  224. 'S_HIDDEN_FIELDS' => $hidden_fields)
  225. );
  226. }
  227. else
  228. {
  229. message_die(GENERAL_MESSAGE, $lang['Must_select_rank']);
  230. }
  231. }
  232. $template->pparse("body");
  233. include('./page_footer_admin.'.$phpEx);
  234. }
  235. //
  236. // Show the default page
  237. //
  238. $template->set_filenames(array(
  239. "body" => "admin/ranks_list_body.tpl")
  240. );
  241. $sql = "SELECT * FROM " . RANKS_TABLE . "
  242. ORDER BY rank_min ASC, rank_special ASC";
  243. if( !$result = $db->sql_query($sql) )
  244. {
  245. message_die(GENERAL_ERROR, "Couldn't obtain ranks data", "", __LINE__, __FILE__, $sql);
  246. }
  247. $rank_count = $db->sql_numrows($result);
  248. $rank_rows = $db->sql_fetchrowset($result);
  249. $template->assign_vars(array(
  250. "L_RANKS_TITLE" => $lang['Ranks_title'],
  251. "L_RANKS_TEXT" => $lang['Ranks_explain'],
  252. "L_RANK" => $lang['Rank_title'],
  253. "L_RANK_MINIMUM" => $lang['Rank_minimum'],
  254. "L_SPECIAL_RANK" => $lang['Rank_special'],
  255. "L_EDIT" => $lang['Edit'],
  256. "L_DELETE" => $lang['Delete'],
  257. "L_ADD_RANK" => $lang['Add_new_rank'],
  258. "L_ACTION" => $lang['Action'],
  259. "S_RANKS_ACTION" => append_sid("admin_ranks.$phpEx"))
  260. );
  261. for($i = 0; $i < $rank_count; $i++)
  262. {
  263. $rank = $rank_rows[$i]['rank_title'];
  264. $special_rank = $rank_rows[$i]['rank_special'];
  265. $rank_id = $rank_rows[$i]['rank_id'];
  266. $rank_min = $rank_rows[$i]['rank_min'];
  267. if( $special_rank == 1 )
  268. {
  269. $rank_min = $rank_max = "-";
  270. }
  271. $row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2'];
  272. $row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2'];
  273. $rank_is_special = ( $special_rank ) ? $lang['Yes'] : $lang['No'];
  274. $template->assign_block_vars("ranks", array(
  275. "ROW_COLOR" => "#" . $row_color,
  276. "ROW_CLASS" => $row_class,
  277. "RANK" => $rank,
  278. "SPECIAL_RANK" => $rank_is_special,
  279. "RANK_MIN" => $rank_min,
  280. "U_RANK_EDIT" => append_sid("admin_ranks.$phpEx?mode=edit&amp;id=$rank_id"),
  281. "U_RANK_DELETE" => append_sid("admin_ranks.$phpEx?mode=delete&amp;id=$rank_id"))
  282. );
  283. }
  284. $template->pparse("body");
  285. include('./page_footer_admin.'.$phpEx);
  286. ?>