/** * recursivly add permissions to a class and all instances */ public static function addPermissionToClass(\core_kernel_classes_Class $class, $userUri, $rights) { $dbAccess = new DataBaseAccess(); $dbAccess->addPermissions($userUri, $class->getUri(), $rights); foreach ($class->getInstances(false) as $instance) { $dbAccess->addPermissions($userUri, $instance->getUri(), $rights); } foreach ($class->getSubClasses(false) as $subclass) { self::addPermissionToClass($subclass, $userUri, $rights); } }
/** * (non-PHPdoc) * @see \oat\generis\model\data\PermissionInterface::onResourceCreated() */ public function onResourceCreated(\core_kernel_classes_Resource $resource) { $dbAccess = new DataBaseAccess(); // test if class $class = new \core_kernel_classes_Class($resource); foreach (array_merge($resource->getTypes(), $class->getParentClasses()) as $parent) { foreach (AdminService::getUsersPermissions($parent->getUri()) as $userUri => $rights) { $dbAccess->addPermissions($userUri, $resource->getUri(), $rights); } } }
/** * (non-PHPdoc) * @see \oat\generis\model\data\PermissionInterface::onResourceCreated() */ public function onResourceCreated(\core_kernel_classes_Resource $resource) { $dbAccess = new DataBaseAccess(); // verify resource is created $permissions = $dbAccess->getResourcePermissions($resource->getUri()); if (empty($permissions)) { // treat resources as classes without parent classes $class = new \core_kernel_classes_Class($resource); foreach (array_merge($resource->getTypes(), $class->getParentClasses()) as $parent) { foreach (AdminService::getUsersPermissions($parent->getUri()) as $userUri => $rights) { $dbAccess->addPermissions($userUri, $resource->getUri(), $rights); } } } }