getResource($resourceUri); $parentClasses = $this->getParentClasses($resource); /** @var IndexUpdaterInterface $indexUpdater */ $indexUpdater = $this->getServiceLocator()->get(IndexUpdaterInterface::SERVICE_ID); $type = Report::TYPE_SUCCESS; $message = 'Documents in index were successfully updated.'; $logMessage = 'Data Access Control were being updated by ' . static::class; try { $indexUpdater->updatePropertyValue($resourceUri, $parentClasses, self::READ_ACCESS_PROPERTY, $newPermissions); } catch (FailToUpdatePropertiesException $exception) { $type = Report::TYPE_ERROR; $message = 'Failed during update search index'; $logMessage = 'Data Access Control failure: ' . $exception->getMessage(); } $this->logInfo($logMessage); return new Report($type, $message); } /** * @param core_kernel_classes_Resource $resource * * @return array */ private function getParentClasses(core_kernel_classes_Resource $resource): array { $parentClasses = []; if ($resource->isClass()) { /** @noinspection PhpParamsInspection */ $parentClasses = $this->getParentClassesOfClass( $this->getClass($resource->getUri()) ); return $parentClasses; } /** @var core_kernel_classes_Class $type */ foreach ($resource->getTypes() as $type) { $parentClasses = array_merge($parentClasses, [$type->getUri()], $this->getParentClassesOfClass($type)); } return $parentClasses; } }