コード例 #1
0
 public function getProctorableDeliveries(User $proctor)
 {
     $service = \taoDelivery_models_classes_DeliveryAssemblyService::singleton();
     $allDeliveries = array();
     foreach ($service->getRootClass()->getInstances(true) as $deliveryResource) {
         $allDeliveries[] = new \taoDelivery_models_classes_DeliveryRdf($deliveryResource);
     }
     return $allDeliveries;
 }
コード例 #2
0
 /**
  * Creates a new simple delivery
  * 
  * @param core_kernel_classes_Class $deliveryClass
  * @param core_kernel_classes_Resource $test
  * @param string $label
  * @return common_report_Report
  */
 public static function create(core_kernel_classes_Class $deliveryClass, core_kernel_classes_Resource $test, $label)
 {
     common_Logger::i('Creating ' . $label . ' with ' . $test->getLabel() . ' under ' . $deliveryClass->getLabel());
     $storage = new taoDelivery_models_classes_TrackedStorage();
     $testCompilerClass = taoTests_models_classes_TestsService::singleton()->getCompilerClass($test);
     $compiler = new $testCompilerClass($test, $storage);
     $report = $compiler->compile();
     if ($report->getType() == common_report_Report::TYPE_SUCCESS) {
         $serviceCall = $report->getData();
         $properties = array(RDFS_LABEL => $label, PROPERTY_COMPILEDDELIVERY_DIRECTORY => $storage->getSpawnedDirectoryIds());
         $compilationInstance = taoDelivery_models_classes_DeliveryAssemblyService::singleton()->createAssemblyFromServiceCall($deliveryClass, $serviceCall, $properties);
         $report->setData($compilationInstance);
     }
     return $report;
 }
コード例 #3
0
 /**
  * Result Table entry page
  */
 public function index()
 {
     $deliveryService = \taoDelivery_models_classes_DeliveryAssemblyService::singleton();
     if ($this->getRequestParameter('classUri') !== $deliveryService->getRootClass()->getUri()) {
         $filter = $this->getRequestParameter('filter');
         $classUri = $this->getRequestParameter('classUri');
         $this->setData('filter', $filter);
         $this->setData('classUri', $classUri);
         $this->setView('resultTable.tpl');
     } else {
         $this->setData('type', 'info');
         $this->setData('error', __('No tests have been taken yet. As soon as a test-taker will take a test his results will be displayed here.'));
         $this->setView('index.tpl');
     }
 }
コード例 #4
0
 /**
  * Edit a delivery instance
  *
  * @access public
  * @author CRP Henri Tudor - TAO Team - {@link http://www.tao.lu}
  * @return void
  */
 public function editDelivery()
 {
     $clazz = $this->getCurrentClass();
     $delivery = $this->getCurrentInstance();
     $formContainer = new taoDelivery_actions_form_Delivery($clazz, $delivery);
     $myForm = $formContainer->getForm();
     $myForm->evaluate();
     if ($myForm->isSubmited()) {
         if ($myForm->isValid()) {
             $propertyValues = $myForm->getValues();
             // then save the property values as usual
             $binder = new tao_models_classes_dataBinding_GenerisFormDataBinder($delivery);
             $delivery = $binder->bind($propertyValues);
             $this->setData("selectNode", tao_helpers_Uri::encode($delivery->getUri()));
             $this->setData('message', __('Delivery saved'));
             $this->setData('reload', true);
         }
     }
     $this->setData('label', $delivery->getLabel());
     // history
     $this->setData('date', taoDelivery_models_classes_DeliveryAssemblyService::singleton()->getCompilationDate($delivery));
     if (taoDelivery_models_classes_execution_ServiceProxy::singleton()->implementsMonitoring()) {
         $execs = taoDelivery_models_classes_execution_ServiceProxy::singleton()->getExecutionsByDelivery($delivery);
         $this->setData('exec', count($execs));
     }
     // define the groups related to the current delivery
     $property = new core_kernel_classes_Property(PROPERTY_GROUP_DELVIERY);
     $tree = tao_helpers_form_GenerisTreeForm::buildReverseTree($delivery, $property);
     $tree->setTitle(__('Assigned to'));
     $tree->setTemplate(Template::getTemplate('widgets/assignGroup.tpl'));
     $this->setData('groupTree', $tree->render());
     // testtaker brick
     $this->setData('assemblyUri', $delivery->getUri());
     // define the subjects excluded from the current delivery
     $property = new core_kernel_classes_Property(TAO_DELIVERY_EXCLUDEDSUBJECTS_PROP);
     $excluded = $delivery->getPropertyValues($property);
     $this->setData('ttexcluded', count($excluded));
     $users = taoDelivery_models_classes_AssignmentService::singleton()->getAssignedUsers($delivery);
     $assigned = array_diff(array_unique($users), $excluded);
     $this->setData('ttassigned', count($assigned));
     $this->setData('formTitle', __('Properties'));
     $this->setData('myForm', $myForm->render());
     if (common_ext_ExtensionsManager::singleton()->isEnabled('taoCampaign')) {
         $this->setData('campaign', taoCampaign_helpers_Campaign::renderCampaignTree($delivery));
     }
     $this->setView('Delivery/editDelivery.tpl');
 }
