Line Files Duplications Code 95 79 /display_builder/web/modules/custom/display_builder/modules/display_builder_entity_view/tests/src/Kernel/InstanceEntityViewDisplayAccessControlTest.php /display_builder/web/modules/custom/display_builder/modules/display_builder_entity_view/tests/src/Kernel/InstanceEntityViewDisplayOverrideAccessControlTest.php 110 lines244 tokens
if ($expect['view']) {
self::assertTrue($this->accessControl->access($instance, 'view', $user), 'User can view the instance.');
}
else {
self::assertFalse($this->accessControl->access($instance, 'view', $user), 'User can not view the instance.');
}
if ($expect['update']) {
self::assertTrue($this->accessControl->access($instance, 'update', $user), 'User can update the instance.');
}
else {
self::assertFalse($this->accessControl->access($instance, 'update', $user), 'User can not update the instance.');
}
if ($expect['delete']) {
self::assertTrue($this->accessControl->access($instance, 'delete', $user), 'User can delete the instance.');
}
else {
self::assertFalse($this->accessControl->access($instance, 'delete', $user), 'User can not delete the instance.');
}
}
/**
* Data provider for testInstanceEntityViewDisplayAccess().
*
* Each case needs:
* - profiles: Display Builder array of profiles to create
* - user_has_admin_permission: Add user admin permission
* - user_has_profile_id_permission: Add profile id permission on user
* - instance_use_profile_id: Add profile id permission on user
* - expect: expected use access results for view, update, delete.
*
* @return array<string, array<string, mixed>>
* The data to test and expected.
*/
public static function accessInstanceEntityViewDisplayProvider(): array {
return [
'user without permission' => [
'data' => [
'profiles' => ['instance_only'],
'user_has_admin_permission' => FALSE,
'instance_use_profile_id' => 'instance_only',
],
'expect' => [
'view' => FALSE,
'update' => FALSE,
'delete' => FALSE,
],
],
'user with same profile as instance but not admin views' => [
'data' => [
'profiles' => ['user_instance'],
'user_has_admin_permission' => FALSE,
'user_has_profile_id_permission' => 'user_instance',
'instance_use_profile_id' => 'user_instance',
],
'expect' => [
'view' => FALSE,
'update' => FALSE,
'delete' => FALSE,
],
],
'user with different profile than instance' => [
'data' => [
'profiles' => ['user_profile', 'instance_profile'],
'user_has_admin_permission' => FALSE,
'user_has_profile_id_permission' => 'user_profile',
'instance_use_profile_id' => 'instance_profile',
],
'expect' => [
'view' => FALSE,
'update' => FALSE,
'delete' => FALSE,
],
],
'user with admin permission but not profile' => [
'data' => [
'profiles' => [],
'user_has_admin_permission' => TRUE,
],
'expect' => [
'view' => FALSE,
'update' => FALSE,
'delete' => FALSE,
],
],
'user with admin and profile permission' => [
'data' => [
'profiles' => ['test_profile'],
'user_has_admin_permission' => TRUE,
'user_has_profile_id_permission' => 'test_profile',
'instance_use_profile_id' => 'test_profile',
],
'expect' => [
'view' => TRUE,
'update' => TRUE,
'delete' => TRUE,
],
],
'user with admin and other profile permission' => [
'data' => [
'profiles' => ['user_profile', 'instance_profile'],
'user_has_admin_permission' => TRUE,
'user_has_profile_id_permission' => 'user_profile',
'instance_use_profile_id' => 'instance_profile',
],
'expect' => [
'view' => FALSE,
'update' => FALSE,
'delete' => FALSE,
91 67 /display_builder/web/modules/custom/display_builder/src/Plugin/display_builder/Island/LogsPanel.php /display_builder/web/modules/custom/display_builder/tests/modules/display_builder_test/src/Plugin/display_builder/Island/TestLogsRawPanel.php 95 lines154 tokens
public function onAttachToRoot(string $builder_id, string $instance_id): array {
return $this->reloadWithGlobalData($builder_id);
}
/**
* {@inheritdoc}
*/
public function onAttachToSlot(string $builder_id, string $instance_id, string $parent_id): array {
return $this->reloadWithGlobalData($builder_id);
}
/**
* {@inheritdoc}
*/
public function onMove(string $builder_id, string $instance_id): array {
return $this->reloadWithGlobalData($builder_id);
}
/**
* {@inheritdoc}
*/
public function onHistoryChange(string $builder_id): array {
return $this->reloadWithGlobalData($builder_id);
}
/**
* {@inheritdoc}
*/
public function onUpdate(string $builder_id, string $instance_id): array {
return $this->reloadWithGlobalData($builder_id);
}
/**
* {@inheritdoc}
*/
public function onDelete(string $builder_id, string $parent_id): array {
return $this->reloadWithGlobalData($builder_id);
}
/**
* {@inheritdoc}
*/
public function onSave(string $builder_id): array {
return $this->reloadWithGlobalData($builder_id);
}
/**
* Build rows for the logs table.
*
* @param \Drupal\Core\Field\FieldItemListInterface $past
* Steps with time and log message.
* @param \Drupal\display_builder\Plugin\Field\FieldType\HistoryStep $present
* A step with time and log message.
* @param \Drupal\Core\Field\FieldItemListInterface $future
* Steps with time and log message.
* @param \Drupal\display_builder\Plugin\Field\FieldType\HistoryStep $save
* Saved state.
*
* @return array
* A renderable array representing a table row.
*/
protected function buildRows(FieldItemListInterface $past, ?HistoryStep $present, FieldItemListInterface $future, ?HistoryStep $save): array {
$rows = [];
foreach ($past as $index => $step) {
/** @var \Drupal\display_builder\Plugin\Field\FieldType\HistoryStep $step */
$rows[] = $this->buildRow(-\count($past) + $index, $step, $save);
}
// Present data.
$rows[] = $this->buildRow(0, $present, $save);
foreach ($future as $index => $step) {
/** @var \Drupal\display_builder\Plugin\Field\FieldType\HistoryStep $step */
$rows[] = $this->buildRow($index + 1, $step, $save);
}
return $rows;
}
/**
* Build a single row for the logs table.
*
* @param int $index
* The row index.
* @param \Drupal\display_builder\Plugin\Field\FieldType\HistoryStep $step
* The step data containing time and log message.
* @param \Drupal\display_builder\Plugin\Field\FieldType\HistoryStep $save
* Saved state.
*
* @return array
* A renderable array representing a table row.
*/
private function buildRow(int $index, HistoryStep $step, ?HistoryStep $save): array {
$user = !empty($step->getUser()) ? $this->entityTypeManager->getStorage('user')->load($step->getUser()) : NULL;
130 110 113 /display_builder/web/modules/custom/display_builder/modules/display_builder_entity_view/tests/src/Kernel/InstanceEntityViewDisplayAccessControlTest.php /display_builder/web/modules/custom/display_builder/modules/display_builder_page_layout/tests/src/Kernel/InstancePageLayoutAccessControlTest.php /display_builder/web/modules/custom/display_builder/modules/display_builder_views/tests/src/Kernel/InstanceViewsAccessControlTest.php 75 lines156 tokens
public static function accessInstanceEntityViewDisplayProvider(): array {
return [
'user without permission' => [
'data' => [
'profiles' => ['instance_only'],
'user_has_admin_permission' => FALSE,
'instance_use_profile_id' => 'instance_only',
],
'expect' => [
'view' => FALSE,
'update' => FALSE,
'delete' => FALSE,
],
],
'user with same profile as instance but not admin views' => [
'data' => [
'profiles' => ['user_instance'],
'user_has_admin_permission' => FALSE,
'user_has_profile_id_permission' => 'user_instance',
'instance_use_profile_id' => 'user_instance',
],
'expect' => [
'view' => FALSE,
'update' => FALSE,
'delete' => FALSE,
],
],
'user with different profile than instance' => [
'data' => [
'profiles' => ['user_profile', 'instance_profile'],
'user_has_admin_permission' => FALSE,
'user_has_profile_id_permission' => 'user_profile',
'instance_use_profile_id' => 'instance_profile',
],
'expect' => [
'view' => FALSE,
'update' => FALSE,
'delete' => FALSE,
],
],
'user with admin permission but not profile' => [
'data' => [
'profiles' => [],
'user_has_admin_permission' => TRUE,
],
'expect' => [
'view' => FALSE,
'update' => FALSE,
'delete' => FALSE,
],
],
'user with admin and profile permission' => [
'data' => [
'profiles' => ['test_profile'],
'user_has_admin_permission' => TRUE,
'user_has_profile_id_permission' => 'test_profile',
'instance_use_profile_id' => 'test_profile',
],
'expect' => [
'view' => TRUE,
'update' => TRUE,
'delete' => TRUE,
],
],
'user with admin and other profile permission' => [
'data' => [
'profiles' => ['user_profile', 'instance_profile'],
'user_has_admin_permission' => TRUE,
'user_has_profile_id_permission' => 'user_profile',
'instance_use_profile_id' => 'instance_profile',
],
'expect' => [
'view' => FALSE,
'update' => FALSE,
'delete' => FALSE,
187 78 /display_builder/web/modules/custom/display_builder/src/Plugin/display_builder/Island/Collaboration.php /display_builder/web/modules/custom/display_builder/src/Plugin/display_builder/Island/StateButtons.php 49 lines80 tokens
public function onAttachToRoot(string $builder_id, string $instance_id): array {
return $this->rebuild($builder_id);
}
/**
* {@inheritdoc}
*/
public function onAttachToSlot(string $builder_id, string $instance_id, string $parent_id): array {
return $this->rebuild($builder_id);
}
/**
* {@inheritdoc}
*/
public function onMove(string $builder_id, string $instance_id): array {
return $this->rebuild($builder_id);
}
/**
* {@inheritdoc}
*/
public function onHistoryChange(string $builder_id): array {
return $this->rebuild($builder_id);
}
/**
* {@inheritdoc}
*/
public function onUpdate(string $builder_id, string $instance_id): array {
return $this->rebuild($builder_id);
}
/**
* {@inheritdoc}
*/
public function onDelete(string $builder_id, string $parent_id): array {
return $this->rebuild($builder_id);
}
/**
* Remove inactive users.
*
* @param array $users
* Each key is an User entity ID, each value is a timestamp.
*
* @return array
* Each key is an User entity ID, each value is a timestamp.
*/
protected function removeInactiveUsers(array $users): array {
142 273 /display_builder/web/modules/custom/display_builder/modules/display_builder_page_layout/src/Plugin/UiPatterns/Source/PageLayoutSource.php /display_builder/web/modules/custom/display_builder/src/Plugin/UiPatterns/Source/LayoutSource.php 46 lines80 tokens
return $slots;
}
/**
* {@inheritdoc}
*/
public function getSlotValues(): array {
return $this->configuration['settings']['regions'] ?? [];
}
/**
* {@inheritdoc}
*/
public function getSlotValue(string $slot_id): array {
return $this->configuration['settings']['regions'][$slot_id] ?? [];
}
/**
* {@inheritdoc}
*/
public function setSlotValue(string $slot_id, array $slot): array {
$this->configuration['settings']['regions'][$slot_id] = $slot;
return $this->configuration['settings'];
}
/**
* {@inheritdoc}
*/
public function setSlotRenderable(array $build, string $slot_id, array $slot): array {
$build[$slot_id] = $slot;
return $build;
}
/**
* {@inheritdoc}
*/
public static function getSlotPath(string $slot_id): array {
return ['regions', $slot_id];
}
/**
* {@inheritdoc}
*/
public function settingsFormPropsOnly(array $form, FormStateInterface $form_state): array {
187 53 /display_builder/web/modules/custom/display_builder/src/Plugin/display_builder/Island/Collaboration.php /display_builder/web/modules/custom/display_builder/src/Plugin/display_builder/Island/HistoryButtons.php 43 lines80 tokens
public function onAttachToRoot(string $builder_id, string $instance_id): array {
return $this->rebuild($builder_id);
}
/**
* {@inheritdoc}
*/
public function onAttachToSlot(string $builder_id, string $instance_id, string $parent_id): array {
return $this->rebuild($builder_id);
}
/**
* {@inheritdoc}
*/
public function onMove(string $builder_id, string $instance_id): array {
return $this->rebuild($builder_id);
}
/**
* {@inheritdoc}
*/
public function onHistoryChange(string $builder_id): array {
return $this->rebuild($builder_id);
}
/**
* {@inheritdoc}
*/
public function onUpdate(string $builder_id, string $instance_id): array {
return $this->rebuild($builder_id);
}
/**
* {@inheritdoc}
*/
public function onDelete(string $builder_id, string $parent_id): array {
return $this->rebuild($builder_id);
}
/**
* Remove inactive users.
*
* @param array $users
91 79 /display_builder/web/modules/custom/display_builder/src/Plugin/display_builder/Island/LogsPanel.php /display_builder/web/modules/custom/display_builder/src/Plugin/display_builder/Island/PreviewPanel.php 37 lines78 tokens
public function onAttachToRoot(string $builder_id, string $instance_id): array {
return $this->reloadWithGlobalData($builder_id);
}
/**
* {@inheritdoc}
*/
public function onAttachToSlot(string $builder_id, string $instance_id, string $parent_id): array {
return $this->reloadWithGlobalData($builder_id);
}
/**
* {@inheritdoc}
*/
public function onMove(string $builder_id, string $instance_id): array {
return $this->reloadWithGlobalData($builder_id);
}
/**
* {@inheritdoc}
*/
public function onHistoryChange(string $builder_id): array {
return $this->reloadWithGlobalData($builder_id);
}
/**
* {@inheritdoc}
*/
public function onUpdate(string $builder_id, string $instance_id): array {
return $this->reloadWithGlobalData($builder_id);
}
/**
* {@inheritdoc}
*/
public function onDelete(string $builder_id, string $parent_id): array {
return $this->reloadWithGlobalData($builder_id);
95 75 78 57 /display_builder/web/modules/custom/display_builder/modules/display_builder_entity_view/tests/src/Kernel/InstanceEntityViewDisplayAccessControlTest.php /display_builder/web/modules/custom/display_builder/modules/display_builder_page_layout/tests/src/Kernel/InstancePageLayoutAccessControlTest.php /display_builder/web/modules/custom/display_builder/modules/display_builder_views/tests/src/Kernel/InstanceViewsAccessControlTest.php /display_builder/web/modules/custom/display_builder/tests/src/Kernel/InstanceAccessControlTest.php 36 lines87 tokens
if ($expect['view']) {
self::assertTrue($this->accessControl->access($instance, 'view', $user), 'User can view the instance.');
}
else {
self::assertFalse($this->accessControl->access($instance, 'view', $user), 'User can not view the instance.');
}
if ($expect['update']) {
self::assertTrue($this->accessControl->access($instance, 'update', $user), 'User can update the instance.');
}
else {
self::assertFalse($this->accessControl->access($instance, 'update', $user), 'User can not update the instance.');
}
if ($expect['delete']) {
self::assertTrue($this->accessControl->access($instance, 'delete', $user), 'User can delete the instance.');
}
else {
self::assertFalse($this->accessControl->access($instance, 'delete', $user), 'User can not delete the instance.');
}
}
/**
* Data provider for testInstanceEntityViewDisplayAccess().
*
* Each case needs:
* - profiles: Display Builder array of profiles to create
* - user_has_admin_permission: Add user admin permission
* - user_has_profile_id_permission: Add profile id permission on user
* - instance_use_profile_id: Add profile id permission on user
* - expect: expected use access results for view, update, delete.
*
* @return array<string, array<string, mixed>>
* The data to test and expected.
*/
public static function accessInstanceEntityViewDisplayProvider(): array {
69 53 /display_builder/web/modules/custom/display_builder/modules/display_builder_entity_view/tests/src/Kernel/InstanceEntityViewDisplayAccessControlTest.php /display_builder/web/modules/custom/display_builder/modules/display_builder_entity_view/tests/src/Kernel/InstanceEntityViewDisplayOverrideAccessControlTest.php 24 lines71 tokens
#[DataProvider('accessInstanceEntityViewDisplayProvider')]
public function testInstanceEntityViewDisplayAccess(array $data, array $expect): void {
// Create the Display builder profiles and verify permissions exist.
foreach ($data['profiles'] as $pid) {
$permission = \sprintf($this->useDisplayBuilderPermission, $pid);
self::createDisplayBuilderProfile($pid);
$availablePermissions = $this->userPermissions->getPermissions();
self::assertArrayHasKey($permission, $availablePermissions, 'Display builder profile permission is created and available.');
}
// Create the user with the permissions to test.
$permissions = [];
if ($data['user_has_admin_permission']) {
$permissions[] = $this->adminPermission;
}
if (isset($data['user_has_profile_id_permission'])) {
$permissions[] = \sprintf($this->useDisplayBuilderPermission, $data['user_has_profile_id_permission']);
}
$user = $this->setUpCurrentUser([], $permissions ?? []);
// Create the instance with profile and instance id.
$instance = $this->createDisplayBuilderInstance($data['instance_use_profile_id'] ?? NULL, EntityView::getPrefix() . 'user__user__default');