punbb/admin/ranks.php
changeset 6 5e1f1e916419
equal deleted inserted replaced
5:e3d7322305bf 6:5e1f1e916419
       
     1 <?php
       
     2 /***********************************************************************
       
     3 
       
     4   Copyright (C) 2002-2008  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 // if (!defined('PUN_ROOT'))
       
    27 // 	define('PUN_ROOT', '../');
       
    28 // require PUN_ROOT.'include/common.php';
       
    29 require PUN_ROOT.'include/common_admin.php';
       
    30 
       
    31 // import globals (I really hope this isn't dangerous)
       
    32 foreach ( $GLOBALS as $key => $_ )
       
    33 {
       
    34   $$key =& $GLOBALS[$key];
       
    35 }
       
    36 
       
    37 ($hook = get_hook('ark_start')) ? eval($hook) : null;
       
    38 
       
    39 if ($session->user_level < USER_LEVEL_ADMIN)
       
    40 	message($lang_common['No permission']);
       
    41 
       
    42 // Load the admin.php language file
       
    43 require PUN_ROOT.'lang/'.$pun_user['language'].'/admin.php';
       
    44 $GLOBALS['lang_admin'] = $lang_admin;
       
    45 
       
    46 
       
    47 // Add a rank
       
    48 if (isset($_POST['add_rank']))
       
    49 {
       
    50 	$rank = trim($_POST['new_rank']);
       
    51 	$min_posts = intval($_POST['new_min_posts']);
       
    52 
       
    53 	if ($rank == '')
       
    54 		message($lang_admin['Title message']);
       
    55 
       
    56 	if ($min_posts < 0)
       
    57 		message($lang_admin['Min posts message']);
       
    58 
       
    59 	($hook = get_hook('ark_add_rank_form_submitted')) ? eval($hook) : null;
       
    60 
       
    61 	// Make sure there isn't already a rank with the same min_posts value
       
    62 	$query = array(
       
    63 		'SELECT'	=> '1',
       
    64 		'FROM'		=> 'ranks AS r',
       
    65 		'WHERE'		=> 'min_posts='.$min_posts
       
    66 	);
       
    67 
       
    68 	($hook = get_hook('ark_qr_check_rank_collision')) ? eval($hook) : null;
       
    69 	$result = $pun_db->query_build($query) or error(__FILE__, __LINE__);
       
    70 	if ($pun_db->num_rows($result))
       
    71 		message(sprintf($lang_admin['Min posts occupied message'], $min_posts));
       
    72 
       
    73 	$query = array(
       
    74 		'INSERT'	=> 'rank, min_posts',
       
    75 		'INTO'		=> 'ranks',
       
    76 		'VALUES'	=> '\''.$pun_db->escape($rank).'\', '.$min_posts
       
    77 	);
       
    78 
       
    79 	($hook = get_hook('ark_qr_add_rank')) ? eval($hook) : null;
       
    80 	$pun_db->query_build($query) or error(__FILE__, __LINE__);
       
    81 
       
    82 	// Regenerate the ranks cache
       
    83 	require_once PUN_ROOT.'include/cache.php';
       
    84 	generate_ranks_cache();
       
    85 
       
    86 	pun_redirect(pun_link($pun_url['admin_ranks']), $lang_admin['Rank added'].' '.$lang_admin['Redirect']);
       
    87 }
       
    88 
       
    89 
       
    90 // Update a rank
       
    91 else if (isset($_POST['update']))
       
    92 {
       
    93 	$id = intval(key($_POST['update']));
       
    94 
       
    95 	$rank = trim($_POST['rank'][$id]);
       
    96 	$min_posts = intval($_POST['min_posts'][$id]);
       
    97 
       
    98 	if ($rank == '')
       
    99 		message($lang_admin['Title message']);
       
   100 
       
   101 	if ($min_posts < 0)
       
   102 		message($lang_admin['Min posts message']);
       
   103 
       
   104 	($hook = get_hook('ark_update_form_submitted')) ? eval($hook) : null;
       
   105 
       
   106 	// Make sure there isn't already a rank with the same min_posts value
       
   107 	$query = array(
       
   108 		'SELECT'	=> '1',
       
   109 		'FROM'		=> 'ranks AS r',
       
   110 		'WHERE'		=> 'id!='.$id.' AND min_posts='.$min_posts
       
   111 	);
       
   112 
       
   113 	($hook = get_hook('ark_qr_check_rank_collision2')) ? eval($hook) : null;
       
   114 	$result = $pun_db->query_build($query) or error(__FILE__, __LINE__);
       
   115 	if ($pun_db->num_rows($result))
       
   116 		message(sprintf($lang_admin['Min posts occupied message'], $min_posts));
       
   117 
       
   118 	$query = array(
       
   119 		'UPDATE'	=> 'ranks',
       
   120 		'SET'		=> 'rank=\''.$pun_db->escape($rank).'\', min_posts='.$min_posts,
       
   121 		'WHERE'		=> 'id='.$id
       
   122 	);
       
   123 
       
   124 	($hook = get_hook('ark_qr_update_rank')) ? eval($hook) : null;
       
   125 	$pun_db->query_build($query) or error(__FILE__, __LINE__);
       
   126 
       
   127 	// Regenerate the ranks cache
       
   128 	require_once PUN_ROOT.'include/cache.php';
       
   129 	generate_ranks_cache();
       
   130 
       
   131 	pun_redirect(pun_link($pun_url['admin_ranks']), $lang_admin['Rank updated'].' '.$lang_admin['Redirect']);
       
   132 }
       
   133 
       
   134 
       
   135 // Remove a rank
       
   136 else if (isset($_POST['remove']))
       
   137 {
       
   138 	$id = intval(key($_POST['remove']));
       
   139 
       
   140 	($hook = get_hook('ark_remove_form_submitted')) ? eval($hook) : null;
       
   141 
       
   142 	$query = array(
       
   143 		'DELETE'	=> 'ranks',
       
   144 		'WHERE'		=> 'id='.$id
       
   145 	);
       
   146 
       
   147 	($hook = get_hook('ark_qr_delete_rank')) ? eval($hook) : null;
       
   148 	$pun_db->query_build($query) or error(__FILE__, __LINE__);
       
   149 
       
   150 	// Regenerate the ranks cache
       
   151 	require_once PUN_ROOT.'include/cache.php';
       
   152 	generate_ranks_cache();
       
   153 
       
   154 	pun_redirect(pun_link($pun_url['admin_ranks']), $lang_admin['Rank removed'].' '.$lang_admin['Redirect']);
       
   155 }
       
   156 
       
   157 
       
   158 // Load the cached ranks
       
   159 if (file_exists(PUN_CACHE_DIR.'cache_ranks.php'))
       
   160 	include PUN_CACHE_DIR.'cache_ranks.php';
       
   161 
       
   162 if (!defined('PUN_RANKS_LOADED'))
       
   163 {
       
   164 	require_once PUN_ROOT.'include/cache.php';
       
   165 	generate_ranks_cache();
       
   166 	require PUN_CACHE_DIR.'cache_ranks.php';
       
   167 }
       
   168 
       
   169 
       
   170 // Setup the form
       
   171 $pun_page['fld_count'] = $pun_page['set_count'] = 0;
       
   172 
       
   173 // Setup breadcrumbs
       
   174 $pun_page['crumbs'] = array(
       
   175 	array($pun_config['o_board_title'], pun_link($pun_url['index'])),
       
   176 	array($lang_admin['Forum administration'], pun_link($pun_url['admin_index'])),
       
   177 	$lang_admin['Ranks']
       
   178 );
       
   179 
       
   180 ($hook = get_hook('ark_pre_header_load')) ? eval($hook) : null;
       
   181 
       
   182 define('PUN_PAGE_SECTION', 'users');
       
   183 define('PUN_PAGE', 'admin-ranks');
       
   184 require PUN_ROOT.'header.php';
       
   185 
       
   186 ?>
       
   187 <div id="pun-main" class="main sectioned admin">
       
   188 
       
   189 <?php echo generate_admin_menu(); ?>
       
   190 
       
   191 	<div class="main-head">
       
   192 		<h1><span>{ <?php echo end($pun_page['crumbs']) ?> }</span></h1>
       
   193 	</div>
       
   194 
       
   195 	<div class="main-content frm">
       
   196 		<div class="frm-head">
       
   197 			<h2><span><?php echo $lang_admin['Add new rank'] ?></span></h2>
       
   198 		</div>
       
   199 		<div class="frm-info">
       
   200 			<p><?php printf($lang_admin['Add rank intro'], '<strong><a href="'.pun_link($pun_url['admin_options_features']).'#fs4">'.$lang_admin['Settings'].' - '.$lang_admin['Features'].'</a></strong>') ?></p>
       
   201 		</div>
       
   202 		<form class="frm-form" method="post" accept-charset="utf-8" action="<?php echo pun_link($pun_url['admin_ranks']) ?>&amp;action=foo">
       
   203 			<div class="hidden">
       
   204 				<input type="hidden" name="csrf_token" value="<?php echo generate_form_token(pun_link($pun_url['admin_ranks']).'&action=foo') ?>" />
       
   205 			</div>
       
   206 			<fieldset class="frm-set set<?php echo ++$pun_page['set_count'] ?>">
       
   207 				<legend class="frm-legend"><strong><?php echo $lang_admin['Add rank legend'] ?></strong></legend>
       
   208 <?php ($hook = get_hook('ark_add_rank_pre_rank')) ? eval($hook) : null; ?>
       
   209 				<div class="frm-fld text">
       
   210 					<label for="fld<?php echo ++$pun_page['fld_count'] ?>">
       
   211 					<span class="fld-label"><?php echo $lang_admin['Rank title'] ?></span><br />
       
   212 					<span class="fld-input"><input type="text" id="fld<?php echo $pun_page['fld_count'] ?>" name="new_rank" size="24" maxlength="50" /></span>
       
   213 					</label>
       
   214 				</div>
       
   215 <?php ($hook = get_hook('ark_add_rank_pre_min_posts')) ? eval($hook) : null; ?>
       
   216 				<div class="frm-fld">
       
   217 					<label for="fld<?php echo ++$pun_page['fld_count'] ?>">
       
   218 						<span class="fld-label"><?php echo $lang_admin['Min posts'] ?></span><br />
       
   219 						<span class="fld-input"><input type="text" id="fld<?php echo $pun_page['fld_count'] ?>" name="new_min_posts" size="7" maxlength="7" /></span>
       
   220 					</label>
       
   221 				</div>
       
   222 <?php ($hook = get_hook('ark_add_rank_end')) ? eval($hook) : null; ?>
       
   223 			</fieldset>
       
   224 			<div class="frm-buttons">
       
   225 				<span class="submit"><input type="submit" name="add_rank" value="<?php echo $lang_admin['Add rank'] ?>" /></span>
       
   226 			</div>
       
   227 		</form>
       
   228 	</div>
       
   229 <?php
       
   230 
       
   231 if (!empty($pun_ranks))
       
   232 {
       
   233 	// Reset fieldset counter
       
   234 	$pun_page['set_count'] = 0;
       
   235 
       
   236 ?>
       
   237 	<div class="main-content frm">
       
   238 		<div class="frm-head">
       
   239 			<h2><span><?php echo $lang_admin['Existing ranks intro'] ?></span></h2>
       
   240 		</div>
       
   241 		<form class="frm-form" method="post" accept-charset="utf-8" action="<?php echo pun_link($pun_url['admin_ranks']) ?>&amp;action=foo">
       
   242 			<div class="hidden">
       
   243 				<input type="hidden" name="csrf_token" value="<?php echo generate_form_token(pun_link($pun_url['admin_ranks']).'&action=foo') ?>" />
       
   244 			</div>
       
   245 <?php
       
   246 
       
   247 	foreach ($pun_ranks as $rank_key => $cur_rank)
       
   248 	{
       
   249 
       
   250 	?>
       
   251 			<fieldset class="frm-set set<?php echo ++$pun_page['set_count'] ?>">
       
   252 				<legend class="frm-legend"><span><?php echo $lang_admin['Rank'].' '.($rank_key + 1) ?></span></legend>
       
   253 <?php ($hook = get_hook('ark_edit_rank_pre_rank')) ? eval($hook) : null; ?>
       
   254 				<div class="frm-fld text">
       
   255 					<label for="fld<?php echo ++$pun_page['fld_count'] ?>">
       
   256 						<span class="fld-label"><?php echo $lang_admin['Rank title'] ?></span><br />
       
   257 						<span class="fld-input"><input type="text" id="fld<?php echo $pun_page['fld_count'] ?>" name="rank[<?php echo $cur_rank['id'] ?>]" value="<?php echo htmlspecialchars($cur_rank['rank']) ?>" size="24" maxlength="50" /></span>
       
   258 					</label>
       
   259 				</div>
       
   260 <?php ($hook = get_hook('ark_edit_rank_pre_min_posts')) ? eval($hook) : null; ?>
       
   261 				<div class="frm-fld text">
       
   262 					<label for="fld<?php echo ++$pun_page['fld_count'] ?>">
       
   263 						<span class="fld-label"><?php echo $lang_admin['Min posts'] ?></span><br />
       
   264 						<span class="fld-input"><input type="text" id="fld<?php echo $pun_page['fld_count'] ?>" name="min_posts[<?php echo $cur_rank['id'] ?>]" value="<?php echo $cur_rank['min_posts'] ?>" size="7" maxlength="7" /></span>
       
   265 					</label>
       
   266 					<span class="submit"><input type="submit" name="update[<?php echo $cur_rank['id'] ?>]" value="<?php echo $lang_admin['Update'] ?>" /> <input type="submit" name="remove[<?php echo $cur_rank['id'] ?>]" value="<?php echo $lang_admin['Remove'] ?>" /></span>
       
   267 				</div>
       
   268 <?php ($hook = get_hook('ark_edit_rank_end')) ? eval($hook) : null; ?>
       
   269 			</fieldset>
       
   270 	<?php
       
   271 
       
   272 	}
       
   273 
       
   274 ?>
       
   275 		</form>
       
   276 	</div>
       
   277 <?php
       
   278 
       
   279 }
       
   280 else
       
   281 {
       
   282 
       
   283 ?>
       
   284 	<div class="main-content frm">
       
   285 		<div class="frm-head">
       
   286 			<h2><span><?php echo $lang_admin['Existing ranks intro'] ?></span></h2>
       
   287 		</div>
       
   288 		<div class="frm-form">
       
   289 			<div class="frm-info">
       
   290 				<p><?php echo $lang_admin['No ranks'] ?></p>
       
   291 			</div>
       
   292 		</div>
       
   293 	</div>
       
   294 <?php
       
   295 
       
   296 }
       
   297 
       
   298 ?>
       
   299 </div>
       
   300 <?php
       
   301 
       
   302 require PUN_ROOT.'footer.php';