コード例 #5
0
 public function getAll()
 {
     $resources = array();
     $deliveryService = \taoDelivery_models_classes_DeliveryAssemblyService::singleton();
     foreach ($deliveryService->getAllAssemblies() as $assembly) {
         // delivery uri
         $delivery = $assembly->getUri();
         $implementation = $this->getImplementationClass($assembly);
         // get delivery executions
         //get all info
         foreach ($implementation->getResultByDelivery(array($delivery)) as $result) {
             $result = array_merge($result, array(RDFS_LABEL => $assembly->getLabel()));
             $properties = array();
             foreach ($result as $key => $value) {
                 $property = array();
                 $type = 'resource';
                 switch ($key) {
                     case 'deliveryResultIdentifier':
                         $property['predicateUri'] = "http://www.tao.lu/Ontologies/TAOResult.rdf#Identifier";
                         break;
                     case 'testTakerIdentifier':
                         $property['predicateUri'] = "http://www.tao.lu/Ontologies/TAOResult.rdf#resultOfSubject";
                         break;
                     case 'deliveryIdentifier':
                         $property['predicateUri'] = "http://www.tao.lu/Ontologies/TAOResult.rdf#resultOfDelivery";
                         break;
                     default:
                         $property['predicateUri'] = $key;
                         $type = 'literal';
                         break;
                 }
                 $property['values'] = array('valueType' => $type, 'value' => $value);
                 $properties[] = $property;
             }
             $resources[] = array('uri' => $result['deliveryResultIdentifier'], 'properties' => $properties);
         }
     }
     return $resources;
 }
コード例 #6
0
 /**
  * Action to finish test attempts where the maximum time limit has been reached.
  * To end user will be sent array that contains id's of finished session.
  */
 public function endExpiredTests()
 {
     $started = \taoDelivery_models_classes_DeliveryServerService::singleton()->getResumableDeliveries();
     $resultServer = \taoResultServer_models_classes_ResultServerStateFull::singleton();
     $result = array();
     foreach ($started as $deliveryExecution) {
         $compiledDelivery = $deliveryExecution->getDelivery();
         $runtime = \taoDelivery_models_classes_DeliveryAssemblyService::singleton()->getRuntime($compiledDelivery);
         $inputParameters = \tao_models_classes_service_ServiceCallHelper::getInputValues($runtime, array());
         $testDefinition = \taoQtiTest_helpers_Utils::getTestDefinition($inputParameters['QtiTestCompilation']);
         $testResource = new \core_kernel_classes_Resource($inputParameters['QtiTestDefinition']);
         $subjectProp = new \core_kernel_classes_Property(PROPERTY_DELVIERYEXECUTION_SUBJECT);
         $delvieryExecutionSubject = $deliveryExecution->getOnePropertyValue($subjectProp);
         $sessionManager = new \taoQtiTest_helpers_SessionManager($resultServer, $testResource);
         $qtiStorage = new \taoQtiTest_helpers_TestSessionStorage($sessionManager, new BinaryAssessmentTestSeeker($testDefinition), $delvieryExecutionSubject->getUri());
         $session = $qtiStorage->retrieve($testDefinition, $deliveryExecution->getUri());
         $resultServerUri = $compiledDelivery->getOnePropertyValue(new \core_kernel_classes_Property(TAO_DELIVERY_RESULTSERVER_PROP));
         $resultServerObject = new \taoResultServer_models_classes_ResultServer($resultServerUri, array());
         $resultServer->setValue('resultServerUri', $resultServerUri->getUri());
         $resultServer->setValue('resultServerObject', array($resultServerUri->getUri() => $resultServerObject));
         $resultServer->setValue('resultServer_deliveryResultIdentifier', $deliveryExecution->getUri());
         if ($session->isRunning() === false) {
             continue;
         }
         try {
             $session->checkTimeLimits(false, false, false);
         } catch (AssessmentTestSessionException $e) {
             if (AssessmentTestSessionException::ASSESSMENT_TEST_DURATION_OVERFLOW) {
                 $testSessionMetaData = new TestSessionMetaData($session);
                 $testSessionMetaData->save(array('TEST' => array('TEST_EXIT_CODE' => TestSessionMetaData::TEST_CODE_INCOMPLETE), 'SECTION' => array('SECTION_EXIT_CODE' => TestSessionMetaData::SECTION_CODE_TIMEOUT)));
                 $session->endTestSession();
                 $deliveryExecution->setState(INSTANCE_DELIVERYEXEC_FINISHED);
                 \common_Logger::i("Expired test session {$session->getSessionId()} has finished.");
                 $result[] = $session->getSessionId();
             }
         }
     }
     echo json_encode($result);
 }
