/** * 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; }
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 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); }
/** * (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; }
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)); }
/** * 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); }
/** * @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; }
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; }
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(); }