/** * Create a new ExtendedAssessmentItemRef object from an AssessmentItemRef object. * * @param \qtism\data\AssessmentItemRef $assessmentItemRef An AssessmentItemRef object. * @return \qtism\data\ExtendedAssessmentItemRef An ExtendedAssessmentItemRef object. */ public static function createFromAssessmentItemRef(AssessmentItemRef $assessmentItemRef) { $identifier = $assessmentItemRef->getIdentifier(); $href = $assessmentItemRef->getHref(); $compactRef = new static($identifier, $href); $compactRef->setBranchRules($assessmentItemRef->getBranchRules()); $compactRef->setCategories($assessmentItemRef->getCategories()); $compactRef->setFixed($assessmentItemRef->isFixed()); $compactRef->setItemSessionControl($assessmentItemRef->getItemSessionControl()); $compactRef->setTimeLimits($assessmentItemRef->getTimeLimits()); $compactRef->setPreConditions($assessmentItemRef->getPreConditions()); $compactRef->setRequired($assessmentItemRef->isRequired()); $compactRef->setTemplateDefaults($assessmentItemRef->getTemplateDefaults()); return $compactRef; }
/** * Get the item sessions related to $assessmentItemRef. * * @param \qtism\data\AssessmentItemRef $assessmentItemRef An AssessmentItemRef object. * @throws \OutOfBoundsException If no item sessions related to $assessmentItemRef are found. * @return \qtism\runtime\tests\AssessmentItemSessionCollection A collection of AssessmentItemSession objects related to $assessmentItemRef. */ public function getAssessmentItemSessions(AssessmentItemRef $assessmentItemRef) { if (isset($this->shelves[$assessmentItemRef]) === true) { return $this->shelves[$assessmentItemRef]; } else { $itemId = $assessmentItemRef->getIdentifier(); $msg = "No AssessmentItemSession objects bound to '{$itemId}'."; throw new OutOfBoundsException($msg); } }
/** * @param AssessmentItemRef $itemRef * * @return DateTime */ public function getItemStartTime($itemRef) { $itemResults = array(); $itemStartTime = null; $ssid = $this->getTestSession()->getSessionId(); $resultServer = \taoResultServer_models_classes_ResultServerStateFull::singleton(); $collection = $resultServer->getVariables("{$ssid}.{$itemRef->getIdentifier()}.{$this->getTestSession()->getCurrentAssessmentItemRefOccurence()}"); foreach ($collection as $vars) { foreach ($vars as $var) { if ($var->variable instanceof taoResultServer_models_classes_TraceVariable && $var->variable->getIdentifier() === 'ITEM_START_TIME_SERVER') { $itemResults[] = $var->variable->getValue(); } } } $itemResults = array_map(function ($ts) { $itemStart = new DateTime('now', new DateTimeZone('UTC')); $itemStart->setTimestamp($ts); return $itemStart; }, $itemResults); if (!empty($itemResults)) { $itemStartTime = min($itemResults); } return $itemStartTime; }