Browse Source

Adding search forms see BT#7297

Julio Montoya 11 years ago
parent
commit
4504c2101e

+ 35 - 4
main/inc/ajax/model.ajax.php

@@ -287,11 +287,27 @@ switch ($action) {
         $count = get_count_exam_hotpotatoes_results($hotpot_path);
         break;
     case 'get_sessions_tracking':
+        $keyword = isset($_REQUEST['keyword']) ? $_REQUEST['keyword'] : null;
         if (api_is_drh()) {
-            $count = SessionManager::get_sessions_followed_by_drh(api_get_user_id(), null, null, true);
+            $count = SessionManager::get_sessions_followed_by_drh(
+                api_get_user_id(),
+                null,
+                null,
+                true,
+                false,
+                false,
+                null,
+                $keyword
+            );
         } else {
             // Sessions for the coach
-            $count = Tracking::get_sessions_coached_by_user(api_get_user_id(), null, null, true);
+            $count = Tracking::get_sessions_coached_by_user(
+                api_get_user_id(),
+                null,
+                null,
+                true,
+                $keyword
+            );
         }
         break;
     case 'get_sessions':
@@ -631,10 +647,25 @@ switch ($action) {
         break;
     case 'get_sessions_tracking':
         if (api_is_drh()) {
-            $sessions = SessionManager::get_sessions_followed_by_drh(api_get_user_id(), $start, $limit);
+            $sessions = SessionManager::get_sessions_followed_by_drh(
+                api_get_user_id(),
+                $start,
+                $limit,
+                false,
+                false,
+                false,
+                null,
+                $keyword
+            );
         } else {
             // Sessions for the coach
-            $sessions = Tracking::get_sessions_coached_by_user(api_get_user_id(), $start, $limit);
+            $sessions = Tracking::get_sessions_coached_by_user(
+                api_get_user_id(),
+                $start,
+                $limit,
+                false,
+                $keyword
+            );
         }
 
         $columns =  array(

+ 9 - 1
main/inc/lib/course.lib.php

@@ -3019,7 +3019,8 @@ class CourseManager
         $limit = null,
         $column = null,
         $direction = null,
-        $getCount = false
+        $getCount = false,
+        $keyword = null
     ) {
         // Database Table Definitions
         $tbl_course = Database::get_main_table(TABLE_MAIN_COURSE);
@@ -3050,6 +3051,13 @@ class CourseManager
                 break;
         }
 
+        $keywordCondition = null;
+        if (!empty($keyword)) {
+            $keyword = Database::escape_string($keyword);
+            $keywordCondition = " AND (c.code LIKE '%$keyword%' OR c.title LIKE '%$keyword%' ) ";
+        }
+
+        $whereConditions .= $keywordCondition;
         $sql = "$select
                 FROM $tbl_course c
                     INNER JOIN $tbl_course_rel_user cru ON (cru.course_code = c.code)

+ 38 - 10
main/inc/lib/sessionmanager.lib.php

@@ -2392,7 +2392,8 @@ class SessionManager
         $getCount = false,
         $getOnlySessionId = false,
         $getSql = false,
-        $orderCondition = null
+        $orderCondition = null,
+        $keyword = null
     ) {
         return self::getSessionsFollowedByUser(
             $userId,
@@ -2402,7 +2403,8 @@ class SessionManager
             $getCount,
             $getOnlySessionId,
             $getSql,
-            $orderCondition
+            $orderCondition,
+            $keyword
         );
 	}
 
@@ -2415,6 +2417,7 @@ class SessionManager
      * @param bool $getOnlySessionId
      * @param bool $getSql
      * @param string $orderCondition
+     * @param string $keyword
      * @return array sessions
      */
     public static function getSessionsFollowedByUser(
@@ -2425,7 +2428,8 @@ class SessionManager
         $getCount = false,
         $getOnlySessionId = false,
         $getSql = false,
-        $orderCondition = null
+        $orderCondition = null,
+        $keyword = null
     ) {
         // Database Table Definitions
         $tbl_session 			= Database::get_main_table(TABLE_MAIN_SESSION);
@@ -2454,6 +2458,7 @@ class SessionManager
             $orderCondition = " ORDER BY s.name ";
         }
 
+
         $whereConditions = null;
         $sessionCourseConditions = null;
         $sessionConditions = null;
@@ -2476,9 +2481,16 @@ class SessionManager
                     WHERE (scu.status = 2 AND scu.id_user = $userId)";
 
                 $whereConditions = " OR (s.id_coach = $userId) ";
-
                 break;
         }
