diff --git a/main/gradebook/index.php b/main/gradebook/index.php index 3c6fa0784e..d62927006c 100644 --- a/main/gradebook/index.php +++ b/main/gradebook/index.php @@ -821,7 +821,7 @@ if (isset($first_time) && $first_time==1 && api_is_allowed_to_edit(null,true)) { foreach ($cats as $cat) { $allcat = $cat->get_subcategories($stud_id, $course_code, $session_id); $alleval = $cat->get_evaluations($stud_id); - $alllink = $cat->get_links($stud_id); + $alllink = $cat->get_links($stud_id,true); if ($cat->get_parent_id() != 0 ) { $i++; diff --git a/main/gradebook/lib/be/category.class.php b/main/gradebook/lib/be/category.class.php index ea8a183afd..d2138239c0 100644 --- a/main/gradebook/lib/be/category.class.php +++ b/main/gradebook/lib/be/category.class.php @@ -162,7 +162,29 @@ class Category implements GradebookItem } // CRUD FUNCTIONS - + public static function load_session_categories($id = null, $session_id = null) { + + if ( isset($id) && (int)$id === 0 ) { + $cats = array(); + $cats[] = Category::create_root_category(); + return $cats; + } + $cat = array(); + $cats = array(); + if (!empty ($session_id)) { + $tbl_grade_categories = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_CATEGORY); + $sql_session = 'SELECT id FROM '.$tbl_grade_categories. ' WHERE session_id = '.$session_id; + $result_session = Database::query($sql_session); + if (Database::num_rows($result_session) > 0) { + $data_session = Database::fetch_array($result_session); + $parent_id = $data_session['id']; + $cat = Category::load($parent_id); + $cats = Category::load(null, null, null, $parent_id, null, null, $order); + return array_merge($cat,$cats); + } + } + } + /** * Retrieve categories and return them as an array of Category objects * @param int category id @@ -1176,6 +1198,16 @@ class Category implements GradebookItem * @return array Array of subcategories */ public function get_subcategories ($stud_id = null, $course_code = null, $session_id = null, $order = null) { + if (!empty ($session_id)) { + $tbl_grade_categories = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_CATEGORY); + $sql_session = 'SELECT id FROM '.$tbl_grade_categories. ' WHERE session_id = '.$session_id; + $result_session = Database::query($sql_session); + if (Database::num_rows($result_session) > 0) { + $data_session = Database::fetch_array($result_session); + $parent_id = $data_session['id']; + return Category::load(null, null, null, $parent_id, null, null, $order); + } + } // 1 student if (isset($stud_id)) { // special case: this is the root @@ -1253,7 +1285,7 @@ class Category implements GradebookItem foreach ($subcats as $subcat) { $subevals = $subcat->get_evaluations($stud_id, true, $course_code); //$this->debugprint($subevals); - $evals = array_merge($evals, $subevals); + $evals = array_merge($evals, $subevals); } } }