punbb/admin_ranks.php
changeset 0 f9ffdbd96607
child 2 a8a21e1c7afa
equal deleted inserted replaced
-1:000000000000 0:f9ffdbd96607
       
     1 <?php
       
     2 /***********************************************************************
       
     3 
       
     4   Copyright (C) 2002-2005  Rickard Andersson (rickard@punbb.org)
       
     5 
       
     6   This file is part of PunBB.
       
     7 
       
     8   PunBB is free software; you can redistribute it and/or modify it
       
     9   under the terms of the GNU General Public License as published
       
    10   by the Free Software Foundation; either version 2 of the License,
       
    11   or (at your option) any later version.
       
    12 
       
    13   PunBB is distributed in the hope that it will be useful, but
       
    14   WITHOUT ANY WARRANTY; without even the implied warranty of
       
    15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
       
    16   GNU General Public License for more details.
       
    17 
       
    18   You should have received a copy of the GNU General Public License
       
    19   along with this program; if not, write to the Free Software
       
    20   Foundation, Inc., 59 Temple Place, Suite 330, Boston,
       
    21   MA  02111-1307  USA
       
    22 
       
    23 ************************************************************************/
       
    24 
       
    25 
       
    26 // Tell header.php to use the admin template
       
    27 define('PUN_ADMIN_CONSOLE', 1);
       
    28 
       
    29 define('PUN_ROOT', './');
       
    30 require PUN_ROOT.'include/common.php';
       
    31 require PUN_ROOT.'include/common_admin.php';
       
    32 
       
    33 
       
    34 if ($pun_user['g_id'] > PUN_ADMIN)
       
    35 	message($lang_common['No permission']);
       
    36 
       
    37 
       
    38 // Add a rank
       
    39 if (isset($_POST['add_rank']))
       
    40 {
       
    41 	confirm_referrer('admin_ranks.php');
       
    42 
       
    43 	$rank = trim($_POST['new_rank']);
       
    44 	$min_posts = $_POST['new_min_posts'];
       
    45 
       
    46 	if ($rank == '')
       
    47 		message('You must enter a rank title.');
       
    48 
       
    49 	if (!@preg_match('#^\d+$#', $min_posts))
       
    50 		message('Minimum posts must be a positive integer value.');
       
    51 
       
    52 	// Make sure there isn't already a rank with the same min_posts value
       
    53 	$result = $db->query('SELECT 1 FROM '.$db->prefix.'ranks WHERE min_posts='.$min_posts) or error('Unable to fetch rank info', __FILE__, __LINE__, $db->error());
       
    54 	if ($db->num_rows($result))
       
    55 		message('There is already a rank with a minimun posts value of '.$min_posts.'.');
       
    56 
       
    57 	$db->query('INSERT INTO '.$db->prefix.'ranks (rank, min_posts) VALUES(\''.$db->escape($rank).'\', '.$min_posts.')') or error('Unable to add rank', __FILE__, __LINE__, $db->error());
       
    58 
       
    59 	// Regenerate the ranks cache
       
    60 	require_once PUN_ROOT.'include/cache.php';
       
    61 	generate_ranks_cache();
       
    62 
       
    63 	redirect('admin_ranks.php', 'Rank added. Redirecting &hellip;');
       
    64 }
       
    65 
       
    66 
       
    67 // Update a rank
       
    68 else if (isset($_POST['update']))
       
    69 {
       
    70 	confirm_referrer('admin_ranks.php');
       
    71 
       
    72 	$id = intval(key($_POST['update']));
       
    73 
       
    74 	$rank = trim($_POST['rank'][$id]);
       
    75 	$min_posts = trim($_POST['min_posts'][$id]);
       
    76 
       
    77 	if ($rank == '')
       
    78 		message('You must enter a rank title.');
       
    79 
       
    80 	if (!@preg_match('#^\d+$#', $min_posts))
       
    81 		message('Minimum posts must be a positive integer value.');
       
    82 
       
    83 	// Make sure there isn't already a rank with the same min_posts value
       
    84 	$result = $db->query('SELECT 1 FROM '.$db->prefix.'ranks WHERE id!='.$id.' AND min_posts='.$min_posts) or error('Unable to fetch rank info', __FILE__, __LINE__, $db->error());
       
    85 	if ($db->num_rows($result))
       
    86 		message('There is already a rank with a minimun posts value of '.$min_posts.'.');
       
    87 
       
    88 	$db->query('UPDATE '.$db->prefix.'ranks SET rank=\''.$db->escape($rank).'\', min_posts='.$min_posts.' WHERE id='.$id) or error('Unable to update rank', __FILE__, __LINE__, $db->error());
       
    89 
       
    90 	// Regenerate the ranks cache
       
    91 	require_once PUN_ROOT.'include/cache.php';
       
    92 	generate_ranks_cache();
       
    93 
       
    94 	redirect('admin_ranks.php', 'Rank updated. Redirecting &hellip;');
       
    95 }
       
    96 
       
    97 
       
    98 // Remove a rank
       
    99 else if (isset($_POST['remove']))
       
   100 {
       
   101 	confirm_referrer('admin_ranks.php');
       
   102 
       
   103 	$id = intval(key($_POST['remove']));
       
   104 
       
   105 	$db->query('DELETE FROM '.$db->prefix.'ranks WHERE id='.$id) or error('Unable to delete rank', __FILE__, __LINE__, $db->error());
       
   106 
       
   107 	// Regenerate the ranks cache
       
   108 	require_once PUN_ROOT.'include/cache.php';
       
   109 	generate_ranks_cache();
       
   110 
       
   111 	redirect('admin_ranks.php', 'Rank removed. Redirecting &hellip;');
       
   112 }
       
   113 
       
   114 
       
   115 $page_title = pun_htmlspecialchars($pun_config['o_board_title']).' / Admin / Ranks';
       
   116 $focus_element = array('ranks', 'new_rank');
       
   117 require PUN_ROOT.'header.php';
       
   118 
       
   119 generate_admin_menu('ranks');
       
   120 
       
   121 ?>
       
   122 	<div class="blockform">
       
   123 		<h2><span>Ranks</span></h2>
       
   124 		<div class="box">
       
   125 			<form id="ranks" method="post" action="admin_ranks.php?action=foo">
       
   126 				<div class="inform">
       
   127 					<fieldset>
       
   128 						<legend>Add rank</legend>
       
   129 						<div class="infldset">
       
   130 							<p>Enter a rank and the minimum number of posts that a user has to have to aquire the rank. Different ranks cannot have the same value for minimum posts. If a title is set for a user, the title will be displayed instead of any rank. <strong>User ranks must be enabled in <a href="admin_options.php#ranks">Options</a> for this to have any effect.</strong></p>
       
   131 							<table  cellspacing="0">
       
   132 							<thead>
       
   133 								<tr>
       
   134 									<th class="tcl" scope="col">Rank&nbsp;title</th>
       
   135 									<th class="tc2" scope="col">Minimum&nbsp;posts</th>
       
   136 									<th class="hidehead" scope="col">Action</th>
       
   137 								</tr>
       
   138 							</thead>
       
   139 							<tbody>
       
   140 								<tr>
       
   141 									<td><input type="text" name="new_rank" size="24" maxlength="50" tabindex="1" /></td>
       
   142 									<td><input type="text" name="new_min_posts" size="7" maxlength="7" tabindex="2" /></td>
       
   143 									<td><input type="submit" name="add_rank" value=" Add " tabindex="3" /></td>
       
   144 								</tr>
       
   145 							</tbody>
       
   146 							</table>
       
   147 						</div>
       
   148 					</fieldset>
       
   149 				</div>
       
   150 				<div class="inform">
       
   151 					<fieldset>
       
   152 						<legend>Edit/remove ranks</legend>
       
   153 						<div class="infldset">
       
   154 <?php
       
   155 
       
   156 $result = $db->query('SELECT id, rank, min_posts FROM '.$db->prefix.'ranks ORDER BY min_posts') or error('Unable to fetch rank list', __FILE__, __LINE__, $db->error());
       
   157 if ($db->num_rows($result))
       
   158 {
       
   159 
       
   160 ?>
       
   161 							<table  cellspacing="0">
       
   162 							<thead>
       
   163 								<tr>
       
   164 									<th class="tcl" scope="col"><strong>Rank&nbsp;title</strong></th>
       
   165 									<th class="tc2" scope="col"><strong>Minimum&nbsp;Posts</strong></th>
       
   166 									<th class="hidehead" scope="col">Actions</th>
       
   167 								</tr>
       
   168 							</thead>
       
   169 							<tbody>
       
   170 <?php
       
   171 
       
   172 	while ($cur_rank = $db->fetch_assoc($result))
       
   173 		echo "\t\t\t\t\t\t\t\t".'<tr><td><input type="text" name="rank['.$cur_rank['id'].']" value="'.pun_htmlspecialchars($cur_rank['rank']).'" size="24" maxlength="50" /></td><td><input type="text" name="min_posts['.$cur_rank['id'].']" value="'.$cur_rank['min_posts'].'" size="7" maxlength="7" /></td><td><input type="submit" name="update['.$cur_rank['id'].']" value="Update" />&nbsp;<input type="submit" name="remove['.$cur_rank['id'].']" value="Remove" /></td></tr>'."\n";
       
   174 
       
   175 ?>
       
   176 							</tbody>
       
   177 							</table>
       
   178 <?php
       
   179 
       
   180 }
       
   181 else
       
   182 	echo "\t\t\t\t\t\t\t".'<p>No ranks in list.</p>'."\n";
       
   183 
       
   184 ?>
       
   185 						</div>
       
   186 					</fieldset>
       
   187 				</div>
       
   188 			</form>
       
   189 		</div>
       
   190 	</div>
       
   191 	<div class="clearer"></div>
       
   192 </div>
       
   193 <?php
       
   194 
       
   195 require PUN_ROOT.'footer.php';