<?php /* For licensing terms, see /license.txt */ require_once '../inc/global.inc.php'; $isAllowedToEdit = api_is_allowed_to_edit(true, true); if (!$isAllowedToEdit) { api_not_allowed(true); exit; } if (!isset($_REQUEST['user'], $_REQUEST['exercise'], $_REQUEST['id'])) { api_not_allowed(true); exit; } $em = Database::getManager(); $trackedExercise = $em ->getRepository('ChamiloCoreBundle:TrackEExercises') ->find(intval($_REQUEST['id'])); if ( $trackedExercise->getExeUserId() != intval($_REQUEST['user']) || $trackedExercise->getExeExoId() != intval($_REQUEST['exercise']) ) { api_not_allowed(true); exit; } $attemps = $em->getRepository('ChamiloCoreBundle:TrackEAttempt') ->findBy([ 'exeId' => $trackedExercise->getExeId(), 'userId' => $trackedExercise->getExeUserId() ]); $newResult = 0; foreach ($attemps as $attemp) { $questionId = $attemp->getQuestionId(); $question = $em->find('ChamiloCourseBundle:CQuizQuestion', $questionId); if (!$question) { continue; } $answers = $em->getRepository('ChamiloCourseBundle:CQuizAnswer')->findBy([ 'questionId' => $questionId, 'correct' => 1 ]); $newMarks = 0; foreach ($answers as $answer) { if ($answer->getId() != $attemp->getAnswer()) { continue; } $newMarks += $answer->getPonderation(); } $newResult += $newMarks; $attemp->setMarks($newMarks); $em->merge($attemp); } $trackedExercise->setExeResult($newResult); $em->merge($trackedExercise); $em->flush();