responseType = ImsLtiServiceResponse::TYPE_DELETE; $this->xmlRequest = $this->xmlRequest->deleteResultRequest; } protected function processBody() { $resultRecord = $this->xmlRequest->resultRecord; $sourcedId = (string) $resultRecord->sourcedGUID->sourcedId; $sourcedId = htmlspecialchars_decode($sourcedId); $sourcedParts = json_decode($sourcedId, true); if (empty($sourcedParts)) { $this->statusInfo ->setSeverity(ImsLtiServiceResponseStatus::SEVERITY_ERROR) ->setCodeMajor(ImsLtiServiceResponseStatus::CODEMAJOR_FAILURE); return; } $em = Database::getManager(); /** @var GradebookEvaluation $evaluation */ $evaluation = $em->find('ChamiloCoreBundle:GradebookEvaluation', $sourcedParts['e']); /** @var User $user */ $user = $em->find('ChamiloUserBundle:User', $sourcedParts['u']); if (empty($evaluation) || empty($user)) { $this->statusInfo ->setSeverity(ImsLtiServiceResponseStatus::SEVERITY_STATUS) ->setCodeMajor(ImsLtiServiceResponseStatus::CODEMAJOR_FAILURE); return; } $results = Result::load(null, $user->getId(), $evaluation->getId()); if (empty($results)) { $this->statusInfo ->setSeverity(ImsLtiServiceResponseStatus::SEVERITY_STATUS) ->setCodeMajor(ImsLtiServiceResponseStatus::CODEMAJOR_FAILURE); return; } /** @var Result $result */ $result = $results[0]; $result->addResultLog($user->getId(), $evaluation->getId()); $result->delete(); $this->statusInfo ->setSeverity(ImsLtiServiceResponseStatus::SEVERITY_STATUS) ->setCodeMajor(ImsLtiServiceResponseStatus::CODEMAJOR_SUCCESS); } }