/** * Get the feedback to be displayed on an AssessmentItemSession * * @param tao_models_classes_service_StorageDirectory $directory * @param \qtism\runtime\tests\AssessmentItemSession $itemSession * @return array */ public static function getFeedbacks(tao_models_classes_service_StorageDirectory $directory, AssessmentItemSession $itemSession) { $returnValue = array(); $feedbackClasses = array('modalFeedback', 'feedbackInline', 'feedbackBlock'); $elements = self::getContentVariableElements($directory); $outcomes = array(); foreach ($elements as $data) { if (empty($data['qtiClass']) === false && in_array($data['qtiClass'], $feedbackClasses)) { $feedbackIdentifier = $data['attributes']['identifier']; $outcomeIdentifier = $data['attributes']['outcomeIdentifier']; if (!isset($outcomes[$outcomeIdentifier])) { $outcomes[$outcomeIdentifier] = array(); } $outcomes[$outcomeIdentifier][$feedbackIdentifier] = $data; } } foreach ($itemSession->getAllVariables() as $var) { $identifier = $var->getIdentifier(); if (isset($outcomes[$identifier])) { $feedbacks = $outcomes[$identifier]; $feedbackIds = QtiRunner::getVariableValues($var); foreach ($feedbackIds as $feedbackId) { if (isset($feedbacks[$feedbackId])) { $data = $feedbacks[$feedbackId]; $returnValue[$data['serial']] = $data; } } } } return $returnValue; }