You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							624 lines
						
					
					
						
							24 KiB
						
					
					
				
			
		
		
	
	
							624 lines
						
					
					
						
							24 KiB
						
					
					
				<?php
 | 
						|
/* For licensing terms, see /license.txt */
 | 
						|
 | 
						|
use Chamilo\CoreBundle\Component\Utils\ActionIcon;
 | 
						|
use Chamilo\CoreBundle\Component\Utils\ToolIcon;
 | 
						|
use Chamilo\CoreBundle\Component\Utils\ObjectIcon;
 | 
						|
 | 
						|
ob_start();
 | 
						|
$cidReset = true;
 | 
						|
require_once __DIR__.'/../inc/global.inc.php';
 | 
						|
 | 
						|
api_block_anonymous_users();
 | 
						|
 | 
						|
$this_section = SECTION_TRACKING;
 | 
						|
$export_csv = false;
 | 
						|
if (isset($_REQUEST['export']) && 'csv' == $_REQUEST['export']) {
 | 
						|
    $export_csv = true;
 | 
						|
}
 | 
						|
$action = isset($_GET['action']) ? $_GET['action'] : '';
 | 
						|
 | 
						|
$id_coach = api_get_user_id();
 | 
						|
if (isset($_REQUEST['id_coach']) && '' != $_REQUEST['id_coach']) {
 | 
						|
    $id_coach = (int) $_REQUEST['id_coach'];
 | 
						|
}
 | 
						|
 | 
						|
$allowToTrack = api_is_platform_admin(true, true) || api_is_teacher();
 | 
						|
 | 
						|
if (!$allowToTrack) {
 | 
						|
    api_not_allowed(true);
 | 
						|
}
 | 
						|
 | 
						|
$studentId = isset($_GET['student']) ? (int) $_GET['student'] : 0;
 | 
						|
$sessionId = isset($_GET['sid']) ? (int) $_GET['sid'] : 0;
 | 
						|
$currentUrl = api_get_self().'?student='.$studentId.'&sid='.$sessionId;
 | 
						|
 | 
						|
