Compare commits

..

No commits in common. 'main' and 'unpublished_conditions' have entirely different histories.

  1. 39
      islandlives.module

39
islandlives.module

@ -34,47 +34,8 @@ function islandlives_views_pre_render(ViewExecutable $view) {
'media',
'manage_members',
'media_of',
'all_scholars',
];
if (isset($view) && (in_array($view->storage->id(), $applicable_views))) {
$view->element['#attached']['library'][] = 'islandlives/unpublished';
}
}
/**
* Implements hook_entity_access().
*/
function islandlives_entity_access(\Drupal\Core\Entity\EntityInterface $entity, $operation, \Drupal\Core\Session\AccountInterface $account) {
// Only modify access for 'view' and 'download' operations, and only for anonymous users.
if (!($operation === 'view' || $operation === 'download') || !$account->isAnonymous()) {
return \Drupal\Core\Access\AccessResult::neutral();
}
if ($entity instanceof \Drupal\media\MediaInterface) {
if (!$entity->isPublished()) {
return \Drupal\Core\Access\AccessResult::forbidden('Media is not published.');
}
}
$moduleHandler = \Drupal::service('module_handler');
if (!$moduleHandler->moduleExists('islandora_hierarchical_access')) {
return \Drupal\Core\Access\AccessResult::neutral();
}
elseif ($entity instanceof \Drupal\file\FileInterface) {
// Get all media attached to the files.
$media = \Drupal::database()->select(\Drupal\islandora_hierarchical_access\LUTGeneratorInterface::TABLE_NAME, 'lut')
->fields('lut', ['mid'])
->condition("lut.fid", $entity->id())
->execute()
->fetchCol();
foreach ($media as $mid) {
$media_entity = \Drupal::entityTypeManager()->getStorage('media')->load($mid);
if ($media_entity && !$media_entity->isPublished()) {
return \Drupal\Core\Access\AccessResult::forbidden('Media is not published.');
}
}
}
}

Loading…
Cancel
Save