2004-09-12 12:21:27 +00:00
< ? php // $Id$
2003-08-07 16:01:31 +00:00
// For most people, just lists the course categories
// Allows the admin to create, delete and rename course categories
2001-11-22 06:23:56 +00:00
2004-05-30 00:33:45 +00:00
require_once ( " ../config.php " );
require_once ( " lib.php " );
2001-11-22 06:23:56 +00:00
2006-08-18 07:27:05 +00:00
$categoryedit = optional_param ( 'categoryedit' , - 1 , PARAM_BOOL );
2006-04-11 20:39:30 +00:00
$delete = optional_param ( 'delete' , 0 , PARAM_INT );
$hide = optional_param ( 'hide' , 0 , PARAM_INT );
$show = optional_param ( 'show' , 0 , PARAM_INT );
$sure = optional_param ( 'sure' , '' , PARAM_ALPHANUM );
$move = optional_param ( 'move' , 0 , PARAM_INT );
$moveto = optional_param ( 'moveto' , - 1 , PARAM_INT );
$moveup = optional_param ( 'moveup' , 0 , PARAM_INT );
$movedown = optional_param ( 'movedown' , 0 , PARAM_INT );
2006-08-08 05:13:06 +00:00
$context = get_context_instance ( CONTEXT_SYSTEM , SITEID );
2005-06-14 09:21:09 +00:00
2003-08-07 16:01:31 +00:00
if ( ! $site = get_site ()) {
2007-02-05 07:27:07 +00:00
error ( 'Site isn\'t defined!' );
2003-08-07 16:01:31 +00:00
}
2004-01-14 08:27:40 +00:00
if ( $CFG -> forcelogin ) {
require_login ();
}
2006-09-08 08:46:26 +00:00
if ( has_capability ( 'moodle/category:update' , get_context_instance ( CONTEXT_SYSTEM , SITEID ))) {
2006-08-18 07:27:05 +00:00
if ( $categoryedit !== - 1 ) {
$USER -> categoryediting = $categoryedit ;
2003-08-07 16:01:31 +00:00
}
2006-04-11 20:39:30 +00:00
$adminediting = ! empty ( $USER -> categoryediting );
} else {
$adminediting = false ;
2003-08-07 16:01:31 +00:00
}
/// Unless it's an editing admin, just print the regular listing of courses/categories
if ( ! $adminediting ) {
2007-02-05 07:27:07 +00:00
$countcategories = count_records ( 'course_categories' );
2003-08-07 16:01:31 +00:00
2006-02-08 04:21:22 +00:00
if ( $countcategories > 1 || ( $countcategories == 1 && count_records ( 'course' ) > 200 )) {
2007-02-05 07:27:07 +00:00
$strcourses = get_string ( 'courses' );
$strcategories = get_string ( 'categories' );
2004-02-20 12:56:17 +00:00
print_header ( " $site->shortname : $strcategories " , $strcourses ,
2007-02-05 07:27:07 +00:00
$strcategories , '' , '' , true , update_categories_button ());
2004-02-20 12:56:17 +00:00
print_heading ( $strcategories );
2007-01-10 08:35:45 +00:00
print_box_start ( 'categorybox' );
2003-08-07 16:01:31 +00:00
print_whole_category_list ();
2007-01-10 08:35:45 +00:00
print_box_end ();
2003-08-11 09:45:50 +00:00
print_course_search ();
2003-08-07 16:01:31 +00:00
} else {
2007-02-05 07:27:07 +00:00
$strfulllistofcourses = get_string ( 'fulllistofcourses' );
2005-01-11 07:01:04 +00:00
print_header ( " $site->shortname : $strfulllistofcourses " , $strfulllistofcourses , $strfulllistofcourses ,
'' , '' , true , update_categories_button ());
2007-02-14 04:22:24 +00:00
print_box_start ( 'courseboxes' );
2007-02-14 04:56:26 +00:00
print_courses ( 0 );
2007-02-14 04:22:24 +00:00
print_box_end ();
2003-08-07 16:01:31 +00:00
}
2003-08-22 12:15:35 +00:00
2006-09-08 08:46:26 +00:00
/// I am not sure this context in the next has_capability call is correct.
2007-04-02 13:46:01 +00:00
if ( isloggedin () and ! isguest () and ! has_capability ( 'moodle/course:create' , get_context_instance ( CONTEXT_SYSTEM , SITEID )) and $CFG -> enablecourserequests ) { // Print link to request a new course
2007-02-05 07:27:07 +00:00
print_single_button ( 'request.php' , NULL , get_string ( 'courserequest' ), 'get' );
2006-07-31 09:18:52 +00:00
}
2006-09-12 08:56:10 +00:00
if ( has_capability ( 'moodle/course:create' , get_context_instance ( CONTEXT_SYSTEM , SITEID ))) { // Print link to create a new course
2007-03-30 15:36:52 +00:00
/// Get the 1st available category
$options = array ( 'category' => get_field ( 'course_categories' , 'id' , 'parent' , '0' ));
print_single_button ( 'edit.php' , $options , get_string ( 'addnewcourse' ), 'get' );
2003-08-22 12:15:35 +00:00
}
2006-09-08 15:53:24 +00:00
if ( has_capability ( 'moodle/site:approvecourse' , get_context_instance ( CONTEXT_SYSTEM , SITEID )) and ! empty ( $CFG -> enablecourserequests )) {
2007-02-05 07:27:07 +00:00
print_single_button ( 'pending.php' , NULL , get_string ( 'coursespending' ), 'get' );
2005-08-16 06:15:49 +00:00
}
2003-08-07 16:01:31 +00:00
print_footer ();
exit ;
}
/// From now on is all the admin functions
2006-09-02 13:14:57 +00:00
require_once ( $CFG -> libdir . '/adminlib.php' );
$adminroot = admin_get_root ();
admin_externalpage_setup ( 'coursemgmt' , $adminroot );
2006-08-18 07:27:05 +00:00
2003-08-07 16:01:31 +00:00
/// Print headings
2007-02-05 07:27:07 +00:00
$stradministration = get_string ( 'administration' );
$strcategories = get_string ( 'categories' );
$strcategory = get_string ( 'category' );
$strcourses = get_string ( 'courses' );
$stredit = get_string ( 'edit' );
$strdelete = get_string ( 'delete' );
$straction = get_string ( 'action' );
$straddnewcategory = get_string ( 'addnewcategory' );
2002-09-09 11:48:11 +00:00
2006-08-18 07:27:05 +00:00
2006-09-02 13:14:57 +00:00
admin_externalpage_print_header ( $adminroot );
2002-09-09 11:48:11 +00:00
2003-08-07 16:01:31 +00:00
print_heading ( $strcategories );
/// If data for a new category was submitted, then add it
2006-08-14 05:55:40 +00:00
if ( $form = data_submitted () and confirm_sesskey () and has_capability ( 'moodle/category:create' , $context )) {
2003-08-07 16:01:31 +00:00
if ( ! empty ( $form -> addcategory )) {
unset ( $newcategory );
2007-03-07 01:25:43 +00:00
$newcategory -> name = stripslashes_safe ( $form -> addcategory );
2003-08-07 16:01:31 +00:00
$newcategory -> sortorder = 999 ;
2007-02-05 07:27:07 +00:00
if ( ! insert_record ( 'course_categories' , $newcategory )) {
2007-02-28 06:25:22 +00:00
notify ( " Could not insert the new category ' " . format_string ( $newcategory -> name ) . " ' " );
2003-08-07 16:01:31 +00:00
} else {
2007-02-28 06:25:22 +00:00
notify ( get_string ( 'categoryadded' , '' , format_string ( $newcategory -> name )));
2003-08-07 16:01:31 +00:00
}
}
}
/// Delete a category if necessary
2005-06-14 09:21:09 +00:00
if ( ! empty ( $delete ) and confirm_sesskey ()) {
2006-09-20 20:31:09 +00:00
// context is coursecat, if not present admins should have it set in site level
$context = get_context_instance ( CONTEXT_COURSECAT , $delete );
2007-02-05 07:27:07 +00:00
if ( $deletecat = get_record ( 'course_categories' , 'id' , $delete ) and has_capability ( 'moodle/category:delete' , $context )) {
2004-11-16 02:21:31 +00:00
if ( ! empty ( $sure ) && $sure == md5 ( $deletecat -> timemodified )) {
/// Send the children categories to live with their grandparent
2007-02-05 07:27:07 +00:00
if ( $childcats = get_records ( 'course_categories' , 'parent' , $deletecat -> id )) {
2004-11-16 02:21:31 +00:00
foreach ( $childcats as $childcat ) {
2007-02-05 07:27:07 +00:00
if ( ! set_field ( 'course_categories' , 'parent' , $deletecat -> parent , 'id' , $childcat -> id )) {
error ( 'Could not update a child category!' , 'index.php' );
2004-11-16 02:21:31 +00:00
}
2003-08-07 16:01:31 +00:00
}
}
2004-11-16 02:21:31 +00:00
/// If the grandparent is a valid (non-zero) category, then
/// send the children courses to live with their grandparent as well
if ( $deletecat -> parent ) {
2007-02-05 07:27:07 +00:00
if ( $childcourses = get_records ( 'course' , 'category' , $deletecat -> id )) {
2004-11-16 02:21:31 +00:00
foreach ( $childcourses as $childcourse ) {
2007-02-05 07:27:07 +00:00
if ( ! set_field ( 'course' , 'category' , $deletecat -> parent , 'id' , $childcourse -> id )) {
error ( 'Could not update a child course!' , 'index.php' );
2004-11-16 02:21:31 +00:00
}
2004-01-09 16:54:10 +00:00
}
2003-12-21 05:10:13 +00:00
}
}
2004-11-16 02:21:31 +00:00
/// Finally delete the category itself
2007-02-05 07:27:07 +00:00
if ( delete_records ( 'course_categories' , 'id' , $deletecat -> id )) {
2007-02-28 06:25:22 +00:00
notify ( get_string ( 'categorydeleted' , '' , format_string ( $deletecat -> name )));
2004-11-16 02:21:31 +00:00
}
2003-12-21 05:10:13 +00:00
}
2004-11-16 02:21:31 +00:00
else {
2007-02-28 06:25:22 +00:00
$strdeletecategorycheck = get_string ( 'deletecategorycheck' , '' , format_string ( $deletecat -> name ));
2007-02-05 07:27:07 +00:00
notice_yesno ( $strdeletecategorycheck ,
2004-11-16 02:21:31 +00:00
" index.php?delete= $delete &sure= " . md5 ( $deletecat -> timemodified ) . " &sesskey= $USER->sesskey " ,
" index.php?sesskey= $USER->sesskey " );
2006-12-20 01:15:15 +00:00
admin_externalpage_print_footer ( $adminroot );
2004-11-16 02:21:31 +00:00
exit ();
2004-01-09 16:54:10 +00:00
}
2003-08-07 16:01:31 +00:00
}
2002-09-09 11:48:11 +00:00
}
2002-09-09 12:37:34 +00:00
2002-09-09 11:48:11 +00:00
2003-08-07 16:01:31 +00:00
/// Create a default category if necessary
if ( ! $categories = get_categories ()) { /// No category yet!
// Try and make one
unset ( $tempcat );
2007-02-05 07:27:07 +00:00
$tempcat -> name = get_string ( 'miscellaneous' );
if ( ! $tempcat -> id = insert_record ( 'course_categories' , $tempcat )) {
error ( 'Serious error: Could not create a default category!' );
2003-08-07 16:01:31 +00:00
}
}
/// Move a category to a new parent if required
2005-06-14 09:21:09 +00:00
if ( ! empty ( $move ) and ( $moveto >= 0 ) and confirm_sesskey ()) {
2007-02-05 07:27:07 +00:00
if ( $tempcat = get_record ( 'course_categories' , 'id' , $move )) {
2003-08-07 16:01:31 +00:00
if ( $tempcat -> parent != $moveto ) {
2007-02-05 07:27:07 +00:00
if ( ! set_field ( 'course_categories' , 'parent' , $moveto , 'id' , $tempcat -> id )) {
notify ( 'Could not update that category!' );
2003-08-07 16:01:31 +00:00
}
}
}
}
/// Hide or show a category
2005-06-14 09:21:09 +00:00
if (( ! empty ( $hide ) or ! empty ( $show )) and confirm_sesskey ()) {
if ( ! empty ( $hide )) {
2007-02-05 07:27:07 +00:00
$tempcat = get_record ( 'course_categories' , 'id' , $hide );
2003-08-07 16:01:31 +00:00
$visible = 0 ;
} else {
2007-02-05 07:27:07 +00:00
$tempcat = get_record ( 'course_categories' , 'id' , $show );
2003-08-07 16:01:31 +00:00
$visible = 1 ;
}
if ( $tempcat ) {
2007-02-05 07:27:07 +00:00
if ( ! set_field ( 'course_categories' , 'visible' , $visible , 'id' , $tempcat -> id )) {
notify ( 'Could not update that category!' );
2003-08-07 16:01:31 +00:00
}
2007-02-05 07:27:07 +00:00
if ( ! set_field ( 'course' , 'visible' , $visible , 'category' , $tempcat -> id )) {
notify ( 'Could not hide/show any courses in this category !' );
2003-08-07 16:01:31 +00:00
}
}
}
/// Move a category up or down
2005-06-14 09:21:09 +00:00
if (( ! empty ( $moveup ) or ! empty ( $movedown )) and confirm_sesskey ()) {
2003-08-07 16:01:31 +00:00
$swapcategory = NULL ;
$movecategory = NULL ;
2005-06-14 09:21:09 +00:00
if ( ! empty ( $moveup )) {
2007-02-05 07:27:07 +00:00
if ( $movecategory = get_record ( 'course_categories' , 'id' , $moveup )) {
$categories = get_categories ( $movecategory -> parent );
2003-08-07 16:01:31 +00:00
foreach ( $categories as $category ) {
if ( $category -> id == $movecategory -> id ) {
break ;
}
$swapcategory = $category ;
}
}
}
2005-06-14 09:21:09 +00:00
if ( ! empty ( $movedown )) {
2007-02-05 07:27:07 +00:00
if ( $movecategory = get_record ( 'course_categories' , 'id' , $movedown )) {
$categories = get_categories ( $movecategory -> parent );
2002-09-09 11:48:11 +00:00
2003-08-07 16:01:31 +00:00
$choosenext = false ;
foreach ( $categories as $category ) {
if ( $choosenext ) {
$swapcategory = $category ;
break ;
}
if ( $category -> id == $movecategory -> id ) {
$choosenext = true ;
}
}
}
}
if ( $swapcategory and $movecategory ) { // Renumber everything for robustness
$count = 0 ;
foreach ( $categories as $category ) {
$count ++ ;
if ( $category -> id == $swapcategory -> id ) {
$category = $movecategory ;
} else if ( $category -> id == $movecategory -> id ) {
$category = $swapcategory ;
}
2007-02-05 07:27:07 +00:00
if ( ! set_field ( 'course_categories' , 'sortorder' , $count , 'id' , $category -> id )) {
notify ( 'Could not update that category!' );
2003-08-07 16:01:31 +00:00
}
}
}
}
/// Find the default category (the one with the lowest ID)
2003-07-30 13:02:45 +00:00
$categories = get_categories ();
2003-08-07 16:01:31 +00:00
$default = 99999 ;
foreach ( $categories as $category ) {
if ( $category -> id < $default ) {
$default = $category -> id ;
}
}
/// Find any orphan courses that don't yet have a valid category and set to default
2006-09-17 18:07:35 +00:00
if ( $courses = get_courses ( NULL , NULL , 'c.id, c.category, c.sortorder, c.visible' )) {
2003-08-07 16:01:31 +00:00
foreach ( $courses as $course ) {
2003-08-22 12:49:37 +00:00
if ( $course -> category and ! isset ( $categories [ $course -> category ])) {
2007-02-05 07:27:07 +00:00
set_field ( 'course' , 'category' , $default , 'id' , $course -> id );
2003-08-07 16:01:31 +00:00
}
}
}
2004-05-30 00:33:45 +00:00
fix_course_sortorder ();
2003-08-07 16:01:31 +00:00
/// Print form for creating new categories
2006-09-20 20:31:09 +00:00
if ( has_capability ( 'moodle/category:create' , $context )) {
2007-01-10 08:35:45 +00:00
echo '<div class="addcategory">' ;
2007-02-05 07:27:07 +00:00
echo '<form id="addform" action="index.php" method="post">' ;
2007-01-10 08:35:45 +00:00
echo '<fieldset class="invisiblefieldset">' ;
2007-02-05 07:27:07 +00:00
echo '<input type="text" size="30" alt="' . $straddnewcategory . '" name="addcategory" />' ;
echo '<input type="submit" value="' . $straddnewcategory . '" />' ;
echo '<input type="hidden" name="sesskey" value="' . sesskey () . '" />' ;
echo '</fieldset>' ;
echo '</form>' ;
echo '</div>' ;
2006-09-20 20:31:09 +00:00
}
2003-08-07 16:01:31 +00:00
/// Print out the categories with all the knobs
2007-02-05 07:27:07 +00:00
$strcategories = get_string ( 'categories' );
$strcourses = get_string ( 'courses' );
$strmovecategoryto = get_string ( 'movecategoryto' );
$stredit = get_string ( 'edit' );
2003-08-07 16:01:31 +00:00
$displaylist = array ();
$parentlist = array ();
2007-02-05 07:27:07 +00:00
$displaylist [ 0 ] = get_string ( 'top' );
make_categories_list ( $displaylist , $parentlist , '' );
2003-08-07 16:01:31 +00:00
2007-02-05 07:27:07 +00:00
echo '<table class="generalbox editcourse"><tr class="header">' ;
echo '<th class="header" scope="col">' . $strcategories . '</th>' ;
echo '<th class="header" scope="col">' . $strcourses . '</th>' ;
echo '<th class="header" scope="col">' . $stredit . '</th>' ;
echo '<th class="header" scope="col">' . $strmovecategoryto . '</th>' ;
echo '</tr>' ;
2003-08-07 16:01:31 +00:00
print_category_edit ( NULL , $displaylist , $parentlist );
2007-02-05 07:27:07 +00:00
echo '</table>' ;
2003-08-07 16:01:31 +00:00
2007-04-02 13:46:01 +00:00
echo '<div class="buttons">' ;
2003-08-09 16:53:30 +00:00
/// Print link to create a new course
2006-08-14 05:55:40 +00:00
if ( has_capability ( 'moodle/course:create' , $context )) {
2007-02-05 07:27:07 +00:00
unset ( $options );
$options [ 'category' ] = $category -> id ;
print_single_button ( 'edit.php' , $options , get_string ( 'addnewcourse' ), 'get' );
2006-08-08 05:13:06 +00:00
}
2007-02-05 07:27:07 +00:00
print_single_button ( 'pending.php' , NULL , get_string ( 'coursespending' ), 'get' );
2003-07-30 13:02:45 +00:00
2007-04-02 13:46:01 +00:00
// admin page does not allow custom buttons in the navigation bar
echo '<div class="singlebutton">' ;
echo update_categories_button ();
echo '</div></div>' ;
2006-09-02 13:14:57 +00:00
admin_externalpage_print_footer ( $adminroot );
2003-08-07 16:01:31 +00:00
function print_category_edit ( $category , $displaylist , $parentslist , $depth =- 1 , $up = false , $down = false ) {
/// Recursive function to print all the categories ready for editing
2005-01-25 14:03:43 +00:00
global $CFG , $USER ;
2003-08-07 16:01:31 +00:00
static $str = '' ;
if ( empty ( $str )) {
2007-02-05 07:27:07 +00:00
$str -> delete = get_string ( 'delete' );
$str -> moveup = get_string ( 'moveup' );
$str -> movedown = get_string ( 'movedown' );
$str -> edit = get_string ( 'editthiscategory' );
$str -> hide = get_string ( 'hide' );
$str -> show = get_string ( 'show' );
2003-08-07 16:01:31 +00:00
}
2003-07-30 13:02:45 +00:00
2003-08-07 16:01:31 +00:00
if ( $category ) {
2007-02-05 07:27:07 +00:00
$context = get_context_instance ( CONTEXT_COURSECAT , $category -> id );
2006-09-20 20:31:09 +00:00
2007-02-05 07:27:07 +00:00
echo '<tr><td align="left" class="name">' ;
2003-08-07 16:01:31 +00:00
for ( $i = 0 ; $i < $depth ; $i ++ ) {
2007-02-05 07:27:07 +00:00
echo ' ' ;
2003-08-07 16:01:31 +00:00
}
2007-02-05 07:27:07 +00:00
$linkcss = $category -> visible ? '' : ' class="dimmed" ' ;
echo '<a ' . $linkcss . ' title="' . $str -> edit . '" ' .
' href="category.php?id=' . $category -> id . '&categoryedit=on&sesskey=' . sesskey () . '">' .
2007-02-28 06:25:22 +00:00
format_string ( $category -> name ) . '</a>' ;
2007-02-05 07:27:07 +00:00
echo '</td>' ;
2003-08-07 16:01:31 +00:00
2007-02-05 07:27:07 +00:00
echo '<td class="count">' . $category -> coursecount . '</td>' ;
2003-08-07 16:01:31 +00:00
2007-02-05 07:27:07 +00:00
echo '<td class="icons">' ; /// Print little icons
2003-08-07 16:01:31 +00:00
2006-09-20 20:31:09 +00:00
if ( has_capability ( 'moodle/category:delete' , $context )) {
2007-02-05 07:27:07 +00:00
echo '<a title="' . $str -> delete . '" href="index.php?delete=' . $category -> id . '&sesskey=' . sesskey () . '"><img' .
' src="' . $CFG -> pixpath . '/t/delete.gif" class="iconsmall" alt="' . $str -> delete . '" /></a> ' ;
2006-09-20 20:31:09 +00:00
}
if ( has_capability ( 'moodle/category:visibility' , $context )) {
if ( ! empty ( $category -> visible )) {
2007-02-05 07:27:07 +00:00
echo '<a title="' . $str -> hide . '" href="index.php?hide=' . $category -> id . '&sesskey=' . sesskey () . '"><img' .
' src="' . $CFG -> pixpath . '/t/hide.gif" class="iconsmall" alt="' . $str -> hide . '" /></a> ' ;
2006-09-20 20:31:09 +00:00
} else {
2007-02-05 07:27:07 +00:00
echo '<a title="' . $str -> show . '" href="index.php?show=' . $category -> id . '&sesskey=' . sesskey () . '"><img' .
' src="' . $CFG -> pixpath . '/t/show.gif" class="iconsmall" alt="' . $str -> show . '" /></a> ' ;
2006-09-20 20:31:09 +00:00
}
}
2003-08-07 16:01:31 +00:00
if ( $up ) {
2007-02-05 07:27:07 +00:00
echo '<a title="' . $str -> moveup . '" href="index.php?moveup=' . $category -> id . '&sesskey=' . sesskey () . '"><img' .
' src="' . $CFG -> pixpath . '/t/up.gif" class="iconsmall" alt="' . $str -> moveup . '" /></a> ' ;
2003-08-07 16:01:31 +00:00
}
if ( $down ) {
2007-02-05 07:27:07 +00:00
echo '<a title="' . $str -> movedown . '" href="index.php?movedown=' . $category -> id . '&sesskey=' . sesskey () . '"><img' .
' src="' . $CFG -> pixpath . '/t/down.gif" class="iconsmall" alt="' . $str -> movedown . '" /></a> ' ;
2003-08-07 16:01:31 +00:00
}
2007-02-05 07:27:07 +00:00
echo '</td>' ;
2003-08-07 16:01:31 +00:00
2007-02-05 07:27:07 +00:00
echo '<td align="left">' ;
2003-08-07 16:01:31 +00:00
$tempdisplaylist = $displaylist ;
unset ( $tempdisplaylist [ $category -> id ]);
foreach ( $parentslist as $key => $parents ) {
if ( in_array ( $category -> id , $parents )) {
unset ( $tempdisplaylist [ $key ]);
}
}
2007-02-05 07:27:07 +00:00
popup_form ( " index.php?move= $category->id &sesskey= $USER->sesskey &moveto= " , $tempdisplaylist , " moveform $category->id " , $category -> parent , '' , '' , '' , false );
echo '</td>' ;
echo '</tr>' ;
2003-07-30 13:02:45 +00:00
} else {
2007-02-05 07:27:07 +00:00
$category -> id = '0' ;
2003-07-30 13:02:45 +00:00
}
2001-11-22 06:23:56 +00:00
2003-08-07 16:01:31 +00:00
if ( $categories = get_categories ( $category -> id )) { // Print all the children recursively
$countcats = count ( $categories );
$count = 0 ;
$first = true ;
$last = false ;
foreach ( $categories as $cat ) {
$count ++ ;
if ( $count == $countcats ) {
$last = true ;
}
$up = $first ? false : true ;
$down = $last ? false : true ;
$first = false ;
2001-11-22 06:23:56 +00:00
2003-08-07 16:01:31 +00:00
print_category_edit ( $cat , $displaylist , $parentslist , $depth + 1 , $up , $down );
}
}
}
2001-11-22 06:23:56 +00:00
2003-08-07 16:01:31 +00:00
?>