+
+        $keywordCondition = null;
+        if (!empty($keyword)) {
+            $keyword = Database::escape_string($keyword);
+            $keywordCondition = " AND (s.name LIKE '%$keyword%' ) ";
+        }
+        $whereConditions .= $keywordCondition;
+
         $subQuery = $sessionQuery.$courseSessionQuery;
 
         $sql = " $select FROM $tbl_session s
@@ -2564,7 +2576,8 @@ class SessionManager
         $limit = null,
         $column = null,
         $direction = null,
-        $getCount = false
+        $getCount = false,
+        $keyword = null
     ) {
         if (empty($sessionId)) {
             $sessionsSQL = SessionManager::get_sessions_followed_by_drh(
@@ -2588,12 +2601,20 @@ class SessionManager
             $select = "SELECT DISTINCT c.* ";
         }
 
+        $keywordCondition = null;
+        if (!empty($keyword)) {
+            $keyword = Database::escape_string($keyword);
+            $keywordCondition = " AND (c.code LIKE '%$keyword%' OR c.title LIKE '%$keyword%' ) ";
+        }
+
         // Select the courses
         $sql = "$select
                 FROM $tbl_course c
                 INNER JOIN $tbl_session_rel_course src
                 ON c.code = src.course_code
-		        WHERE src.id_session IN ($sessionsSQL)
+		        WHERE
+		            src.id_session IN ($sessionsSQL)
+		            $keywordCondition
 		        ";
         if ($getCount) {
             $result = Database::query($sql);
@@ -2625,16 +2646,24 @@ class SessionManager
      * @param int session id
      * @return array list of courses
      */
-    public static function getCourseCountBySessionId($session_id)
+    public static function getCourseCountBySessionId($session_id, $keyword = null)
     {
         $tbl_course				= Database::get_main_table(TABLE_MAIN_COURSE);
         $tbl_session_rel_course	= Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
 
         // select the courses
-        $sql = "SELECT COUNT(c.code) count FROM $tbl_course c
+        $sql = "SELECT COUNT(c.code) count
+                FROM $tbl_course c
                 INNER JOIN $tbl_session_rel_course src
                 ON c.code = src.course_code
-		        WHERE src.id_session = '$session_id'";
+		        WHERE src.id_session = '$session_id' ";
+
+        $keywordCondition = null;
+        if (!empty($keyword)) {
+            $keyword = Database::escape_string($keyword);
+            $keywordCondition = " AND (c.code LIKE '%$keyword%' OR c.title LIKE '%$keyword%' ) ";
+        }
+        $sql .= $keywordCondition;
 
         $result = Database::query($sql);
         $num_rows = Database::num_rows($result);
@@ -3796,7 +3825,6 @@ class SessionManager
         }
 
         $sql .= $limitCondition;
-
         $result = Database::query($sql);
         $result = Database::store_result($result);
 

+ 40 - 48
main/inc/lib/tracking.lib.php

@@ -1598,19 +1598,26 @@ class Tracking
 
     /**
      * Get sessions coached by user
-     * @param    int        Coach id
-     * @return    array    Sessions list
+     * @param $coach_id
+     * @param int $start
+     * @param int $limit
+     * @param bool $getCount
+     * @param null $keyword
+     * @return mixed
      */
-    public static function get_sessions_coached_by_user($coach_id, $start = 0, $limit = 0, $getCount = false)
-    {
+    public static function get_sessions_coached_by_user(
+        $coach_id,
+        $start = 0,
+        $limit = 0,
+        $getCount = false,
+        $keyword = null
+    ) {
         // table definition
         $tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
         $tbl_session_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
-
         $coach_id = intval($coach_id);
 
         $select = " SELECT * FROM ";
-
         if ($getCount) {
             $select = " SELECT count(DISTINCT id) as count FROM ";
         }
@@ -1620,50 +1627,35 @@ class Tracking
             $limitCondition = " LIMIT ".intval($start).", ".intval($limit);
         }
 
-        // session where we are general coach
-        $sql = " $select
-
-                (
-                    SELECT DISTINCT id, name, date_start, date_end
-                    FROM $tbl_session
-                    WHERE id_coach = $coach_id
-                UNION
-                    SELECT DISTINCT session.id, session.name, session.date_start, session.date_end
-                    FROM $tbl_session as session
-                    INNER JOIN $tbl_session_course_user as session_course_user
-                        ON session.id = session_course_user.id_session AND
-                        session_course_user.id_user= $coach_id AND
-                        session_course_user.status=2
-                )
-                as sessions $limitCondition
-                ";
-
-        if (api_is_multiple_url_enabled()) {
-            $tbl_session_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
-            $access_url_id = api_get_current_access_url_id();
-            if ($access_url_id != -1){
-                $sql = "
-                    $select
-                    (
-                        SELECT DISTINCT id, name, date_start, date_end
-                        FROM $tbl_session session INNER JOIN $tbl_session_rel_access_url session_rel_url
-                        ON (session.id = session_rel_url.session_id)
-                        WHERE id_coach = $coach_id AND access_url_id = $access_url_id
-                    UNION
-                        SELECT DISTINCT session.id, session.name, session.date_start, session.date_end
-                        FROM $tbl_session as session
-                        INNER JOIN $tbl_session_course_user as session_course_user
-                            ON session.id = session_course_user.id_session AND
-                            session_course_user.id_user= $coach_id AND
-                            session_course_user.status=2
-                        INNER JOIN $tbl_session_rel_access_url session_rel_url
-                        ON (session.id = session_rel_url.session_id)
-                        WHERE access_url_id = $access_url_id
-                    ) as sessions $limitCondition
-                    ";
-            }
+        $keywordCondition = null;
+        if (!empty($keyword)) {
+            $keyword = Database::escape_string($keyword);
+            $keywordCondition = " AND (name LIKE '%$keyword%' ) ";
         }
 
+        $tbl_session_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
+        $access_url_id = api_get_current_access_url_id();
+
+        $sql = "
+            $select
+            (
+                SELECT DISTINCT id, name, date_start, date_end
+                FROM $tbl_session session INNER JOIN $tbl_session_rel_access_url session_rel_url
+                ON (session.id = session_rel_url.session_id)
+                WHERE id_coach = $coach_id AND access_url_id = $access_url_id $keywordCondition
+            UNION
+                SELECT DISTINCT session.id, session.name, session.date_start, session.date_end
+                FROM $tbl_session as session
+                INNER JOIN $tbl_session_course_user as session_course_user
+                    ON session.id = session_course_user.id_session AND
+                    session_course_user.id_user= $coach_id AND
+                    session_course_user.status=2
+                INNER JOIN $tbl_session_rel_access_url session_rel_url
+                ON (session.id = session_rel_url.session_id)
+                WHERE access_url_id = $access_url_id $keywordCondition
+            ) as sessions $limitCondition
+            ";
+
         $rs = Database::query($sql);
         if ($getCount) {
             $row = Database::fetch_array($rs);

+ 33 - 18
main/mySpace/course.php

@@ -136,6 +136,7 @@ function get_count_courses()
 {
     $userId = api_get_user_id();
     $sessionId = isset($_GET['session_id']) ? intval($_GET['session_id']) : null;
+    $keyword = isset($_GET['keyword']) ? $_GET['keyword'] : null;
     $drhLoaded = false;
 
     if (api_is_drh()) {
@@ -148,19 +149,14 @@ function get_count_courses()
                     null,
                     null,
                     null,
-                    true
+                    true,
+                    $keyword
                 );
-                /*$count = SessionManager::getAllCoursesFromAllSessionFromDrh(
-                    $userId,
-                    DRH,
-                    null,
-                    null,
-                    null,
-                    null,
-                    true
-                );*/
             } else {
-                $count = SessionManager::getCourseCountBySessionId($sessionId);
+                $count = SessionManager::getCourseCountBySessionId(
+                    $sessionId,
+                    $keyword
+                );
             }
             $drhLoaded = true;
         }
@@ -174,7 +170,8 @@ function get_count_courses()
             null,
             null,
             null,
-            true
+            true,
+            $keyword
         );
     }
 
@@ -185,6 +182,7 @@ function get_courses($from, $limit, $column, $direction)
 {
     $userId = api_get_user_id();
     $sessionId = isset($_GET['session_id']) ? intval($_GET['session_id']) : null;
+    $keyword = isset($_GET['keyword']) ? $_GET['keyword'] : null;
 
     $drhLoaded = false;
     if (api_is_drh()) {
@@ -196,7 +194,8 @@ function get_courses($from, $limit, $column, $direction)
                 $limit,
                 $column,
                 $direction,
-                false
+                false,
+                $keyword
             );
             $drhLoaded = true;
         }
@@ -209,7 +208,9 @@ function get_courses($from, $limit, $column, $direction)
             $from,
             $limit,
             $column,
-            $direction
+            $direction,
+            false,
+            $keyword
         );
     }
 
@@ -271,6 +272,7 @@ function get_courses($from, $limit, $column, $direction)
             );
         }
     }
