Browse Source

filter courses by session, result function of filtered courses, refs #BT7011

Cesar Perales 11 years ago
parent
commit
9dfb0abe23
1 changed files with 51 additions and 2 deletions
  1. 51 2
      main/admin/course_list.php

+ 51 - 2
main/admin/course_list.php

@@ -115,7 +115,50 @@ function get_course_data($from, $number_of_items, $column, $direction) {
     }
     return $courses;
 }
+/**
+ * Get course data to display filtered by session name
+ */
+function get_course_data_by_session($from, $number_of_items, $column, $direction) {
+    $course_table = Database::get_main_table(TABLE_MAIN_COURSE);
+    $session_rel_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
+    $session = Database::get_main_table(TABLE_MAIN_SESSION);
+
+    $sql = "SELECT  c.code AS col0,
+                    c.title AS col1,
+                    c.code AS col2,
+                    c.course_language AS col3,
+                    c.category_code AS col4,
+                    c.subscribe AS col5,
+                    c.unsubscribe AS col6,
+                    c.code AS col7,
+                    c.visibility AS col8,
+                    c.directory as col9,
+                    c.visual_code
+            FROM $course_table c
+            INNER JOIN $session_rel_course r ON c.code = r.course_code
+            INNER JOIN $session s ON r.id_session = s.id
+            ";
+    if (isset($_GET['session'])) {
+        $session = Database::escape_string(trim($_GET['session']));
+        $sql.= " WHERE s.name LIKE '%" . $session . "%'";
+    }
 
+    $sql .= " ORDER BY col$column $direction ";
+    $sql .= " LIMIT $from,$number_of_items";
+
+    $res = Database::query($sql);
+    $courses = array ();
+    while ($course = Database::fetch_array($res)) {
+        // Place colour icons in front of courses.
+        $show_visual_code = $course['visual_code'] != $course[2] ? Display::label($course['visual_code'], 'info') : null;
+        $course[1] = get_course_visibility_icon($course[8]).'<a href="'.api_get_path(WEB_COURSE_PATH).$course[9].'/index.php">'.$course[1].'</a> '.$show_visual_code;
+        $course[5] = $course[5] == SUBSCRIBE_ALLOWED ? get_lang('Yes') : get_lang('No');
+        $course[6] = $course[6] == UNSUBSCRIBE_ALLOWED ? get_lang('Yes') : get_lang('No');
+        $course_rem = array($course[0], $course[1], $course[2], $course[3], $course[4], $course[5], $course[6], $course[7]);
+        $courses[] = $course_rem;
+    }
+    return $courses;
+}
 /**
  * Filter to display the edit-buttons
  */
@@ -261,8 +304,14 @@ if (isset ($_GET['search']) && $_GET['search'] == 'advanced') {
     $actions .= '</div>';
     $actions .= $form->return_form();
 
-    // Create a sortable table with the course data
-    $table = new SortableTable('courses', 'get_number_of_courses', 'get_course_data', 2);
+    if (isset ($_GET['search']) && $_GET['search'] == 'session') {
+        // Create a sortable table with the course data filtered by session
+        $table = new SortableTable('courses', 'get_number_of_courses', 'get_course_data_by_session', 2);
+    } else {
+        // Create a sortable table with the course data
+        $table = new SortableTable('courses', 'get_number_of_courses', 'get_course_data', 2);
+    }
+
     $parameters=array();
 
     if (isset ($_GET['keyword'])) {