public function isDeliveryExecutionAllowed(core_kernel_classes_Resource $delivery, User $user)
 {
     $userUri = $user->getIdentifier();
     if (is_null($delivery)) {
         common_Logger::w("Attempt to start the compiled delivery " . $delivery->getUri() . " related to no delivery");
         return false;
     }
     //first check the user is assigned
     if (!taoDelivery_models_classes_AssignmentService::singleton()->isUserAssigned($delivery, $user)) {
         common_Logger::w("User " . $userUri . " attempts to start the compiled delivery " . $delivery->getUri() . " he was not assigned to.");
         return false;
     }
     $settings = $this->getDeliverySettings($delivery);
     //check Tokens
     $usedTokens = count(taoDelivery_models_classes_execution_ServiceProxy::singleton()->getUserExecutions($delivery, $userUri));
     if ($settings[TAO_DELIVERY_MAXEXEC_PROP] != 0 and $usedTokens >= $settings[TAO_DELIVERY_MAXEXEC_PROP]) {
         common_Logger::d("Attempt to start the compiled delivery " . $delivery->getUri() . "without tokens");
         return false;
     }
     //check time
     $startDate = date_create('@' . $settings[TAO_DELIVERY_START_PROP]);
     $endDate = date_create('@' . $settings[TAO_DELIVERY_END_PROP]);
     if (!$this->areWeInRange($startDate, $endDate)) {
         common_Logger::d("Attempt to start the compiled delivery " . $delivery->getUri() . " at the wrong date");
         return false;
     }
     return true;
 }
 /**
  * Get test centers a test-taker is assigned to
  *
  * @access public
  * @param  User $user
  * @return array resources of testcenter
  */
 public function getTestCentersByTestTaker(User $user)
 {
     $testcenters = $user->getPropertyValues(self::PROPERTY_MEMBERS_URI);
     array_walk($testcenters, function (&$testcenter) {
         $testcenter = new core_kernel_classes_Resource($testcenter);
     });
     return $testcenters;
 }
示例#3
0
 /**
  * (non-PHPdoc)
  * @see \oat\tao\model\accessControl\func\FuncAccessControl::accessPossible()
  */
 public function accessPossible(User $user, $controller, $action)
 {
     $isUser = false;
     foreach ($user->getRoles() as $role) {
         if ($role == INSTANCE_ROLE_BASEUSER) {
             $isUser = true;
             break;
         }
     }
     return $isUser || $this->inWhiteList($controller, $action);
 }