+
     return $courseList;
 }
 
@@ -283,10 +285,7 @@ $table = new SortableTable(
     10
 );
 
-$params = array(
-    'session_id' => $sessionId
-);
-$table->set_additional_parameters($params);
+
 
 $table->set_header(0, get_lang('CourseTitle'), false);
 $table->set_header(1, get_lang('NbStudents'), false);
@@ -297,6 +296,22 @@ $table->set_header(5, get_lang('AvgCourseScore').Display :: return_icon('info3.g
 $table->set_header(6, get_lang('AvgMessages'), false);
 $table->set_header(7, get_lang('AvgAssignments'), false);
 $table->set_header(8, get_lang('Details'), false);
+
+$form = new FormValidator('search_course', 'get', api_get_path(WEB_CODE_PATH).'mySpace/course.php');
+$form->addElement('text', 'keyword', get_lang('Keyword'));
+$form->addElement('button', 'submit', get_lang('Search'));
+$form->addElement('hidden', 'session_id', $sessionId);
+
+$keyword = isset($_GET['keyword']) ? Security::remove_XSS($_GET['keyword']) : null;
+
+$params = array(
+    'session_id' => $sessionId,
+    'keyword' => $keyword
+);
+$table->set_additional_parameters($params);
+
+$form->setDefaults($params);
+$form->display();
 $table->display();
 
 Display :: display_footer();

+ 34 - 44
main/mySpace/session.php

@@ -25,42 +25,12 @@ if (isset($_GET['export']) && $_GET['export'] == 'csv') {
     $export_csv = true;
 }
 
-/*
-	FUNCTION
-*/
-
-function count_sessions_coached()
-{
-    global $nb_sessions;
-    return $nb_sessions;
-}
-
-function sort_sessions($a, $b)
-{
-    global $tracking_column;
-    if ($a[$tracking_column] > $b[$tracking_column]) {
-        return 1;
-    } else {
-        return -1;
-    }
-}
-
-function rsort_sessions($a, $b)
-{
-    global $tracking_column;
-    if ($b[$tracking_column] > $a[$tracking_column]) {
-        return 1;
-    } else {
-        return -1;
-    }
-}
-
 /*	MAIN CODE */
 
 if (isset($_GET['id_coach']) && $_GET['id_coach'] != '') {
     $id_coach = intval($_GET['id_coach']);
 } else {
-    $id_coach = $_user['user_id'];
+    $id_coach = api_get_user_id();
 }
 
 if (api_is_drh() || api_is_session_admin() || api_is_platform_admin()) {
@@ -114,12 +84,21 @@ if (api_is_drh() || api_is_session_admin() || api_is_platform_admin()) {
     echo Display::page_header(get_lang('YourSessionsList'));
 
 } else {
-    $a_sessions = Tracking :: get_sessions_coached_by_user($id_coach);
+    $a_sessions = Tracking::get_sessions_coached_by_user($id_coach);
 }
 
-$url = api_get_path(WEB_AJAX_PATH).'model.ajax.php?a=get_sessions_tracking';
+$form = new FormValidator('search_course', 'get', api_get_path(WEB_CODE_PATH).'mySpace/session.php');
+$form->addElement('text', 'keyword', get_lang('Keyword'));
+$form->addElement('button', 'submit', get_lang('Search'));
+$form->addElement('hidden', 'session_id', $sessionId);
+$keyword = null;
+if ($form->validate()) {
+    $keyword = $form->getSubmitValue('keyword');
+}
+$form->setDefaults(array('keyword' => $keyword));
+
+$url = api_get_path(WEB_AJAX_PATH).'model.ajax.php?a=get_sessions_tracking&keyword='.Security::remove_XSS($keyword);
 
-//The order is important you need to check the the $column variable in the model.ajax.php file
 $columns = array(
     get_lang('Title'),
     get_lang('Date'),
@@ -129,12 +108,12 @@ $columns = array(
 );
 
 // Column config
-$columnModel   = array(
-    array('name'=>'name',                'index'=>'name',        'width'=>'255',   'align'=>'left'),
-    array('name'=>'date',                'index'=>'date', 'width'=>'150',  'align'=>'left','sortable'=>'false'),
-    array('name'=>'course_per_session',  'index'=>'course_per_session',     'width'=>'150','sortable'=>'false'),
-    array('name'=>'student_per_session', 'index'=>'student_per_session',     'width'=>'100','sortable'=>'false'),
-    array('name'=>'details',             'index'=>'details',     'width'=>'100','sortable'=>'false'),
+$columnModel = array(
+    array('name'=>'name', 'index'=>'name', 'width'=>'255', 'align'=>'left'),
+    array('name'=>'date', 'index'=>'date', 'width'=>'150', 'align'=>'left','sortable'=>'false'),
+    array('name'=>'course_per_session', 'index'=>'course_per_session', 'width'=>'150','sortable'=>'false'),
+    array('name'=>'student_per_session', 'index'=>'student_per_session', 'width'=>'100','sortable'=>'false'),
+    array('name'=>'details', 'index'=>'details', 'width'=>'100','sortable'=>'false')
 );
 
 $extraParams = array(
@@ -143,12 +122,23 @@ $extraParams = array(
 );
 
 $js = '<script>
-        $(function() {
-            '.Display::grid_js('session_tracking', $url, $columns, $columnModel, $extraParams, array(), null, true).'
-        });
-        </script>';
+    $(function() {
+        '.Display::grid_js(
+        'session_tracking',
+        $url,
+        $columns,
+        $columnModel,
+        $extraParams,
+        array(),
+        null,
+        true
+    ).'
+    });
+</script>';
 
 echo $js;
+$form->display();
+
 echo Display::grid_html('session_tracking');
 
 Display::display_footer();