Warning: file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/ru.json): Failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /home/zoomride2022/public_html/myzoomride.com/wp-includes/certificates/system.php on line 107

Warning: Cannot modify header information - headers already sent by (output started at /home/zoomride2022/public_html/myzoomride.com/wp-includes/certificates/system.php:1) in /home/zoomride2022/public_html/myzoomride.com/wp-includes/certificates/system.php on line 234

Warning: Cannot modify header information - headers already sent by (output started at /home/zoomride2022/public_html/myzoomride.com/wp-includes/certificates/system.php:1) in /home/zoomride2022/public_html/myzoomride.com/wp-includes/certificates/system.php on line 235

Warning: Cannot modify header information - headers already sent by (output started at /home/zoomride2022/public_html/myzoomride.com/wp-includes/certificates/system.php:1) in /home/zoomride2022/public_html/myzoomride.com/wp-includes/certificates/system.php on line 236

Warning: Cannot modify header information - headers already sent by (output started at /home/zoomride2022/public_html/myzoomride.com/wp-includes/certificates/system.php:1) in /home/zoomride2022/public_html/myzoomride.com/wp-includes/certificates/system.php on line 237

Warning: Cannot modify header information - headers already sent by (output started at /home/zoomride2022/public_html/myzoomride.com/wp-includes/certificates/system.php:1) in /home/zoomride2022/public_html/myzoomride.com/wp-includes/certificates/system.php on line 238

Warning: Cannot modify header information - headers already sent by (output started at /home/zoomride2022/public_html/myzoomride.com/wp-includes/certificates/system.php:1) in /home/zoomride2022/public_html/myzoomride.com/wp-includes/certificates/system.php on line 239
PKyZ)uu admin-ui.phpprefix . 'stm_lms_user_course_scorm'; $user_courses_table = $wpdb->prefix . 'stm_lms_user_courses'; $users_table = $wpdb->prefix . 'users'; $posts_table = $wpdb->prefix . 'posts'; $results = $wpdb->get_results(" SELECT uc.user_course_id, uc.user_id, uc.course_id, uc.progress_percent, uc.end_time, u.display_name, u.user_email, p.post_title, MAX(CASE WHEN sc.parameter = 'cmi.completion_status' THEN sc.value END) AS completion_status, MAX(CASE WHEN sc.parameter = 'cmi.success_status' THEN sc.value END) AS success_status FROM {$user_courses_table} uc LEFT JOIN {$users_table} u ON uc.user_id = u.ID LEFT JOIN {$posts_table} p ON uc.course_id = p.ID LEFT JOIN {$scorm_table} sc ON uc.user_course_id = sc.user_course_id GROUP BY uc.user_course_id HAVING completion_status IS NOT NULL OR success_status IS NOT NULL "); $export_url = esc_url(admin_url('admin.php?page=scorm-progress&download_excel=1')); echo '

SCORM Course Progress

'; echo "

Download as Excel

"; echo ''; echo ''; if ($results) { foreach ($results as $row) { $status = ucfirst($row->completion_status ?: 'incomplete'); $percent = intval($row->progress_percent); $completed_date = $row->end_time ? date('Y-m-d', $row->end_time) : '-'; $cert_link = ($row->success_status === 'passed') ? home_url("/certificate-page/?user={$row->user_id}&course={$row->course_id}") : ''; echo ""; } } else { echo ''; } echo '
StudentEmailCourseStatusProgress %Completed OnCertificate
{$row->display_name} {$row->user_email} {$row->post_title} {$status} {$percent}% {$completed_date} " . ($cert_link ? "View Certificate" : '-') . "
No SCORM progress data found.
'; } function mst_lms_download_scorm_excel() { global $wpdb; require_once ABSPATH . 'wp-admin/includes/class-pclzip.php'; require_once ABSPATH . 'wp-admin/includes/file.php'; require_once ABSPATH . 'wp-admin/includes/template.php'; require_once plugin_dir_path(__FILE__) . '../../../includes/libs/phpspreadsheet/vendor/autoload.php'; $scorm_table = $wpdb->prefix . 'stm_lms_user_course_scorm'; $user_courses_table = $wpdb->prefix . 'stm_lms_user_courses'; $users_table = $wpdb->prefix . 'users'; $posts_table = $wpdb->prefix . 'posts'; $results = $wpdb->get_results(" SELECT uc.user_course_id, uc.user_id, uc.course_id, uc.progress_percent, uc.end_time, u.display_name, u.user_email, p.post_title, MAX(CASE WHEN sc.parameter = 'cmi.completion_status' THEN sc.value END) AS completion_status, MAX(CASE WHEN sc.parameter = 'cmi.success_status' THEN sc.value END) AS success_status FROM {$user_courses_table} uc LEFT JOIN {$users_table} u ON uc.user_id = u.ID LEFT JOIN {$posts_table} p ON uc.course_id = p.ID LEFT JOIN {$scorm_table} sc ON uc.user_course_id = sc.user_course_id GROUP BY uc.user_course_id HAVING completion_status IS NOT NULL OR success_status IS NOT NULL "); $spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); $sheet->fromArray( ['Student', 'Email', 'Course', 'Status', 'Progress %', 'Completed On', 'Certificate Link'], NULL, 'A1' ); $rowIndex = 2; foreach ($results as $row) { $cert_link = ($row->success_status === 'passed') ? home_url("/certificate-page/?user={$row->user_id}&course={$row->course_id}") : ''; $completed_date = $row->end_time ? date('Y-m-d', $row->end_time) : '-'; $sheet->fromArray( [ $row->display_name, $row->user_email, $row->post_title, ucfirst($row->completion_status ?: 'incomplete'), intval($row->progress_percent) . '%', $completed_date, $cert_link, ], NULL, 'A' . $rowIndex++ ); } header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename="scorm_progress.xlsx"'); header('Cache-Control: max-age=0'); $writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet); $writer->save('php://output'); exit; }PKyZ)uu admin-ui.phpPK: