diff -r 000000000000 -r f9ffdbd96607 punbb/admin_categories.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/punbb/admin_categories.php Wed Jul 11 21:01:48 2007 -0400 @@ -0,0 +1,258 @@ + PUN_ADMIN) + message($lang_common['No permission']); + + +// Add a new category +if (isset($_POST['add_cat'])) +{ + confirm_referrer('admin_categories.php'); + + $new_cat_name = trim($_POST['new_cat_name']); + if ($new_cat_name == '') + message('You must enter a name for the category.'); + + $db->query('INSERT INTO '.$db->prefix.'categories (cat_name) VALUES(\''.$db->escape($new_cat_name).'\')') or error('Unable to create category', __FILE__, __LINE__, $db->error()); + + redirect('admin_categories.php', 'Category added. Redirecting …'); +} + + +// Delete a category +else if (isset($_POST['del_cat']) || isset($_POST['del_cat_comply'])) +{ + confirm_referrer('admin_categories.php'); + + $cat_to_delete = intval($_POST['cat_to_delete']); + if ($cat_to_delete < 1) + message($lang_common['Bad request']); + + if (isset($_POST['del_cat_comply'])) // Delete a category with all forums and posts + { + @set_time_limit(0); + + $result = $db->query('SELECT id FROM '.$db->prefix.'forums WHERE cat_id='.$cat_to_delete) or error('Unable to fetch forum list', __FILE__, __LINE__, $db->error()); + $num_forums = $db->num_rows($result); + + for ($i = 0; $i < $num_forums; ++$i) + { + $cur_forum = $db->result($result, $i); + + // Prune all posts and topics + prune($cur_forum, 1, -1); + + // Delete the forum + $db->query('DELETE FROM '.$db->prefix.'forums WHERE id='.$cur_forum) or error('Unable to delete forum', __FILE__, __LINE__, $db->error()); + } + + // Locate any "orphaned redirect topics" and delete them + $result = $db->query('SELECT t1.id FROM '.$db->prefix.'topics AS t1 LEFT JOIN '.$db->prefix.'topics AS t2 ON t1.moved_to=t2.id WHERE t2.id IS NULL AND t1.moved_to IS NOT NULL') or error('Unable to fetch redirect topics', __FILE__, __LINE__, $db->error()); + $num_orphans = $db->num_rows($result); + + if ($num_orphans) + { + for ($i = 0; $i < $num_orphans; ++$i) + $orphans[] = $db->result($result, $i); + + $db->query('DELETE FROM '.$db->prefix.'topics WHERE id IN('.implode(',', $orphans).')') or error('Unable to delete redirect topics', __FILE__, __LINE__, $db->error()); + } + + // Delete the category + $db->query('DELETE FROM '.$db->prefix.'categories WHERE id='.$cat_to_delete) or error('Unable to delete category', __FILE__, __LINE__, $db->error()); + + // Regenerate the quickjump cache + require_once PUN_ROOT.'include/cache.php'; + generate_quickjump_cache(); + + redirect('admin_categories.php', 'Category deleted. Redirecting …'); + } + else // If the user hasn't comfirmed the delete + { + $result = $db->query('SELECT cat_name FROM '.$db->prefix.'categories WHERE id='.$cat_to_delete) or error('Unable to fetch category info', __FILE__, __LINE__, $db->error()); + $cat_name = $db->result($result); + + $page_title = pun_htmlspecialchars($pun_config['o_board_title']).' / Admin / Categories'; + require PUN_ROOT.'header.php'; + + generate_admin_menu('categories'); + +?> +
+

Category delete

+
+
+
+ +
+ Confirm delete category +
+

Are you sure that you want to delete the category ""?

+

WARNING! Deleting a category will delete all forums and posts (if any) in that category!

+
+
+
+

Go back

+
+
+
+
+ +query('SELECT id, disp_position FROM '.$db->prefix.'categories ORDER BY disp_position') or error('Unable to fetch category list', __FILE__, __LINE__, $db->error()); + $num_cats = $db->num_rows($result); + + for ($i = 0; $i < $num_cats; ++$i) + { + if ($cat_name[$i] == '') + message('You must enter a category name.'); + + if (!@preg_match('#^\d+$#', $cat_order[$i])) + message('Position must be an integer value.'); + + list($cat_id, $position) = $db->fetch_row($result); + + $db->query('UPDATE '.$db->prefix.'categories SET cat_name=\''.$db->escape($cat_name[$i]).'\', disp_position='.$cat_order[$i].' WHERE id='.$cat_id) or error('Unable to update category', __FILE__, __LINE__, $db->error()); + } + + // Regenerate the quickjump cache + require_once PUN_ROOT.'include/cache.php'; + generate_quickjump_cache(); + + redirect('admin_categories.php', 'Categories updated. Redirecting …'); +} + + +// Generate an array with all categories +$result = $db->query('SELECT id, cat_name, disp_position FROM '.$db->prefix.'categories ORDER BY disp_position') or error('Unable to fetch category list', __FILE__, __LINE__, $db->error()); +$num_cats = $db->num_rows($result); + +for ($i = 0; $i < $num_cats; ++$i) + $cat_list[] = $db->fetch_row($result); + + +$page_title = pun_htmlspecialchars($pun_config['o_board_title']).' / Admin / Categories'; +require PUN_ROOT.'header.php'; + +generate_admin_menu('categories'); + +?> +
+

Add/remove/edit categories

+
+
+
+
+ Add/delete categories +
+ + + + + + + + + +
Add a new category
+ + The name of the new category you want to add. You can edit the name of the category later (see below).Go to Forums to add forums to your new category. +
Delete a category
+ + Select the name of the category you want to delete. You will be asked to confirm your choice of category for deletion before it is deleted. +
+
+
+
+
+
+ Edit categories +
+ + + + + + + + + + + + + +
NamePosition 
 
+
+
+
+
+
+
+
+
+ +