HEX
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/8.0.30
System: Linux multiplicar 3.10.0-1160.102.1.el7.x86_64 #1 SMP Tue Oct 17 15:42:21 UTC 2023 x86_64
User: root (0)
PHP: 8.0.30
Disabled: NONE
Upload Files
File: /var/www/html/elearningbasa.sumar.com.py/local/quiz_autostart-bk/lib-no.php
<?php
defined('MOODLE_INTERNAL') || die();

function local_quiz_autostart_before_http_headers() {
    global $PAGE, $USER, $DB;

    // Se aplica solo en view.php de cuestionarios
    if ($PAGE->pagetype !== 'mod-quiz-view') {
        return;
    }

    if (empty($PAGE->cm) || $PAGE->cm->modname !== 'quiz') {
        return;
    }

    $quizid = $PAGE->cm->instance;
    $cmid   = $PAGE->cm->id;

    // IDs de cuestionarios que queremos auto-redirigir
    $targetquizzes = [219,220,221,222,223,224,225,226];
    if (!in_array($quizid, $targetquizzes)) {
        return;
    }

    // Solo estudiantes
    $context = context_module::instance($cmid);
    if (is_siteadmin() || has_capability('mod/quiz:preview', $context, $USER)) {
        return;
    }

    // Comprobamos si hay intentos restantes
    require_once($CFG->dirroot . '/mod/quiz/locallib.php');
    $quizobj = quiz::create($PAGE->cm->instance, $USER->id);
    $accessmanager = $quizobj->get_access_manager(time());
    $currentattempts = quiz_get_user_attempts($quizobj->get_quizid(), $USER->id, 'all', true);
    $lastfinishedattempt = end($currentattempts);

    if (!$quizobj->is_preview_user() && !$quizobj->is_open(time())) {
        return; // No está abierto
    }

    // Si quedan intentos → redirigir directo al intento
    if ($quizobj->get_num_attempts_allowed() == 0 ||
        count($currentattempts) < $quizobj->get_num_attempts_allowed()) {

        $url = new moodle_url('/mod/quiz/startattempt.php', ['cmid' => $cmid, 'sesskey' => sesskey()]);
        redirect($url);
        exit;
    }

    // Si ya no quedan intentos → redirigir al curso
    $courseurl = new moodle_url('/course/view.php', ['id' => $PAGE->cm->course]);
    redirect($courseurl);
    exit;
}