Browse Source

Fix a bug where user_access/namespaces were not getting checked for datastreams.

pull/443/head
Jordan Dukart 11 years ago
parent
commit
587c4e22ae
  1. 15
      islandora.module

15
islandora.module

@ -1834,15 +1834,22 @@ function islandora_islandora_metadata_display_info() {
* Implements hook_islandora_datastream_access().
*/
function islandora_islandora_datastream_access($op, AbstractDatastream $datastream, $user) {
if ($op == ISLANDORA_REGENERATE_DERIVATIVES) {
module_load_include('inc', 'islandora', 'includes/utilities');
$result = islandora_namespace_accessible($datastream->parent->id) && user_access($op, $user);
if ($result && $op == ISLANDORA_REGENERATE_DERIVATIVES) {
$applicable_hook = FALSE;
$object = $datastream->parent;
$hooks = islandora_invoke_hook_list(ISLANDORA_DERVIATIVE_CREATION_HOOK, $object->models, array($object));
foreach ($hooks as $hook) {
if ($hook['destination_dsid'] == $datastream->id && ((isset($hook['source_dsid']) && isset($object[$hook['source_dsid']]) && islandora_datastream_access(ISLANDORA_VIEW_OBJECTS, $object[$hook['source_dsid']], $user)) || (array_key_exists('source_dsid', $hook) && $hook['source_dsid'] == NULL))) {
return user_access(ISLANDORA_REGENERATE_DERIVATIVES);
$applicable_hook = TRUE;
break;
}
}
return FALSE;
if (!$applicable_hook) {
$result = FALSE;
}
}
return NULL;
return $result;
}

Loading…
Cancel
Save