コード例 #7
0
 /**
  * (non-PHPdoc)
  * @see \oat\taoFrontOffice\model\Delivery::getRuntime()
  */
 public function getRuntime()
 {
     return taoDelivery_models_classes_DeliveryAssemblyService::singleton()->getRuntime($this);
 }
コード例 #8
0
/*  
 * 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) 2002-2008 (original work) Public Research Centre Henri Tudor & University of Luxembourg (under the project TAO & TAO2);
 *               2008-2010 (update and modification) Deutsche Institut für Internationale Pädagogische Forschung (under the project TAO-TRANSFER);
 *               2009-2012 (update and modification) Public Research Centre Henri Tudor (under the project TAO-SUSTAIN & TAO-DEV);
 * 
 */
require_once dirname(__FILE__) . '/../includes/raw_start.php';
$parms = $argv;
$script = array_shift($parms);
if (count($parms) != 1) {
    echo "Usage: " . $script . " FILE\n";
} else {
    $file = array_shift($parms);
    $deliveryClass = taoDelivery_models_classes_DeliveryAssemblyService::singleton()->getRootClass();
    $report = taoDelivery_models_classes_import_Assembler::importDelivery($deliveryClass, $file);
    var_dump($report);
}
コード例 #9
0
 public function runDeliveryExecution()
 {
     $deliveryExecution = $this->getCurrentDeliveryExecution();
     if ($deliveryExecution->getState()->getUri() != INSTANCE_DELIVERYEXEC_ACTIVE) {
         $this->redirect($this->getReturnUrl());
     }
     $userUri = common_session_SessionManager::getSession()->getUserUri();
     if ($deliveryExecution->getUserIdentifier() != $userUri) {
         throw new common_exception_Error('User ' . $userUri . ' is not the owner of the execution ' . $deliveryExecution->getIdentifier());
     }
     $compiledDelivery = $deliveryExecution->getDelivery();
     $this->initResultServer($compiledDelivery, $deliveryExecution->getIdentifier());
     $runtime = taoDelivery_models_classes_DeliveryAssemblyService::singleton()->getRuntime($compiledDelivery);
     $this->setData('serviceApi', tao_helpers_ServiceJavascripts::getServiceApi($runtime, $deliveryExecution->getIdentifier()));
     $this->setData('userLabel', common_session_SessionManager::getSession()->getUserLabel());
     $this->setData('deliveryExecution', $deliveryExecution->getIdentifier());
     $this->setData('showControls', $this->showControls());
     $this->setData('client_config_url', $this->getClientConfigUrl());
     $this->setData('client_timeout', $this->getClientTimeout());
     $this->setView('runtime/deliveryExecution.tpl', 'taoDelivery');
 }
コード例 #10
0
 /**
  * Action called on click on a delivery (class) construct and call the view to see the table of
  * all delivery execution for a specific delivery
  */
 public function index()
 {
     //Properties to filter on
     $properties = array(new \core_kernel_classes_Property(RDFS_LABEL));
     $deliveryService = \taoDelivery_models_classes_DeliveryAssemblyService::singleton();
     $delivery = new core_kernel_classes_Resource(tao_helpers_Uri::decode($this->getRequestParameter('classUri')));
     if ($delivery->getUri() !== $deliveryService->getRootClass()->getUri()) {
         try {
             // display delivery
             $implementation = $this->getClassService()->getReadableImplementation($delivery);
             $this->getClassService()->setImplementation($implementation);
             $model = array();
             foreach ($properties as $property) {
                 $model[] = array('id' => $property->getUri(), 'label' => $property->getLabel(), 'sortable' => true);
             }
             $this->setData('classUri', tao_helpers_Uri::encode($delivery->getUri()));
             $this->setData('model', $model);
             $this->setView('resultList.tpl');
         } catch (\common_exception_Error $e) {
             $this->setData('type', 'error');
             $this->setData('error', $e->getMessage());
             $this->setView('index.tpl');
         }
     } else {
         $this->setData('type', 'info');
         $this->setData('error', __('No tests have been taken yet. As soon as a test-taker will take a test his results will be displayed here.'));
         $this->setView('index.tpl');
     }
 }