Ejemplo n.º 1
0
 /**
  * Gets the progress of learning paths in the given session
  * @param int   session id
  * @param array options order and limit keys
  * @return array table with user name, lp name, progress
  */
 public static function get_session_lp_progress($sessionId = 0, $courseId = 0, $date_from, $date_to, $options)
 {
     //escaping vars
     $sessionId = $sessionId == 'T' ? 'T' : intval($sessionId);
     $courseId = intval($courseId);
     $date_from = Database::escape_string($date_from);
     $date_to = Database::escape_string($date_to);
     //tables
     $session_course_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
     $user = Database::get_main_table(TABLE_MAIN_USER);
     $tbl_course_lp_view = Database::get_course_table(TABLE_LP_VIEW);
     $course = api_get_course_info_by_id($courseId);
     //getting all the students of the course
     //we are not using this because it only returns user ids
     /* if (empty($sessionId)
        {
        // Registered students in a course outside session.
        $users = CourseManager :: get_student_list_from_course_code($course_code);
        } else {
        // Registered students in session.
        $users = CourseManager :: get_student_list_from_course_code($course_code, true, $sessionId);
        } */
     $sessionCond = 'and session_id = %s';
     if ($sessionId == 'T') {
         $sessionCond = "";
     }
     $where = " WHERE c_id = '%s' AND s.status <> 2 {$sessionCond}";
     $limit = null;
     if (!empty($options['limit'])) {
         $limit = " LIMIT " . $options['limit'];
     }
     if (!empty($options['where'])) {
         $where .= ' ' . $options['where'];
     }
     $order = null;
     if (!empty($options['order'])) {
         $order = " ORDER BY " . $options['order'];
     }
     $sql = "SELECT u.user_id, u.lastname, u.firstname, u.username, u.email, s.c_id\n                FROM {$session_course_user} s\n                INNER JOIN {$user} u ON u.user_id = s.user_id\n                {$where}\n                {$order}\n                {$limit}";
     $sql_query = sprintf($sql, Database::escape_string($course['real_id']), $sessionId);
     $rs = Database::query($sql_query);
     while ($user = Database::fetch_array($rs)) {
         $users[$user['user_id']] = $user;
     }
     //Get lessons
     $lessons = LearnpathList::get_course_lessons($course['code'], $sessionId);
     $table = array();
     foreach ($users as $user) {
         $data = array('lastname' => $user[1], 'firstname' => $user[2], 'username' => $user[3]);
         $sessionCond = 'AND v.session_id = %d';
         if ($sessionId == 'T') {
             $sessionCond = "";
         }
         //Get lessons progress by user
         $sql = "SELECT v.lp_id as id, v.progress\n                    FROM  {$tbl_course_lp_view} v\n                    WHERE v.c_id = %d\n                    AND v.user_id = %d\n            {$sessionCond}";
         $sql_query = sprintf($sql, intval($courseId), intval($user['user_id']), $sessionId);
         $result = Database::query($sql_query);
         $user_lessons = array();
         while ($row = Database::fetch_array($result)) {
             $user_lessons[$row['id']] = $row;
         }
         //Match course lessons with user progress
         $progress = 0;
         $count = 0;
         foreach ($lessons as $lesson) {
             $data[$lesson['id']] = !empty($user_lessons[$lesson['id']]['progress']) ? $user_lessons[$lesson['id']]['progress'] : 0;
             $progress += $data[$lesson['id']];
             $data[$lesson['id']] = $data[$lesson['id']] . '%';
             $count++;
         }
         if ($count == 0) {
             $data['total'] = 0;
         } else {
             $data['total'] = round($progress / $count, 2) . '%';
         }
         $table[] = $data;
     }
     return $table;
 }
