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