diff --git a/main/admin/course_add.php b/main/admin/course_add.php
index e717bcd150..a163bf90e6 100644
--- a/main/admin/course_add.php
+++ b/main/admin/course_add.php
@@ -1,5 +1,5 @@
'index.php', "name" => get_lang('PlatformAd
==============================================================================
*/
-// Get all course categories
-$table_course_category = Database :: get_main_table(TABLE_MAIN_CATEGORY);
-$sql = "SELECT code,name FROM ".$table_course_category." WHERE auth_course_child ='TRUE' ORDER BY tree_pos";
-$res = api_sql_query($sql, __FILE__, __LINE__);
-while ($cat = mysql_fetch_array($res))
-{
- $categories[$cat['code']] = '('.$cat['code'].') '.$cat['name'];
-}
+
// Get all possible teachers
$table_user = Database :: get_main_table(TABLE_MAIN_USER);
@@ -82,7 +76,8 @@ $form->addRule('wanted_code',get_lang('Max'),'maxlength',20);
$form->addElement('select', 'tutor_id', get_lang('CourseTitular'), $teachers);
$form->addElement('select', 'course_teachers', get_lang('CourseTeachers'), $teachers, 'multiple=multiple size=5');
$form->add_textfield('title', get_lang('Title'),true, array ('size' => '60'));
-$form->addElement('select', 'category_code', get_lang('CourseFaculty'), $categories);
+$categories_select = $form->addElement('select', 'category_code', get_lang('CourseFaculty'), $categories);
+CourseManager::select_and_sort_categories($categories_select);
$form->add_textfield('department_name', get_lang('CourseDepartment'),false, array ('size' => '60'));
$form->add_textfield('department_url', get_lang('CourseDepartmentURL'),false, array ('size' => '60'));
$form->addElement('select_language', 'course_language', get_lang('CourseLanguage'));
diff --git a/main/admin/course_edit.php b/main/admin/course_edit.php
index 8f4aa66a8a..9d14d45024 100644
--- a/main/admin/course_edit.php
+++ b/main/admin/course_edit.php
@@ -1,6 +1,6 @@
"course_list.php", "name" => get_lang('Admi
*/
// Get all course categories
$table_user = Database :: get_main_table(TABLE_MAIN_USER);
-$table_course_category = Database :: get_main_table(TABLE_MAIN_CATEGORY);
-$sql = "SELECT code,name FROM ".$table_course_category." WHERE auth_course_child ='TRUE' ORDER BY tree_pos";
-$res = api_sql_query($sql, __FILE__, __LINE__);
-while ($cat = mysql_fetch_array($res))
-{
- $categories[$cat['code']] = '('.$cat['code'].') '.$cat['name'];
-}
//Get the course infos
$sql = "SELECT * FROM $course_table WHERE code='".mysql_real_escape_string($course_code)."'";
@@ -160,7 +154,8 @@ $renderer -> setElementTemplate($element_template, 'group');
$form -> addGroup($group,'group',get_lang('CourseTeachers'),'
| ');
$form->add_textfield( 'title', get_lang('Title'),true, array ('size' => '60'));
-$form->addElement('select', 'category_code', get_lang('CourseFaculty'), $categories);
+$categories_select = $form->addElement('select', 'category_code', get_lang('CourseFaculty'), $categories);
+CourseManager::select_and_sort_categories($categories_select);
$form->add_textfield( 'department_name', get_lang('CourseDepartment'), false,array ('size' => '60'));
$form->add_textfield( 'department_url', get_lang('CourseDepartmentURL'),false, array ('size' => '60'));
$form->addElement('select_language', 'course_language', get_lang('CourseLanguage'));
diff --git a/main/create_course/add_course.php b/main/create_course/add_course.php
index 025035636f..321076fab1 100644
--- a/main/create_course/add_course.php
+++ b/main/create_course/add_course.php
@@ -1,5 +1,5 @@
add_textfield('title',get_lang('Title'),true,array('size'=>'60'));
$form->addElement('static',null,null,get_lang('Ex'));
-$form->addElement('select', 'category_code', get_lang('Fac'), $categories);
+$categories_select = $form->addElement('select', 'category_code', get_lang('Fac'), $categories);
+CourseManager::select_and_sort_categories($categories_select);
$form->addElement('static',null,null, get_lang('TargetFac'));
$form->add_textfield('wanted_code', get_lang('Code'),false,array('size'=>'20','maxlength'=>20));
$form->addRule('wanted_code',get_lang('Max'),'maxlength',20);
diff --git a/main/inc/lib/course.lib.php b/main/inc/lib/course.lib.php
index 5c657598c9..cd82ff6cd6 100644
--- a/main/inc/lib/course.lib.php
+++ b/main/inc/lib/course.lib.php
@@ -1641,5 +1641,36 @@ class CourseManager
return $i_course_sort;
}
+ /**
+ * create recursively all categories as option of the select passed in paramater.
+ *
+ * @param object $select_element the quickform select where the options will be added
+ * @param string $category_selected_code the option value to select by default (used mainly for edition of courses)
+ * @param string $parent_code the parent category of the categories added (default=null for root category)
+ * @param string $padding the indent param (you shouldn't indicate something here)
+ */
+ function select_and_sort_categories($select_element, $category_selected_code="", $parent_code=null , $padding="")
+ {
+ $table_course_category = Database :: get_main_table(TABLE_MAIN_CATEGORY);
+ $sql = "SELECT code, name, auth_course_child, auth_cat_child
+ FROM ".$table_course_category."
+ WHERE parent_id ".(is_null($parent_code) ? "IS NULL" : "='".Database::escape_string($parent_code)."'")."
+ ORDER BY tree_pos";
+ $res = api_sql_query($sql, __FILE__, __LINE__);
+
+ $new_padding = $padding.str_repeat('-',3);
+
+ while ($cat = Database::fetch_array($res))
+ {
+ $params = $cat['auth_course_child'] == 'TRUE' ? '' : 'disabled';
+ $params .= ($cat['code'] == $category_selected_code) ? ' selected' : '';
+ $select_element->addOption($padding.'('.$cat['code'].') '.$cat['name'], $cat['code'], $params);
+ if($cat['auth_cat_child'])
+ {
+ CourseManager::select_and_sort_categories($select_element, $cat['code'], $category_selected_code, $new_padding);
+ }
+ }
+}
+
} //end class CourseManager
?>
\ No newline at end of file
|