switch ($action) {
 | 
						|
    case 'export_to_pdf':
 | 
						|
        $allStudents = isset($_GET['all_students']) && 1 === (int) $_GET['all_students'] ? true : false;
 | 
						|
        $sessionToExport = isset($_GET['session_to_export']) ? (int) $_GET['session_to_export'] : 0;
 | 
						|
        $type = isset($_GET['type']) ? $_GET['type'] : 'attendance';
 | 
						|
        $sessionInfo = api_get_session_info($sessionToExport);
 | 
						|
        if (empty($sessionInfo)) {
 | 
						|
            api_not_allowed(true);
 | 
						|
        }
 | 
						|
        $courses = Tracking::get_courses_list_from_session($sessionToExport);
 | 
						|
        $studentList = [$studentId];
 | 
						|
        if ($allStudents) {
 | 
						|
            $users = SessionManager::get_users_by_session($sessionToExport, 0);
 | 
						|
            $studentList = array_column($users, 'user_id');
 | 
						|
        }
 | 
						|
 | 
						|
        $totalCourses = count($courses);
 | 
						|
        $scoreDisplay = ScoreDisplay::instance();
 | 
						|
        $table = Database::get_main_table(TABLE_STATISTIC_TRACK_E_COURSE_ACCESS);
 | 
						|
        $pdfList = [];
 | 
						|
        foreach ($studentList as $studentId) {
 | 
						|
            $studentInfo = api_get_user_info($studentId);
 | 
						|
            $timeSpent = 0;
 | 
						|
            $numberVisits = 0;
 | 
						|
            $progress = 0;
 | 
						|
            $timeSpentPerCourse = [];
 | 
						|
            $progressPerCourse = [];
 | 
						|
 | 
						|
            foreach ($courses as $course) {
 | 
						|
                $courseId = $course['c_id'];
 | 
						|
                $courseTimeSpent = Tracking::get_time_spent_on_the_course($studentId, $courseId, $sessionToExport);
 | 
						|
                $timeSpentPerCourse[$courseId] = $courseTimeSpent;
 | 
						|
                $timeSpent += $courseTimeSpent;
 | 
						|
                $sql = "SELECT DISTINCT count(course_access_id) as count
 | 
						|
                        FROM $table
 | 
						|
                        WHERE
 | 
						|
                            c_id = $courseId AND
 | 
						|
                            session_id = $sessionToExport AND
 | 
						|
                            user_id = $studentId";
 | 
						|
                $result = Database::query($sql);
 | 
						|
                $row = Database::fetch_array($result);
 | 
						|
                $numberVisits += $row['count'];
 | 
						|
                $courseProgress = Tracking::get_avg_student_progress(
 | 
						|
                    $studentId,
 | 
						|
                    $course['code'],
 | 
						|
                    [],
 | 
						|
                    $sessionToExport
 | 
						|
                );
 | 
						|
                $progressPerCourse[$courseId] = $courseProgress;
 | 
						|
                $progress += $courseProgress;
 | 
						|
            }
 | 
						|
 | 
						|
            $average = round($progress / $totalCourses, 1);
 | 
						|
            $average = empty($average) ? '0%' : $average.'%';
 | 
						|
            $first = Tracking::get_first_connection_date($studentId);
 | 
						|
            $last = Tracking::get_last_connection_date($studentId);
 | 
						|
            $timeSpentContent = '';
 | 
						|
            $pdfTitle = get_lang('AttestationOfAttendance');
 | 
						|
            if ('attendance' === $type) {
 | 
						|
                $table = new HTML_Table(['class' => 'table table-hover table-striped data_table']);
 | 
						|
                $column = 0;
 | 
						|
                $row = 0;
 | 
						|
                $headers = [
 | 
						|
                    get_lang('Time spent'),
 | 
						|
                    get_lang('Number of visits'),
 | 
						|
                    get_lang('Global progress'),
 | 
						|
                    get_lang('First connection'),
 | 
						|
                    get_lang('Last connexion date'),
 | 
						|
                ];
 | 
						|
                foreach ($headers as $header) {
 | 
						|
                    $table->setHeaderContents($row, $column, $header);
 | 
						|
                    $column++;
 | 
						|
                }
 | 
						|
                $table->setCellContents(1, 0, api_time_to_hms($timeSpent));
 | 
						|
                $table->setCellContents(1, 1, $numberVisits);
 | 
						|
                $table->setCellContents(1, 2, $average);
 | 
						|
                $table->setCellContents(1, 3, $first);
 | 
						|
                $table->setCellContents(1, 4, $last);
 | 
						|
                $timeSpentContent = $table->toHtml();
 | 
						|
            } else {
 | 
						|
                $pdfTitle = get_lang('Certificate of achievement');
 | 
						|
            }
 | 
						|
 | 
						|
            $courseTable = '';
 | 
						|
            if (!empty($courses)) {
 | 
						|
                $courseTable .= '<table class="table table-hover table-striped data_table">';
 | 
						|
                $courseTable .= '<thead>';
 | 
						|
                $courseTable .= '<tr>
 | 
						|
                    <th>'.get_lang('Formation unit').'</th>
 | 
						|
                    <th>'.get_lang('Connection time').'</th>
 | 
						|
                    <th>'.get_lang('Progress').'</th>';
 | 
						|
 | 
						|
                if ('attendance' === $type) {
 | 
						|
                    $courseTable .= '<th>'.get_lang('Score').'</th>';
 | 
						|
                }
 | 
						|
                $courseTable .= '</tr>';
 | 
						|
                $courseTable .= '</thead>';
 | 
						|
                $courseTable .= '<tbody>';
 | 
						|
 | 
						|
                $totalCourseTime = 0;
 | 
						|
                $totalAttendance = [0, 0];
 | 
						|
                $totalScore = 0;
 | 
						|
                $totalProgress = 0;
 | 
						|
                $gradeBookTotal = [0, 0];
 | 
						|
                $totalEvaluations = '0/0 (0%)';
 | 
						|
 | 
						|
                foreach ($courses as $course) {
 | 
						|
                    $courseId = $course['c_id'];
 | 
						|
                    $courseInfoItem = api_get_course_info_by_id($courseId);
 | 
						|
                    $courseId = $courseInfoItem['real_id'];
 | 
						|
                    $courseCodeItem = $courseInfoItem['code'];
 | 
						|
 | 
						|
                    $isSubscribed = CourseManager::is_user_subscribed_in_course(
 | 
						|
                        $studentId,
 | 
						|
                        $courseCodeItem,
 | 
						|
                        true,
 | 
						|
                        $sessionToExport
 | 
						|
                    );
 | 
						|
 | 
						|
                    if ($isSubscribed) {
 | 
						|
                        $timeInSeconds = $timeSpentPerCourse[$courseId];
 | 
						|
                        $totalCourseTime += $timeInSeconds;
 | 
						|
                        $time_spent_on_course = api_time_to_hms($timeInSeconds);
 | 
						|
                        $progress = $progressPerCourse[$courseId];
 | 
						|
                        $totalProgress += $progress;
 | 
						|
 | 
						|
                        $bestScore = Tracking::get_avg_student_score(
 | 
						|
                            $studentId,
 | 
						|
                            $courseCodeItem,
 | 
						|
                            [],
 | 
						|
                            $sessionToExport,
 | 
						|
                            false,
 | 
						|
                            false,
 | 
						|
                            true
 | 
						|
                        );
 | 
						|
 | 
						|
                        if (is_numeric($bestScore)) {
 | 
						|
                            $totalScore += $bestScore;
 | 
						|
                        }
 | 
						|
 | 
						|
                        $progress = empty($progress) ? '0%' : $progress.'%';
 | 
						|
                        $score = empty($bestScore) ? '0%' : $bestScore.'%';
 | 
						|
 | 
						|
                        $courseTable .= '<tr>
 | 
						|
                        <td>
 | 
						|
                            <a href="'.$courseInfoItem['course_public_url'].'?id_session='.$sessionToExport.'">'.
 | 
						|
                            $courseInfoItem['title'].'</a>
 | 
						|
                        </td>
 | 
						|
                        <td >'.$time_spent_on_course.'</td>
 | 
						|
                        <td >'.$progress.'</td>';
 | 
						|
                        if ('attendance' === $type) {
 | 
						|
                            $courseTable .= '<td >'.$score.'</td>';
 | 
						|
                        }
 | 
						|
                        $courseTable .= '</tr>';
 | 
						|
                    }
 | 
						|
                }
 | 
						|
 | 
						|
                $totalAttendanceFormatted = $scoreDisplay->display_score($totalAttendance);
 | 
						|
                $totalScoreFormatted = $scoreDisplay->display_score([$totalScore / $totalCourses, 100], SCORE_AVERAGE);
 | 
						|
                $totalProgressFormatted = $scoreDisplay->display_score(
 | 
						|
                    [$totalProgress / $totalCourses, 100],
 | 
						|
                    SCORE_AVERAGE
 | 
						|
                );
 | 
						|
                $totalEvaluations = $scoreDisplay->display_score($gradeBookTotal);
 | 
						|
                $totalTimeFormatted = api_time_to_hms($totalCourseTime);
 | 
						|
                $courseTable .= '
 | 
						|
                    <tr>
 | 
						|
                        <th>'.get_lang('Total').'</th>
 | 
						|
                        <th>'.$totalTimeFormatted.'</th>
 | 
						|
                        <th>'.$totalProgressFormatted.'</th>
 | 
						|
                    ';
 | 
						|
                if ('attendance' === $type) {
 | 
						|
                    $courseTable .= '<th>'.$totalScoreFormatted.'</th>';
 | 
						|
                }
 | 
						|
                $courseTable .= '</tr>';
 | 
						|
                $courseTable .= '</tbody></table>';
 | 
						|
            }
 | 
						|
 | 
						|
            $tpl = new Template('', false, false, false, true, false, false);
 | 
						|
            $tpl->assign('title', $pdfTitle);
 | 
						|
            $tpl->assign('session_title', $sessionInfo['name']);
 | 
						|
            $tpl->assign('session_info', $sessionInfo);
 | 
						|
            $sessionCategoryTitle = '';
 | 
						|
            if (isset($sessionInfo['session_category_id'])) {
 | 
						|
                $sessionCategory = SessionManager::get_session_category($sessionInfo['session_category_id']);
 | 
						|
                if ($sessionCategory) {
 | 
						|
                    $sessionCategoryTitle = $sessionCategory['name'];
 | 
						|
                }
 | 
						|
            }
 | 
						|
            $dateData = SessionManager::parseSessionDates($sessionInfo, false);
 | 
						|
            $dateToString = $dateData['access'];
 | 
						|
            $tpl->assign('session_display_dates', $dateToString);
 | 
						|
            $tpl->assign('session_category_title', $sessionCategoryTitle);
 | 
						|
            $tpl->assign('student', $studentInfo['complete_name']);
 | 
						|
            $tpl->assign('student_info', $studentInfo);
 | 
						|
            $tpl->assign('student_info_extra_fields', UserManager::get_extra_user_data($studentInfo['user_id']));
 | 
						|
            $tpl->assign('table_progress', $timeSpentContent);
 | 
						|
            $tpl->assign(
 | 
						|
                'subtitle',
 | 
						|
                sprintf(
 | 
						|
                    get_lang('InSessionXYouHadTheFollowingResults'),
 | 
						|
                    $sessionInfo['name']
 | 
						|
                )
 | 
						|
            );
 | 
						|
            $tpl->assign('table_course', $courseTable);
 | 
						|
            $template = 'pdf_export_student.tpl';
 | 
						|
            if ('achievement' === $type) {
 | 
						|
                $template = 'certificate_achievement.tpl';
 | 
						|
            }
 | 
						|
            $content = $tpl->fetch($tpl->get_template('my_space/'.$template));
 | 
						|
 | 
						|
            $params = [
 | 
						|
                'pdf_title' => get_lang('Resume'),
 | 
						|
                'session_info' => $sessionInfo,
 | 
						|
                'course_info' => '',
 | 
						|
                'pdf_date' => '',
 | 
						|
                'student_info' => $studentInfo,
 | 
						|
                'show_grade_generated_date' => true,
 | 
						|
                'show_real_course_teachers' => false,
 | 
						|
                'show_teacher_as_myself' => false,
 | 
						|
                'orientation' => 'P',
 | 
						|
            ];
 | 
						|
            @$pdf = new PDF('A4', $params['orientation'], $params);
 | 
						|
            $pdf->setBackground($tpl->theme);
 | 
						|
            $mode = 'D';
 | 
						|
 | 
						|
            $pdfName = $sessionInfo['name'].'_'.$studentInfo['complete_name'];
 | 
						|
            if ($allStudents) {
 | 
						|
                $mode = 'F';
 | 
						|
                $pdfName = $studentInfo['complete_name'];
 | 
						|
            }
 | 
						|
            $pdf->set_footer();
 | 
						|
            $result = @$pdf->content_to_pdf(
 | 
						|
                $content,
 | 
						|
                '',
 | 
						|
                $pdfName,
 | 
						|
                null,
 | 
						|
                $mode,
 | 
						|
                false,
 | 
						|
                null,
 | 
						|
                false,
 | 
						|
                true,
 | 
						|
                false
 | 
						|
            );
 | 
						|
            $pdfList[] = $result;
 | 
						|
        }
 | 
						|
 | 
						|
        if (empty($pdfList)) {
 | 
						|
            api_not_allowed(true);
 | 
						|
        }
 | 
						|
 | 
						|
        // Creating a ZIP file.
 | 
						|
        $tempZipFile = api_get_path(SYS_ARCHIVE_PATH).uniqid('report_session_'.$sessionToExport, true).'.zip';
 | 
						|
 | 
						|
        $zip = new PclZip($tempZipFile);
 | 
						|
        foreach ($pdfList as $file) {
 | 
						|
            $zip->add(
 | 
						|
                $file,
 | 
						|
                PCLZIP_OPT_REMOVE_PATH,
 | 
						|
                api_get_path(SYS_ARCHIVE_PATH)
 | 
						|
            );
 | 
						|
        }
 | 
						|
        $name = $sessionInfo['name'].'_'.api_get_utc_datetime().'.zip';
 | 
						|
        DocumentManager::file_send_for_download($tempZipFile, true, $name);
 | 
						|
        exit;
 | 
						|
        break;
 | 
						|
}
 | 
						|
