tao-test/app/taoQtiTest/helpers/TestSessionMemento.php

116 lines
2.6 KiB
PHP

<?php
/**
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; under version 2
* of the License (non-upgradable).
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* Copyright (c) 2016 (original work) Open Assessment Technologies SA;
*
*/
namespace oat\taoQtiTest\helpers;
use qtism\runtime\tests\AssessmentTestSessionState;
use qtism\runtime\tests\AssessmentTestSession;
use qtism\data\AssessmentSection;
use qtism\data\AssessmentItemRef;
/**
* Class represents test session state at a certain point in time.
*
* Class TestSessionMemento
* @package oat\taoQtiTest\helpers
*/
class TestSessionMemento
{
/**
* @var AssessmentTestSession
*/
private $session;
/**
* @var AssessmentTestSessionState
*/
private $state;
/**
* @var AssessmentItemRef
*/
private $item;
/**
* @var AssessmentSection
*/
private $section;
/**
* TestSessionMemento constructor.
* @param AssessmentTestSession $session
*/
public function __construct(AssessmentTestSession $session)
{
$this->session = $session;
$this->update();
}
/**
* Update memento
*/
public function update()
{
$session = $this->session;
$this->state = $session->getState();
$route = $session->getRoute();
if ($route->valid()) {
$this->item = $session->getCurrentAssessmentItemRef();
$this->section = $session->getCurrentAssessmentSection();
} else {
$this->item = false;
$this->section = false;
}
}
/**
* @return int|AssessmentTestSessionState
*/
public function getState()
{
return $this->state;
}
/**
* @return false|AssessmentItemRef
*/
public function getItem()
{
return $this->item;
}
/**
* @return false|AssessmentSection
*/
public function getSection()
{
return $this->section;
}
/**
* @return AssessmentTestSession
*/
public function getSession()
{
return $this->session;
}
}