Ejemplo n.º 2
0
     $columns = array('session', 'exercise_id', 'quiz_title', 'username', 'lastname', 'firstname', 'time', 'question_id', 'question', 'description', 'answer', 'correct');
     $result = Tracking::get_exercise_progress($sessionId, $courseId, $exerciseId, $date_from, $date_to, array('where' => $whereCondition, 'order' => "{$sidx} {$sord}", 'limit' => "{$start} , {$limit}"));
     break;
 case 'get_session_lp_progress':
     $sessionId = 0;
     if (!empty($_GET['session_id']) && !empty($_GET['course_id'])) {
         $sessionId = intval($_GET['session_id']);
         $courseId = intval($_GET['course_id']);
         $course = api_get_course_info_by_id($courseId);
     }
     /**
      * Add lessons of course
      *
      */
     $columns = array('username', 'firstname', 'lastname');
     $lessons = LearnpathList::get_course_lessons($course['code'], $sessionId);
     foreach ($lessons as $lesson_id => $lesson) {
         $columns[] = $lesson_id;
     }
     $columns[] = 'total';
     $result = SessionManager::get_session_lp_progress($sessionId, $courseId, $date_from, $date_to, array('where' => $whereCondition, 'order' => "{$sidx} {$sord}", 'limit' => "{$start} , {$limit}"));
     break;
 case 'get_survey_overview':
     $sessionId = 0;
     if (!empty($_GET['session_id']) && !empty($_GET['course_id']) && !empty($_GET['survey_id'])) {
         $sessionId = intval($_GET['session_id']);
         $courseId = intval($_GET['course_id']);
         $surveyId = intval($_GET['survey_id']);
         $date_from = $_GET['date_from'];
         $date_to = $_GET['date_to'];
         //$course    = api_get_course_info_by_id($courseId);
Ejemplo n.º 3
0
 /**
  * Display a sortable table that contains an overview off all the progress of the user in a session
  * @author César Perales <*****@*****.**>, Beeznest Team
  */
 public static function display_tracking_lp_progress_overview($sessionId = '', $courseId = '', $date_from, $date_to)
 {
     $course = api_get_course_info_by_id($courseId);
     /**
      * Column name
      * The order is important you need to check the $column variable in the model.ajax.php file
      */
     $columns = array(get_lang('Username'), get_lang('FirstName'), get_lang('LastName'));
     //add lessons of course
     $lessons = LearnpathList::get_course_lessons($course['code'], $sessionId);
     //create columns array
     foreach ($lessons as $lesson_id => $lesson) {
         $columns[] = $lesson['name'];
     }
     $columns[] = get_lang('Total');
     /**
      * Column config
      */
     $column_model = array(array('name' => 'username', 'index' => 'username', 'align' => 'left', 'search' => 'true', 'wrap_cell' => "true"), array('name' => 'firstname', 'index' => 'firstname', 'align' => 'left', 'search' => 'true'), array('name' => 'lastname', 'index' => 'lastname', 'align' => 'left', 'search' => 'true'));
     // Get dinamic column names
     foreach ($lessons as $lesson_id => $lesson) {
         $column_model[] = array('name' => $lesson['id'], 'index' => $lesson['id'], 'align' => 'left', 'search' => 'true');
     }
     $column_model[] = array('name' => 'total', 'index' => 'total', 'align' => 'left', 'search' => 'true');
     $action_links = '';
     // jqgrid will use this URL to do the selects
     $url = api_get_path(WEB_AJAX_PATH) . 'model.ajax.php?a=get_session_lp_progress&session_id=' . $sessionId . '&course_id=' . $courseId . '&date_to=' . $date_to . '&date_from=' . $date_from;
     //Table Id
     $tableId = 'lpProgress';
     //Autowidth
     $extra_params['autowidth'] = 'true';
     //height auto
     $extra_params['height'] = 'auto';
     $table = Display::grid_js($tableId, $url, $columns, $column_model, $extra_params, array(), $action_links, true);
     $return = '<script>$(function() {' . $table . 'jQuery("#' . $tableId . '").jqGrid("navGrid","#' . $tableId . '_pager",{view:false, edit:false, add:false, del:false, search:false, excel:true});
             jQuery("#' . $tableId . '").jqGrid("navButtonAdd","#' . $tableId . '_pager",{
                    caption:"",
                    title:"' . get_lang('ExportExcel') . '",
                    onClickButton : function () {
                        jQuery("#' . $tableId . '").jqGrid("excelExport",{"url":"' . $url . '&export_format=xls"});
                    }
             });
         });</script>';
     $return .= Display::grid_html($tableId);
     return $return;
 }