/**
  * Retrieve links and return them as an array of extensions of AbstractLink.
  * To keep consistency, do not call this method but LinkFactory::load instead.
  */
 public static function load($id = null, $type = null, $ref_id = null, $user_id = null, $course_code = null, $category_id = null, $visible = null)
 {
     $tbl_grade_links = Database::get_main_table(TABLE_MAIN_GRADEBOOK_LINK);
     $sql = 'SELECT * FROM ' . $tbl_grade_links;
     $paramcount = 0;
     if (isset($id)) {
         $sql .= ' WHERE id = ' . intval($id);
         $paramcount++;
     }
     if (isset($type)) {
         if ($paramcount != 0) {
             $sql .= ' AND';
         } else {
             $sql .= ' WHERE';
         }
         $sql .= ' type = ' . intval($type);
         $paramcount++;
     }
     if (isset($ref_id)) {
         if ($paramcount != 0) {
             $sql .= ' AND';
         } else {
             $sql .= ' WHERE';
         }
         $sql .= ' ref_id = ' . intval($ref_id);
         $paramcount++;
     }
     if (isset($user_id)) {
         if ($paramcount != 0) {
             $sql .= ' AND';
         } else {
             $sql .= ' WHERE';
         }
         $sql .= ' user_id = ' . intval($user_id);
         $paramcount++;
     }
     if (isset($course_code)) {
         if ($paramcount != 0) {
             $sql .= ' AND';
         } else {
             $sql .= ' WHERE';
         }
         $sql .= " course_code = '" . Database::escape_string($course_code) . "'";
         $paramcount++;
     }
     if (isset($category_id)) {
         if ($paramcount != 0) {
             $sql .= ' AND';
         } else {
             $sql .= ' WHERE';
         }
         $sql .= ' category_id = ' . intval($category_id);
         $paramcount++;
     }
     if (isset($visible)) {
         if ($paramcount != 0) {
             $sql .= ' AND';
         } else {
             $sql .= ' WHERE';
         }
         $sql .= ' visible = ' . intval($visible);
     }
     $result = Database::query($sql);
     $links = AbstractLink::create_objects_from_sql_result($result);
     return $links;
 }