/**
  * Return array of Category objects where a teacher is admin for.
  * @param int user id (to return everything, use 'null' here)
  * @param string course code (optional)
  * @param int session id (optional)
  */
 public function get_root_categories_for_teacher($user_id, $course_code = null, $session_id = null)
 {
     if ($user_id == null) {
         return Category::load(null, null, $course_code, 0, null, $session_id);
     }
     // Courses
     $main_course_user_table = Database::get_main_table(TABLE_MAIN_COURSE_USER);
     $tbl_grade_categories = Database::get_main_table(TABLE_MAIN_GRADEBOOK_CATEGORY);
     $course_table = Database::get_main_table(TABLE_MAIN_COURSE);
     $sql = 'SELECT * FROM ' . $tbl_grade_categories . ' WHERE parent_id = 0';
     if (!empty($course_code)) {
         $sql .= " AND course_code = '" . Database::escape_string($course_code) . "' ";
         if (!empty($session_id)) {
             $sql .= " AND session_id = " . (int) $session_id;
         }
     } else {
         $sql .= ' AND course_code IN
                      (
                         SELECT course.code
                         FROM ' . $main_course_user_table . ' course_user
                         INNER JOIN ' . $course_table . ' course ON (course.id AND course_user.c_id)
                         WHERE user_id = ' . intval($stud_id) . ' AND status = ' . STUDENT . ')';
     }
     $result = Database::query($sql);
     $cats = Category::create_category_objects_from_sql_result($result);
     // course independent categories
     if (isset($course_code)) {
         $indcats = Category::load(null, $user_id, $course_code, 0, null, $session_id);
         $cats = array_merge($cats, $indcats);
     }
     return $cats;
 }
 /**
  * Get all the categories from with the same given direct parent
  * @param int $catId Category parent ID
  * @return array Array of Category objects
  */
 public function getCategories($catId)
 {
     $tblGradeCategories = Database::get_main_table(TABLE_MAIN_GRADEBOOK_CATEGORY);
     $sql = 'SELECT * FROM ' . $tblGradeCategories . '
             WHERE parent_id = ' . intval($catId);
     $result = Database::query($sql);
     $allcats = Category::create_category_objects_from_sql_result($result);
     return $allcats;
 }