示例#4
0
 /**
  * Get file path to save message
  * @param User $receiver
  * @param boolean $refresh whether the file path must be regenerated.
  */
 public function getFilePath(User $receiver)
 {
     $basePath = $this->getOption(self::CONFIG_FILEPATH);
     if (is_null($basePath) || !file_exists($basePath)) {
         throw new \common_exception_InconsistentData('Missing path ' . self::CONFIG_FILEPATH . ' for ' . __CLASS__);
     }
     $path = $basePath . \tao_helpers_File::getSafeFileName($receiver->getIdentifier()) . DIRECTORY_SEPARATOR;
     if (!file_exists($path)) {
         mkdir($path);
     }
     return $path . \tao_helpers_File::getSafeFileName('message.html', $path);
 }
 /**
  * Get resumable (active) deliveries.
  * @param User $user User instance. If not given then all deliveries will be returned regardless of user URI.
  * @return type
  */
 public function getResumableDeliveries(User $user)
 {
     $deliveryExecutionService = taoDelivery_models_classes_execution_ServiceProxy::singleton();
     $started = array_merge($deliveryExecutionService->getActiveDeliveryExecutions($user->getIdentifier()), $deliveryExecutionService->getPausedDeliveryExecutions($user->getIdentifier()));
     $resumable = array();
     foreach ($started as $deliveryExecution) {
         $delivery = $deliveryExecution->getDelivery();
         if ($delivery->exists()) {
             $resumable[] = $deliveryExecution;
         }
     }
     return $resumable;
 }
 /**
  * (non-PHPdoc)
  * @see \oat\generis\model\data\PermissionInterface::getPermissions()
  */
 public function getPermissions(User $user, array $resourceIds)
 {
     if (in_array(INSTANCE_ROLE_SYSADMIN, $user->getRoles())) {
         $permissions = array();
         foreach ($resourceIds as $id) {
             $permissions[$id] = $this->getSupportedRights();
         }
         return $permissions;
     }
     $dbAccess = new DataBaseAccess();
     $userIds = $user->getRoles();
     $userIds[] = $user->getIdentifier();
     return $dbAccess->getPermissions($userIds, $resourceIds);
 }
 /**
  * Get resumable (active) deliveries.
  * @param User $user User instance. If not given then all deliveries will be returned regardless of user URI.
  * @return type
  */
 public function getResumableDeliveries(User $user)
 {
     $deliveryExecutionService = \taoDelivery_models_classes_execution_ServiceProxy::singleton();
     $userUri = $user->getIdentifier();
     $started = array_merge($deliveryExecutionService->getActiveDeliveryExecutions($userUri), $deliveryExecutionService->getPausedDeliveryExecutions($userUri), $deliveryExecutionService->getDeliveryExecutionsByStatus($userUri, DeliveryExecution::STATE_AWAITING), $deliveryExecutionService->getDeliveryExecutionsByStatus($userUri, DeliveryExecution::STATE_AUTHORIZED));
     $eligibilityService = EligibilityService::singleton();
     $resumable = array();
     foreach ($started as $deliveryExecution) {
         $delivery = $deliveryExecution->getDelivery();
         if ($delivery->exists() && $eligibilityService->isDeliveryEligible($delivery, $user)) {
             $resumable[] = $deliveryExecution;
         }
     }
     return $resumable;
 }
 /**
  * (non-PHPdoc)
  * @see \oat\tao\model\accessControl\func\FuncAccessControl::accessPossible()
  */
 public function accessPossible(User $user, $controller, $action)
 {
     $userRoles = $user->getRoles();
     try {
         $controllerAccess = funcAcl_helpers_Cache::getControllerAccess($controller);
         $allowedRoles = isset($controllerAccess['actions'][$action]) ? array_merge($controllerAccess['module'], $controllerAccess['actions'][$action]) : $controllerAccess['module'];
         $accessAllowed = count(array_intersect($userRoles, $allowedRoles)) > 0;
         if (!$accessAllowed) {
             common_Logger::i('Access denied to ' . $controller . '@' . $action . ' for user \'' . $user->getIdentifier() . '\'');
         }
     } catch (ReflectionException $e) {
         common_Logger::i('Unknown controller ' . $controller);
         $accessAllowed = false;
     }
     return (bool) $accessAllowed;
 }
 /**
  * Set the initial outcomes defined in the rdf outcome map configuration file
  *
  * @param AssessmentTestSession $session
  * @param \oat\oatbox\user\User $testTaker
  * @throws common_exception_Error
  * @throws common_ext_ExtensionException
  */
 public static function setInitialOutcomes(AssessmentTestSession $session, \oat\oatbox\user\User $testTaker)
 {
     $rdfOutcomeMap = \common_ext_ExtensionsManager::singleton()->getExtensionById('taoQtiTest')->getConfig('rdfOutcomeMap');
     if (is_array($rdfOutcomeMap)) {
         foreach ($rdfOutcomeMap as $outcomeId => $rdfPropUri) {
             //set outcome value
             $values = $testTaker->getPropertyValues($rdfPropUri);
             $outcome = $session->getVariable($outcomeId);
             if (!is_null($outcome) && count($values)) {
                 $outcome->setValue(new QtiString($values[0]));
             }
         }
     }
 }
