Exemple #1
0
if (!isset($op)) {
    $op = null;
}
switch ($op) {
    case 'answer':
        if (isset($useranswer)) {
            $exercise = ExerciseDAO::getExercise($id_node);
            $correttore = ExerciseCorrectionFactory::create($exercise->getExerciseFamily());
            $correttore->rateStudentAnswer($exercise, $useranswer, $sess_id_user, $sess_id_course_instance);
            /*
             * salviamo l'esercizio svolto solo se l'utente che lo ha svolto
             * e' uno studente, altrimenti si tratta di un autore o di un tutor che ha
             * testato l'esercizio.
             */
            if ($id_profile == AMA_TYPE_STUDENT) {
                if (!ExerciseDAO::save($exercise)) {
                    $errObj = new ADA_Error(NULL, translateFN('Errore nel salvataggio della risposta utente'));
                }
                // se l'esercizio appena corretto è un esercizio di sbarramento e lo studente lo ha superato,
                // aumenta di uno il livello dello studente
                if ($correttore->raiseUserLevel($exercise)) {
                    $result = $dh->raise_student_level($sess_id_user, $sess_id_course_instance, 1);
                    if (AMA_DataHandler::isError($result)) {
                        $errObj = new ADA_Error($result, translateFN("Errore nell'aggiornamento dati utente"));
                    }
                    //$new_user_level = $user_level + 1;
                    $new_user_level = $userObj->get_student_level($sess_id_user, $sess_id_course_instance);
                    //$max_level = ADA_MAX_USER_LEVEL; // da config_install.inc.php
                    $max_level = $dh->get_course_max_level($sess_id_course);
                    if ($new_user_level >= $max_level) {
                        // se è l'ultimo esercizio (ovvero se il livello dello studente è il massimo possibile)