AnonSec Team
Server IP : 72.167.149.90  /  Your IP : 216.73.216.228
Web Server : Apache
System : Linux server.zoomride.app 4.18.0-553.158.1.el8_10.x86_64 #1 SMP Wed Aug 26 03:18:33 EDT 2026 x86_64
User : zoomride2022 ( 1001)
PHP Version : 8.3.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON
Directory (0700) :  /home/zoomride2022/.trash/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : /home/zoomride2022/.trash/scorm_admin_ui_final.zip
PKD�xZ���jjadmin-ui.php<?php
add_action('admin_menu', 'mst_lms_register_scorm_progress_menu');

function mst_lms_register_scorm_progress_menu() {
    add_menu_page(
        'SCORM Progress',
        'SCORM Progress',
        'manage_options',
        'scorm-progress',
        'mst_lms_render_scorm_progress_page',
        'dashicons-welcome-learn-more',
        30
    );
}

function mst_lms_render_scorm_progress_page() {
    global $wpdb;

    $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,
            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
    ");

    echo '<div class="wrap"><h1>SCORM Course Progress</h1><table class="widefat fixed">';
    echo '<thead><tr><th>Student</th><th>Email</th><th>Course</th><th>Status</th><th>Progress %</th><th>Certificate</th></tr></thead><tbody>';

    if ($results) {
        foreach ($results as $row) {
            $status = ucfirst($row->completion_status ?: 'incomplete');
            $percent = intval($row->progress_percent);
            $cert_link = ($row->success_status === 'passed')
                ? "<a href='" . esc_url(admin_url('admin-ajax.php?action=mst_lms_view_certificate&user_id=' . $row->user_id . '&course_id=' . $row->course_id)) . "' target='_blank'>View Certificate</a>"
                : '-';

            echo "<tr>
                <td>{$row->display_name}</td>
                <td>{$row->user_email}</td>
                <td>{$row->post_title}</td>
                <td>{$status}</td>
                <td>{$percent}%</td>
                <td>{$cert_link}</td>
            </tr>";
        }
    } else {
        echo '<tr><td colspan="6">No SCORM progress data found.</td></tr>';
    }

    echo '</tbody></table></div>';
}

add_action('admin_init', 'mst_lms_view_certificate_handler');

function mst_lms_view_certificate_handler() {
    if (!is_admin() || !current_user_can('manage_options')) return;

    if (isset($_GET['action']) && $_GET['action'] === 'mst_lms_view_certificate') {
        $user_id = intval($_GET['user_id']);
        $course_id = intval($_GET['course_id']);

        if (class_exists('STM_LMS_Certificate')) {
            $certificate = new STM_LMS_Certificate($user_id, $course_id);
            $certificate->output_pdf();
            exit;
        }
        wp_die('Certificate not available.');
    }
}PKD�xZ���jj��admin-ui.phpPK:�

AnonSec - 2021