示例#10
0
 /**
  * Get user email address.
  * @param User $user
  * @return string
  * @throws Exception if email address is not valid
  */
 public function getUserMail(User $user)
 {
     $userMail = current($user->getPropertyValues(PROPERTY_USER_MAIL));
     if (!$userMail || !filter_var($userMail, FILTER_VALIDATE_EMAIL)) {
         throw new Exception('User email is not valid.');
     }
     return $userMail;
 }
 protected function getDeliverySettings(core_kernel_classes_Resource $delivery, User $user)
 {
     $deliveryProps = $delivery->getPropertiesValues(array(new core_kernel_classes_Property(TAO_DELIVERY_MAXEXEC_PROP), new core_kernel_classes_Property(TAO_DELIVERY_START_PROP), new core_kernel_classes_Property(TAO_DELIVERY_END_PROP)));
     $propMaxExec = current($deliveryProps[TAO_DELIVERY_MAXEXEC_PROP]);
     $propStartExec = current($deliveryProps[TAO_DELIVERY_START_PROP]);
     $propEndExec = current($deliveryProps[TAO_DELIVERY_END_PROP]);
     $executions = taoDelivery_models_classes_execution_ServiceProxy::singleton()->getUserExecutions($delivery, $user->getIdentifier());
     $allowed = $this->service->isDeliveryExecutionAllowed($delivery, $user);
     return array("compiledDelivery" => $delivery, "settingsDelivery" => array(TAO_DELIVERY_MAXEXEC_PROP => (!is_object($propMaxExec) or $propMaxExec == "") ? 0 : $propMaxExec->literal, TAO_DELIVERY_START_PROP => (!is_object($propStartExec) or $propStartExec == "") ? null : $propStartExec->literal, TAO_DELIVERY_END_PROP => (!is_object($propEndExec) or $propEndExec == "") ? null : $propEndExec->literal, "TAO_DELIVERY_USED_TOKENS" => count($executions), "TAO_DELIVERY_TAKABLE" => $allowed));
 }
 /**
  * get the groups of a user
  *
  * @access public
  * @author Joel Bout, <*****@*****.**>
  * @param  string userUri
  * @return array resources of group
  */
 public function getGroups(User $user)
 {
     $groups = $user->getPropertyValues(self::PROPERTY_MEMBERS_URI);
     array_walk($groups, function (&$group) {
         $group = new core_kernel_classes_Resource($group);
     });
     return $groups;
 }
 /**
  * Check if a user is excluded from a delivery
  * @param core_kernel_classes_Resource $delivery
  * @param string $userUri the URI of the user to check
  * @return boolean true if excluded
  */
 private function isUserExcluded(core_kernel_classes_Resource $delivery, User $user)
 {
     $excludedUsers = $delivery->getPropertyValues(new core_kernel_classes_Property(TAO_DELIVERY_EXCLUDEDSUBJECTS_PROP));
     return in_array($user->getIdentifier(), $excludedUsers);
 }
 /**
  * Get test centers a test-taker is assigned to
  *
  * @access public
  * @param  User $user
  * @return array resources of testcenter
  */
 public function getTestCentersByTestTaker(User $user)
 {
     return $this->mergeActualResources($user->getPropertyValues(self::PROPERTY_MEMBERS_URI));
 }
示例#15
0
 private static function hasWritePrivilege(User $user, $resourceId)
 {
     $resource = new \core_kernel_classes_Resource($resourceId);
     $lock = LockManager::getImplementation()->getLockData($resource);
     return is_null($lock) || $lock->getOwnerId() == $user->getIdentifier();
 }
 /**
  * @param Resource $delivery
  * @param User $user
  * @return \core_kernel_classes_Container|Resource|null
  * @throws \core_kernel_persistence_Exception
  */
 public function getTestCenter(Resource $delivery, User $user)
 {
     $result = null;
     $class = new \core_kernel_classes_Class(EligibilityService::CLASS_URI);
     $eligibilities = $class->searchInstances([EligibilityService::PROPERTY_TESTTAKER_URI => $user->getIdentifier(), EligibilityService::PROPERTY_DELIVERY_URI => $delivery->getUri()]);
     foreach ($eligibilities as $eligibility) {
         /* @var \core_kernel_classes_Resource $eligibility*/
         $testCenter = $eligibility->getOnePropertyValue(new \core_kernel_classes_Property(EligibilityService::PROPERTY_TESTCENTER_URI));
         if ($testCenter instanceof \core_kernel_classes_Resource && $testCenter->exists()) {
             $result = $testCenter;
             break;
         }
     }
     return $result;
 }
示例#17
0
 /**
  * Gets the value of a string property from a user
  * @param User $user
  * @param string $property
  * @return string
  */
 public static function getUserStringProp(User $user, $property)
 {
     $value = $user->getPropertyValues($property);
     return empty($value) ? '' : current($value);
 }
 protected function verifyToken(core_kernel_classes_Resource $delivery, User $user)
 {
     $propMaxExec = $delivery->getOnePropertyValue(new \core_kernel_classes_Property(TAO_DELIVERY_MAXEXEC_PROP));
     $maxExec = is_null($propMaxExec) ? 0 : $propMaxExec->literal;
     //check Tokens
     $usedTokens = count(\taoDelivery_models_classes_execution_ServiceProxy::singleton()->getUserExecutions($delivery, $user->getIdentifier()));
     if ($maxExec != 0 && $usedTokens >= $maxExec) {
         \common_Logger::d("Attempt to start the compiled delivery " . $delivery->getUri() . "without tokens");
         return false;
     }
     return true;
 }
 /**
  * Gets the value of a string property from a user
  * @param User $user
  * @param string $property
  * @return mixed|string
  */
 private function getUserStringProp($user, $property)
 {
     $value = $user->getPropertyValues($property);
     return empty($value) ? '' : current($value);
 }