Esempio n. 1
0
function JLMS_REP_exportXLS($hits, $tot_hits = array(), $users, $courses, $reporting_header)
{
    global $JLMS_DB, $JLMS_CONFIG, $task, $option;
    $results = array();
    switch ($task) {
        case 'report_access':
            $users_str = implode(',', $users);
            $courses_str = implode(',', $courses);
            $JLMS_DB->setQuery('SELECT course_name FROM #__lms_courses WHERE id IN(' . $courses_str . ') ORDER BY course_name');
            $crs_name = $JLMS_DB->loadResultArray();
            $JLMS_DB->setQuery('SELECT * FROM #__lms_courses WHERE id IN(' . $courses_str . ') ORDER BY course_name');
            $crs_options = $JLMS_DB->loadObjectList();
            $results['title_courses'] = array();
            $i = 0;
            foreach ($crs_name as $key => $c_name) {
                $view_is_course = 1;
                if ($JLMS_CONFIG->get('flms_integration', 1)) {
                    $params = new JLMSParameters($crs_options[$key]->params);
                    $view_is_course = $params->get('show_in_report', 1);
                }
                if ($view_is_course) {
                    $results['title_courses'][$i]['course_name'] = $c_name;
                    $i++;
                }
            }
            $results['results'] = array();
            $results['results_hit'] = array();
            $j = 0;
            foreach ($users as $usr_id) {
                $JLMS_DB->setQuery('SELECT username, name, email FROM #__users WHERE id =' . $usr_id);
                $usrname = $JLMS_DB->LoadObject();
                $results['results'][$j]['username'] = $usrname->username;
                $results['results'][$j]['name'] = $usrname->name;
                //$results['results'][$j]['email'] = $usrname->email;
                $count = 0;
                $k = 0;
                foreach ($courses as $key => $course_id) {
                    $count++;
                    $hit_num = 0;
                    for ($i = 0; $i < count($hits); $i++) {
                        if ($hits[$i]->c_id == $course_id && $hits[$i]->usr_id == $usr_id) {
                            $hit_num = $hits[$i]->hits;
                            break;
                            // by DEN
                        } else {
                            if ($hits[$i]->c_id == $course_id && $usr_id == 'total') {
                                $hit_num = $hits[$i]->hits;
                                break;
                            }
                        }
                    }
                    $view_is_course = 1;
                    if ($JLMS_CONFIG->get('flms_integration', 1)) {
                        $params = new JLMSParameters($crs_options[$key]->params);
                        $view_is_course = $params->get('show_in_report', 1);
                    }
                    if ($view_is_course) {
                        $results['results_hit'][$j][$k] = $hit_num;
                    }
                    $k++;
                }
                $j++;
            }
            $results_total_hits = array();
            $k = 0;
            foreach ($courses as $course_id) {
                $results_total_hits[$k]['hits'] = 0;
                foreach ($tot_hits as $hit) {
                    if ($course_id == $hit->c_id) {
                        $results_total_hits[$k]['hits'] = $hit->hits;
                    }
                }
                $k++;
            }
            $results['results_total_hits'] = $results_total_hits;
            break;
        case 'report_certif':
            $users_str = implode(',', $users);
            $courses_str = implode(',', $courses);
            if (!$courses_str) {
                $courses_str = '0';
            }
            if (!$users_str) {
                $users_str = '0';
            }
            $query = "SELECT h.user_id as usr_id,h.course_id as c_id FROM #__lms_certificate_users as h LEFT JOIN #__users as u ON h.user_id=u.id LEFT JOIN #__lms_courses as c ON h.course_id = c.id WHERE h.course_id IN (" . $courses_str . ") AND h.user_id IN  (" . $users_str . ")  ORDER BY h.course_id,h.user_id";
            $JLMS_DB->SetQuery($query);
            $hits = $JLMS_DB->LoadObjectLIST();
            $JLMS_DB->setQuery('SELECT course_name FROM #__lms_courses WHERE id IN(' . $courses_str . ') ORDER BY course_name');
            $crs_name = $JLMS_DB->loadResultArray();
            $JLMS_DB->setQuery('SELECT * FROM #__lms_courses WHERE id IN(' . $courses_str . ') ORDER BY course_name');
            $crs_options = $JLMS_DB->loadObjectList();
            $results['title_courses'] = array();
            $i = 0;
            foreach ($crs_name as $key => $c_name) {
                $view_is_course = 1;
                if ($JLMS_CONFIG->get('flms_integration', 1)) {
                    $params = new JLMSParameters($crs_options[$key]->params);
                    $view_is_course = $params->get('show_in_report', 1);
                }
                if ($view_is_course) {
                    $results['title_courses'][$i]['course_name'] = $c_name;
                    $i++;
                }
            }
            $results['results'] = array();
            $results['results_hit'] = array();
            $j = 0;
            foreach ($users as $usr_id) {
                $JLMS_DB->setQuery('SELECT username,name, email FROM #__users WHERE id =' . $usr_id);
                $usrname = $JLMS_DB->LoadObject();
                $course_hits = 0;
                $results['results'][$j]['username'] = $usrname->username;
                $results['results'][$j]['name'] = $usrname->name;
                //$results['results'][$j]['email'] = $usrname->email;
                $count = 0;
                $k = 0;
                foreach ($courses as $key => $course_id) {
                    $count++;
                    $hit_num = _JLMS_NO_ALT_TITLE;
                    for ($i = 0; $i < count($hits); $i++) {
                        if ($hits[$i]->c_id == $course_id && $hits[$i]->usr_id == $usr_id) {
                            $hit_num = _JLMS_YES_ALT_TITLE;
                            break;
                            // by DEN
                        }
                    }
                    $view_is_course = 1;
                    if ($JLMS_CONFIG->get('flms_integration', 1)) {
                        $params = new JLMSParameters($crs_options[$key]->params);
                        $view_is_course = $params->get('show_in_report', 1);
                    }
                    if ($view_is_course) {
                        $results['results_hit'][$j][$k] = $hit_num;
                        $k++;
                    }
                }
                $j++;
            }
            break;
        case 'report_grade':
            $course_info = array();
            $course_info_hits = array();
            $title_headers = array();
            $data_grade = array();
            $rows = array();
            if (isset($reporting_header['data_grade']['rowz']) && isset($reporting_header['data_grade']['lists']) && count($reporting_header['data_grade']['rowz']) && count($reporting_header['data_grade']['lists'])) {
                $rows = $reporting_header['data_grade']['rowz'];
                $lists = $reporting_header['data_grade']['lists'];
                for ($i = 0; $i < count($rows); $i++) {
                    $row = $rows[$i];
                    $course_info[$i]['course_name'] = $row->course_name;
                    $course_info[$i]['hits'] = $lists['hits'][$i];
                    /*
                    $course_info[$i][] = $row->course_name;
                    $course_info[$i][] = $lists['hits'][$i];
                    $course_info_hits[$i][] = $lists['hits'][$i];
                    */
                    $title_headers[$i][] = _JLMS_REPORTS_CONCLUSION_ROW;
                    $data_grade[$i][] = $row->user_certificate ? _CMN_YES : _CMN_NO;
                    $sc_num = 0;
                    $sc_num2 = 0;
                    foreach ($lists['sc_rows'][$i] as $sc_row) {
                        if ($sc_row->show_in_gradebook) {
                            $title_headers[$i][] = $sc_row->lpath_name;
                            $sc_num++;
                            $j = 0;
                            while ($j < count($row->scorm_info)) {
                                if ($row->scorm_info[$j]->gbi_id == $sc_row->item_id) {
                                    if ($sc_num2 < $sc_num) {
                                        if ($row->scorm_info[$j]->user_status == -1) {
                                            $data_grade[$i][] = '-';
                                        } else {
                                            $user_status = '';
                                            $user_status .= $row->scorm_info[$j]->user_status ? _CMN_YES : _CMN_NO;
                                            $user_status .= isset($row->scorm_info[$j]->user_grade) ? ' ' . $row->scorm_info[$j]->user_grade : '';
                                            $user_status .= isset($row->scorm_info[$j]->user_pts) ? ' (' . $row->scorm_info[$j]->user_pts . ')' : '';
                                            $data_grade[$i][] = $user_status;
                                        }
                                        $sc_num2++;
                                    }
                                }
                                $j++;
                            }
                        }
                    }
                    foreach ($lists['quiz_rows'][$i] as $quiz_row) {
                        $title_headers[$i][] = $quiz_row->c_title;
                        $j = 0;
                        while ($j < count($row->quiz_info)) {
                            if ($row->quiz_info[$j]->gbi_id == $quiz_row->c_id) {
                                if ($row->quiz_info[$j]->user_status == -1) {
                                    $data_grade[$i][] = '-';
                                } else {
                                    $user_status = '';
                                    //									$user_status .= $row->quiz_info[$j]->user_status ? _CMN_YES : _CMN_NO;
                                    //									$user_status .= ' '.$row->quiz_info[$j]->user_grade.' ';
                                    //									$user_status .= '('.$row->quiz_info[$j]->user_pts_full.')';
                                    $user_status = JLMS_showQuizStatus($row->quiz_info[$j], '', 1);
                                    $data_grade[$i][] = $user_status;
                                }
                            }
                            $j++;
                        }
                    }
                    foreach ($lists['gb_rows'][$i] as $gb_row) {
                        $title_headers[$i][] = $gb_row->gbi_name;
                    }
                    $j = 0;
                    while ($j < count($row->grade_info)) {
                        $data_grade[$i][] = $row->grade_info[$j]->user_grade;
                        $j++;
                    }
                }
            }
            $results['course_info'] = $course_info;
            $results['title_headers'] = $title_headers;
            $results['data_grade'] = $data_grade;
            $results['data'] = array();
            foreach ($course_info as $n => $ci) {
                $results['data'][$n][] = $title_headers[$n];
                $results['data'][$n][] = $data_grade[$n];
            }
            break;
    }
    //echo '<pre>';
    //print_r($results);
    //print_r($reporting_header);
    //echo '</pre>';
    //die;
    global $task;
    if ($task == 'report_access') {
        $tmpl_name = 'access_report';
        $prefix_title = str_replace("_", " ", $tmpl_name);
    } else {
        if ($task == 'report_certif') {
            $tmpl_name = 'completion_report';
            $prefix_title = str_replace("_", " ", $tmpl_name);
        } else {
            if ($task == 'report_grade') {
                $tmpl_name = 'user_report';
                $prefix_title = str_replace("_", " ", $tmpl_name);
            }
        }
    }
    JLMS_reporting::exportXLS($results, $reporting_header, $tmpl_name, $prefix_title);
}