114 lines
3.7 KiB
PHP
114 lines
3.7 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) 2017 (original work) Open Assessment Technologies SA ;
|
||
|
*
|
||
|
*/
|
||
|
/**
|
||
|
* @author Jean-Sébastien Conan <jean-sebastien@taotesting.com>
|
||
|
*/
|
||
|
|
||
|
namespace oat\taoProctoring\model\implementation;
|
||
|
|
||
|
use oat\taoProctoring\model\ProctorService;
|
||
|
use oat\taoQtiTest\models\runner\QtiRunnerMessageService;
|
||
|
use qtism\runtime\tests\AssessmentTestSession;
|
||
|
|
||
|
/**
|
||
|
* Class QtiRunnerMessageService
|
||
|
*
|
||
|
* Defines a service that will provide messages for the test runner
|
||
|
*
|
||
|
* @package oat\taoQtiTest\models
|
||
|
*/
|
||
|
class TestRunnerMessageService extends QtiRunnerMessageService
|
||
|
{
|
||
|
/** Proctor roles option in options. */
|
||
|
const PROCTOR_ROLES_OPTION = 'proctorRoles';
|
||
|
|
||
|
/**
|
||
|
* Returns TRUE when the current role is proctor like.
|
||
|
*
|
||
|
* @param AssessmentTestSession $testSession
|
||
|
*
|
||
|
* @return bool
|
||
|
*
|
||
|
* @throws \common_exception_Error
|
||
|
*/
|
||
|
protected function isProctorAction(AssessmentTestSession $testSession)
|
||
|
{
|
||
|
$userRoles = \common_session_SessionManager::getSession()->getUserRoles();
|
||
|
$proctorRoles = $this->getOption(static::PROCTOR_ROLES_OPTION);
|
||
|
|
||
|
foreach ($proctorRoles as $proctorRole) {
|
||
|
if (in_array($proctorRole, $userRoles)) {
|
||
|
return true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Gets a message about the paused status of the assessment when a proctor is the sender
|
||
|
* @param AssessmentTestSession $testSession
|
||
|
* @return string
|
||
|
*/
|
||
|
protected function getProctorPausedStateMessage(AssessmentTestSession $testSession)
|
||
|
{
|
||
|
return __('The assessment has been suspended. To resume your assessment, please relaunch it and contact your proctor if required.');
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Gets a message about the terminated status of the assessment when a proctor is the sender
|
||
|
* @param AssessmentTestSession $testSession
|
||
|
* @return string
|
||
|
*/
|
||
|
protected function getProctorTerminatedStateMessage(AssessmentTestSession $testSession)
|
||
|
{
|
||
|
return __('The assessment has been terminated. You cannot interact with it anymore. Please contact your proctor if required.');
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Gets a message about the paused status of the assessment
|
||
|
* @param AssessmentTestSession $testSession
|
||
|
* @return string
|
||
|
*/
|
||
|
protected function getPausedStateMessage(AssessmentTestSession $testSession)
|
||
|
{
|
||
|
if ($this->isProctorAction($testSession)) {
|
||
|
return $this->getProctorPausedStateMessage($testSession);
|
||
|
}
|
||
|
|
||
|
return parent::getPausedStateMessage($testSession);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Gets a message about the terminated status of the assessment
|
||
|
* @param AssessmentTestSession $testSession
|
||
|
* @return string
|
||
|
*/
|
||
|
protected function getTerminatedStateMessage(AssessmentTestSession $testSession)
|
||
|
{
|
||
|
if ($this->isProctorAction($testSession)) {
|
||
|
return $this->getProctorTerminatedStateMessage($testSession);
|
||
|
}
|
||
|
|
||
|
return parent::getTerminatedStateMessage($testSession);
|
||
|
}
|
||
|
|
||
|
}
|