$htmlHeadXtra[] = api_get_jqgrid_js();
 | 
						|
$interbreadcrumb[] = ['url' => 'index.php', 'name' => get_lang('Reporting')];
 | 
						|
Display::display_header(get_lang('Course sessions'));
 | 
						|
 | 
						|
if (api_is_platform_admin(true, true)) {
 | 
						|
    $a_sessions = SessionManager::get_sessions_followed_by_drh(api_get_user_id());
 | 
						|
 | 
						|
    if (!api_is_session_admin()) {
 | 
						|
        $menu_items[] = Display::url(
 | 
						|
            Display::getMdiIcon(ToolIcon::TRACKING, 'ch-tool-icon', null, ICON_SIZE_MEDIUM, get_lang('View my progress')),
 | 
						|
            api_get_path(WEB_CODE_PATH).'auth/my_progress.php'
 | 
						|
        );
 | 
						|
        $menu_items[] = Display::url(
 | 
						|
            Display::getMdiIcon(ObjectIcon::USER, 'ch-tool-icon', null, ICON_SIZE_MEDIUM, get_lang('Learners')),
 | 
						|
            'index.php?view=drh_students&display=yourstudents'
 | 
						|
        );
 | 
						|
        $menu_items[] = Display::url(
 | 
						|
            Display::getMdiIcon(ObjectIcon::TEACHER, 'ch-tool-icon', null, ICON_SIZE_MEDIUM, get_lang('Teachers')),
 | 
						|
            'teachers.php'
 | 
						|
        );
 | 
						|
        $menu_items[] = Display::url(
 | 
						|
            Display::getMdiIcon(ObjectIcon::COURSE, 'ch-tool-icon', null, ICON_SIZE_MEDIUM, get_lang('Courses')),
 | 
						|
            'course.php'
 | 
						|
        );
 | 
						|
        $menu_items[] = Display::url(
 | 
						|
            Display::getMdiIcon(ObjectIcon::SESSION, 'ch-tool-icon-disabled', null, ICON_SIZE_MEDIUM, get_lang('Course sessions')),
 | 
						|
            '#'
 | 
						|
        );
 | 
						|
    } else {
 | 
						|
        $menu_items[] = Display::url(
 | 
						|
            Display::getMdiIcon(ObjectIcon::TEACHER, 'ch-tool-icon', null, ICON_SIZE_MEDIUM, get_lang('Trainers')),
 | 
						|
            'session_admin_teachers.php'
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    $menu_items[] = Display::url(
 | 
						|
        Display::getMdiIcon(ObjectIcon::ASSIGNMENT, 'ch-tool-icon', null, ICON_SIZE_MEDIUM, get_lang('Assignments report')),
 | 
						|
        api_get_path(WEB_CODE_PATH).'my_space/works_in_session_report.php'
 | 
						|
    );
 | 
						|
    $menu_items[] = Display::url(
 | 
						|
        Display::getMdiIcon(ObjectIcon::TIME_REPORT, 'ch-tool-icon', null, ICON_SIZE_MEDIUM, get_lang('Teachers time report by session')),
 | 
						|
        api_get_path(WEB_CODE_PATH).'admin/teachers_time_by_session_report.php'
 | 
						|
    );
 | 
						|
 | 
						|
    if (!api_is_session_admin()) {
 | 
						|
        $menu_items[] = Display::url(
 | 
						|
            Display::getMdiIcon(ObjectIcon::SURVEY_DOODLE, 'ch-tool-icon', null, ICON_SIZE_MEDIUM, get_lang('Course sessionsPlanCalendar')),
 | 
						|
            api_get_path(WEB_CODE_PATH)."calendar/planification.php"
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    if (api_is_drh()) {
 | 
						|
        $menu_items[] = Display::url(
 | 
						|
            Display::getMdiIcon(ObjectIcon::SESSION, 'ch-tool-icon', null, ICON_SIZE_MEDIUM, get_lang('SessionFilterReport')),
 | 
						|
            api_get_path(WEB_CODE_PATH).'my_space/session_filter.php'
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    $actionsLeft = '';
 | 
						|
    $nb_menu_items = count($menu_items);
 | 
						|
    if ($nb_menu_items > 1) {
 | 
						|
        foreach ($menu_items as $key => $item) {
 | 
						|
            $actionsLeft .= $item;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    $actionsRight = '';
 | 
						|
    if (count($a_sessions) > 0) {
 | 
						|
        $actionsRight = Display::url(
 | 
						|
            Display::getMdiIcon(ActionIcon::PRINT, 'ch-tool-icon', null, ICON_SIZE_MEDIUM, get_lang('Print')),
 | 
						|
            'javascript: void(0);',
 | 
						|
            ['onclick' => 'javascript: window.print();']
 | 
						|
        );
 | 
						|
        $actionsRight .= Display::url(
 | 
						|
            Display::getMdiIcon(ActionIcon::EXPORT_CSV, 'ch-tool-icon', null, ICON_SIZE_MEDIUM, get_lang('CSV export')),
 | 
						|
            api_get_self().'?export=csv'
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    $toolbar = Display::toolbarAction('toolbar-session', [$actionsLeft, $actionsRight]);
 | 
						|
    echo $toolbar;
 | 
						|
 | 
						|
    echo Display::page_header(get_lang('Your sessions'));
 | 
						|
} elseif (api_is_teacher()) {
 | 
						|
    $actionsRight = Display::url(
 | 
						|
        Display::getMdiIcon(ObjectIcon::TIME_REPORT, 'ch-tool-icon', null, ICON_SIZE_MEDIUM, get_lang('Teachers time report by session')),
 | 
						|
        api_get_path(WEB_CODE_PATH).'admin/teachers_time_by_session_report.php'
 | 
						|
    );
 | 
						|
 | 
						|
    $toolbar = Display::toolbarAction('toolbar-session', ['', $actionsRight]);
 | 
						|
    echo $toolbar;
 | 
						|
 | 
						|
    echo Display::page_header(get_lang('Your sessions'));
 | 
						|
} else {
 | 
						|
    $a_sessions = Tracking::get_sessions_coached_by_user($id_coach);
 | 
						|
}
 | 
						|
 | 
						|
$form = new FormValidator(
 | 
						|
    'search_course',
 | 
						|
    'post',
 | 
						|
    api_get_path(WEB_CODE_PATH).'my_space/session.php'
 | 
						|
);
 | 
						|
$form->addElement('text', 'keyword', get_lang('Keyword'));
 | 
						|
 | 
						|
$extraFieldSession = new ExtraField('session');
 | 
						|
$extraFieldSession->addElements(
 | 
						|
    $form,
 | 
						|
    null,
 | 
						|
    [], //exclude
 | 
						|
    true
 | 
						|
);
 | 
						|
 | 
						|
$form->addButtonSearch(get_lang('Search'));
 | 
						|
$keyword = '';
 | 
						|
$result = SessionManager::getGridColumns('my_space');
 | 
						|
 | 
						|
$columns = $result['columns'];
 | 
						|
$columnModel = $result['column_model'];
 | 
						|
 | 
						|
$filterToString = '';
 | 
						|
if ($form->validate()) {
 | 
						|
    $values = $form->getSubmitValues();
 | 
						|
    $keyword = Security::remove_XSS($form->getSubmitValue('keyword'));
 | 
						|
    $extraField = new ExtraField('session');
 | 
						|
    $extraFields = $extraField->get_all(null, 'option_order');
 | 
						|
    $extraFields = array_column($extraFields, 'variable');
 | 
						|
    $filter = new stdClass();
 | 
						|
 | 
						|
    foreach ($columnModel as $col) {
 | 
						|
        if (isset($values[$col['index']]) && !empty($values[$col['index']]) &&
 | 
						|
            in_array(str_replace('extra_', '', $col['index']), $extraFields)
 | 
						|
        ) {
 | 
						|
            $rule = new stdClass();
 | 
						|
            $index = $col['index'];
 | 
						|
            $rule->field = $index;
 | 
						|
            $rule->op = 'in';
 | 
						|
            $data = $values[$index];
 | 
						|
            if (is_array($data) && array_key_exists($index, $data)) {
 | 
						|
                $data = $data[$index];
 | 
						|
            }
 | 
						|
            $rule->data = Security::remove_XSS($data);
 | 
						|
            $filter->rules[] = $rule;
 | 
						|
            $filter->groupOp = 'AND';
 | 
						|
        }
 | 
						|
    }
 | 
						|
    $filterToString = json_encode($filter);
 | 
						|
}
 | 
						|
$form->setDefaults(['keyword' => $keyword]);
 | 
						|
 | 
						|
$url = api_get_path(WEB_AJAX_PATH).
 | 
						|
    'model.ajax.php?a=get_sessions_tracking&_search=true&_force_search=true&filters='.$filterToString.'&keyword='.$keyword;
 | 
						|
 | 
						|
// Column config
 | 
						|
$extraParams = [
 | 
						|
    'autowidth' => 'true',
 | 
						|
    'height' => 'auto',
 | 
						|
];
 | 
						|
 | 
						|
/*$extraParams['postData'] = [
 | 
						|
    'filters' => [
 | 
						|
        'groupOp' => 'AND',
 | 
						|
        'rules' => $result['rules'],
 | 
						|
    ],
 | 
						|
];*/
 | 
						|
 | 
						|
$urlAjaxExtraField = api_get_path(WEB_AJAX_PATH).'extra_field.ajax.php?1=1';
 | 
						|
$orderUrl = api_get_path(WEB_AJAX_PATH).'session.ajax.php?a=order';
 | 
						|
 | 
						|
?>
 | 
						|
    <script>
 | 
						|
        function setSearchSelect(columnName) {
 | 
						|
            $("#sessions").jqGrid('setColProp', columnName, {
 | 
						|
            });
 | 
						|
        }
 | 
						|
        var added_cols = [];
 | 
						|
        var original_cols = [];
 | 
						|
        function clean_cols(grid, added_cols) {
 | 
						|
            // Cleaning
 | 
						|
            for (key in added_cols) {
 | 
						|
                grid.hideCol(key);
 | 
						|
            }
 | 
						|
            grid.showCol('name');
 | 
						|
            grid.showCol('display_start_date');
 | 
						|
            grid.showCol('display_end_date');
 | 
						|
            grid.showCol('course_title');
 | 
						|
        }
 | 
						|
 | 
						|
        function show_cols(grid, added_cols) {
 | 
						|
            grid.showCol('name').trigger('reloadGrid');
 | 
						|
            for (key in added_cols) {
 | 
						|
                grid.showCol(key);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        var second_filters = [];
 | 
						|
 | 
						|
        $(function() {
 | 
						|
            date_pick_today = function(elem) {
 | 
						|
                $(elem).datetimepicker({dateFormat: "yy-mm-dd"});
 | 
						|
                $(elem).datetimepicker('setDate', (new Date()));
 | 
						|
            }
 | 
						|
            date_pick_one_month = function(elem) {
 | 
						|
                $(elem).datetimepicker({dateFormat: "yy-mm-dd"});
 | 
						|
                next_month = Date.today().next().month();
 | 
						|
                $(elem).datetimepicker('setDate', next_month);
 | 
						|
            }
 | 
						|
 | 
						|
            // Great hack
 | 
						|
            register_second_select = function(elem) {
 | 
						|
                second_filters[$(elem).val()] = $(elem);
 | 
						|
            }
 | 
						|
 | 
						|
            fill_second_select = function(elem) {
 | 
						|
                $(elem).on("change", function() {
 | 
						|
                    composed_id = $(this).val();
 | 
						|
                    field_id = composed_id.split("#")[0];
 | 
						|
                    id = composed_id.split("#")[1];
 | 
						|
                    $.ajax({
 | 
						|
                        url: "<?php echo $urlAjaxExtraField; ?>&a=get_second_select_options",
 | 
						|
                        dataType: "json",
 | 
						|
                        data: "type=session&field_id="+field_id+"&option_value_id="+id,
 | 
						|
                        success: function(data) {
 | 
						|
                            my_select = second_filters[field_id];
 | 
						|
                            my_select.empty();
 | 
						|
                            $.each(data, function(index, value) {
 | 
						|
                                my_select.append($("<option/>", {
 | 
						|
                                    value: index,
 | 
						|
                                    text: value
 | 
						|
                                }));
 | 
						|
                            });
 | 
						|
                        }
 | 
						|
                    });
 | 
						|
                });
 | 
						|
            }
 | 
						|
 | 
						|
            <?php
 | 
						|
            echo Display::grid_js(
 | 
						|
                'sessions',
 | 
						|
                $url,
 | 
						|
                $columns,
 | 
						|
                $columnModel,
 | 
						|
                $extraParams,
 | 
						|
                [],
 | 
						|
                null,
 | 
						|
                true
 | 
						|
            );
 | 
						|
            ?>
 | 
						|
 | 
						|
            setSearchSelect("status");
 | 
						|
 | 
						|
            var grid = $("#sessions"),
 | 
						|
                prmSearch = {
 | 
						|
                    multipleSearch : true,
 | 
						|
                    overlay : false,
 | 
						|
                    width: 'auto',
 | 
						|
                    caption: '<?php echo addslashes(get_lang('Search')); ?>',
 | 
						|
                    formclass:'data_table',
 | 
						|
                    onSearch : function() {
 | 
						|
                        var postdata = grid.jqGrid('getGridParam', 'postData');
 | 
						|
                        if (postdata && postdata.filters) {
 | 
						|
                            filters = jQuery.parseJSON(postdata.filters);
 | 
						|
                            clean_cols(grid, added_cols);
 | 
						|
                            added_cols = [];
 | 
						|
                            $.each(filters, function(key, value) {
 | 
						|
                                if (key == 'rules') {
 | 
						|
                                    $.each(value, function(subkey, subvalue) {
 | 
						|
                                        added_cols[subvalue.field] = subvalue.field;
 | 
						|
                                    });
 | 
						|
                                }
 | 
						|
                            });
 | 
						|
                            show_cols(grid, added_cols);
 | 
						|
                        }
 | 
						|
                    },
 | 
						|
                    onReset: function() {
 | 
						|
                        clean_cols(grid, added_cols);
 | 
						|
                    }
 | 
						|
                };
 | 
						|
 | 
						|
            original_cols = grid.jqGrid('getGridParam', 'colModel');
 | 
						|
 | 
						|
            grid.jqGrid('navGrid','#sessions_pager',
 | 
						|
                {edit:false,add:false,del:false},
 | 
						|
                {height:280,reloadAfterSubmit:false}, // edit options
 | 
						|
                {height:280,reloadAfterSubmit:false}, // add options
 | 
						|
                {reloadAfterSubmit:false},// del options
 | 
						|
                prmSearch
 | 
						|
            );
 | 
						|
 | 
						|
            <?php
 | 
						|
            // Create the searching dialog.
 | 
						|
            //echo 'grid.searchGrid(prmSearch);';
 | 
						|
            ?>
 | 
						|
            // Fixes search table.
 | 
						|
            var searchDialogAll = $("#fbox_"+grid[0].id);
 | 
						|
            searchDialogAll.addClass("table");
 | 
						|
            var searchDialog = $("#searchmodfbox_"+grid[0].id);
 | 
						|
            searchDialog.addClass("ui-jqgrid ui-widget ui-widget-content ui-corner-all");
 | 
						|
            searchDialog.css({position:"adsolute", "z-index":"100", "float":"left", "top":"55%", "left" : "25%", "padding" : "5px", "border": "1px solid #CCC"})
 | 
						|
            var gbox = $("#gbox_"+grid[0].id);
 | 
						|
            gbox.before(searchDialog);
 | 
						|
            gbox.css({clear:"left"});
 | 
						|
 | 
						|
            // Select first elements by default
 | 
						|
            $('.input-elm').each(function() {
 | 
						|
                $(this).find('option:first').attr('selected', 'selected');
 | 
						|
            });
 | 
						|
 | 
						|
            $('.delete-rule').each(function(){
 | 
						|
                $(this).click(function(){
 | 
						|
                    $('.input-elm').each(function(){
 | 
						|
                        $(this).find('option:first').attr('selected', 'selected');
 | 
						|
                    });
 | 
						|
                });
 | 
						|
            });
 | 
						|
        });
 | 
						|
    </script>
 | 
						|
<?php
 | 
						|
 | 
						|
$form->display();
 | 
						|
 | 
						|
echo Display::grid_html('sessions');
 | 
						|
 | 
						|
Display::display_footer();
 | 
						|
 |