|
|
|
@ -147,7 +147,7 @@ function islandora_menu() {
|
|
|
|
|
'page callback' => 'islandora_printer_object', |
|
|
|
|
'page arguments' => array(2), |
|
|
|
|
'type' => MENU_LOCAL_TASK, |
|
|
|
|
'access callback' => 'islandora_object_access', |
|
|
|
|
'access callback' => 'islandora_print_object_access', |
|
|
|
|
'access arguments' => array(ISLANDORA_VIEW_OBJECTS, 2), |
|
|
|
|
); |
|
|
|
|
$items['islandora/object/%islandora_object/print'] = array( |
|
|
|
@ -663,6 +663,31 @@ function islandora_print_object(AbstractObject $object) {
|
|
|
|
|
return theme('islandora_object_print', array('object' => $object)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* View print tab access. |
|
|
|
|
* |
|
|
|
|
* Configurable option in islandora configuration. |
|
|
|
|
* |
|
|
|
|
* @param string $op |
|
|
|
|
* String identifying an operation to check. Should correspond to a |
|
|
|
|
* permission declared via hook_permission(). |
|
|
|
|
* @param AbstractObject $object |
|
|
|
|
* An object to check for permissions. |
|
|
|
|
* |
|
|
|
|
* @return bool |
|
|
|
|
* TRUE if at least one implementation of hook_islandora_object_access() |
|
|
|
|
* returned TRUE, and no implementation return FALSE; FALSE otherwise, or |
|
|
|
|
* FALSE if 'islandora_show_print_option' is not selected in islandora |
|
|
|
|
* configuraton. |
|
|
|
|
*/ |
|
|
|
|
function islandora_print_object_access($op, $object) { |
|
|
|
|
if (!variable_get('islandora_show_print_option', FALSE)) { |
|
|
|
|
return FALSE; |
|
|
|
|
} |
|
|
|
|
$access = islandora_object_access($op, $object); |
|
|
|
|
return $access; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Implements hook_forms(). |
|
|
|
|
*/ |
|
|
|
@ -815,34 +840,6 @@ function islandora_object_access_callback($perm, $object = NULL) {
|
|
|
|
|
return islandora_object_access($perm, $object); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Checks whether the user can access the given object and datastream. |
|
|
|
|
* |
|
|
|
|
* Checks for object existance, accessiblitly, namespace permissions, |
|
|
|
|
* and user permissions |
|
|
|
|
* |
|
|
|
|
* @param string $perm |
|
|
|
|
* The user permission to test for. |
|
|
|
|
* @param AbstractObject $object |
|
|
|
|
* The object to test, if NULL given the object doesn't exist or is |
|
|
|
|
* inaccessible. |
|
|
|
|
* @param AbstractDatastream $datastream |
|
|
|
|
* The datastream to test, if NULL given the datastream doesn't exist |
|
|
|
|
* or is inaccessible. |
|
|
|
|
* @param StdObject $account |
|
|
|
|
* The account to test permissions as or NULL for current user. |
|
|
|
|
* |
|
|
|
|
* @return bool |
|
|
|
|
* TRUE if the user is allowed to access this object, FALSE otherwise. |
|
|
|
|
*/ |
|
|
|
|
function islandora_object_datastream_access_callback($perm, $object = NULL, $datastream = NULL, $account = NULL) { |
|
|
|
|
module_load_include('inc', 'islandora', 'includes/utilities'); |
|
|
|
|
$message = islandora_deprecated('7.x-1.2', 'Use islandora_datastream_access().'); |
|
|
|
|
trigger_error(filter_xss($message), E_USER_DEPRECATED); |
|
|
|
|
|
|
|
|
|
return islandora_datastream_access($perm, $datastream, $account); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Checks whether the user can access the given object and datastream. |
|
|
|
|
* |
|
|
|
@ -1070,6 +1067,7 @@ function islandora_view_object(AbstractObject $object) {
|
|
|
|
|
function islandora_printer_object(AbstractObject $object) { |
|
|
|
|
$output = array(); |
|
|
|
|
$temp_arr = array(); |
|
|
|
|
|
|
|
|
|
// Dispatch print hook. |
|
|
|
|
foreach (islandora_build_hook_list(ISLANDORA_PRINT_HOOK, $object->models) as $hook) { |
|
|
|
|
$temp = module_invoke_all($hook, $object); |
|
|
|
@ -1091,19 +1089,20 @@ function islandora_printer_object(AbstractObject $object) {
|
|
|
|
|
* Title callback for drupal title. |
|
|
|
|
* |
|
|
|
|
* Changes the drupal title to be the objects label. |
|
|
|
|
* models that their modules want to provide a view for. |
|
|
|
|
* |
|
|
|
|
* @param AbstractObject $object |
|
|
|
|
* The object to view. |
|
|
|
|
* |
|
|
|
|
* @return string |
|
|
|
|
* The objects label. |
|
|
|
|
* The objects label. Note that we return the raw value to prevent |
|
|
|
|
* double encoding, as we expect drupal_set_title() to check_plain() down |
|
|
|
|
* the road. |
|
|
|
|
*/ |
|
|
|
|
function islandora_drupal_title(AbstractObject $object) { |
|
|
|
|
module_load_include('inc', 'islandora', 'includes/breadcrumb'); |
|
|
|
|
drupal_set_breadcrumb(islandora_get_breadcrumbs($object)); |
|
|
|
|
|
|
|
|
|
return filter_xss($object->label); |
|
|
|
|
return $object->label; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -1950,7 +1949,7 @@ function islandora_islandora_datastream_access($op, AbstractDatastream $datastre
|
|
|
|
|
$hooks = islandora_invoke_hook_list(ISLANDORA_DERVIATIVE_CREATION_HOOK, $object->models, array($object)); |
|
|
|
|
$hooks = islandora_filter_derivatives($hooks, array('force' => TRUE), $object); |
|
|
|
|
foreach ($hooks as $hook) { |
|
|
|
|
if ($hook['destination_dsid'] == $datastream->id && |
|
|
|
|
if (isset($hook['destination_dsid']) && $hook['destination_dsid'] == $datastream->id && |
|
|
|
|
(is_null($hook['source_dsid']) || islandora_datastream_access(ISLANDORA_VIEW_OBJECTS, $object[$hook['source_dsid']], $user))) { |
|
|
|
|
$applicable_hook = TRUE; |
|
|
|
|
break; |
|
|
|
@ -2010,7 +2009,7 @@ function islandora_menu_local_tasks_alter(&$data, $router_item, $root_path) {
|
|
|
|
|
if ($tab['#link']['path'] == 'islandora/object/%/print_object') { |
|
|
|
|
if ($root_path == 'islandora/object/%') { |
|
|
|
|
$islandora_path = drupal_get_path('module', 'islandora'); |
|
|
|
|
$tab['#prefix'] = '<li>'; |
|
|
|
|
$tab['#prefix'] = '<li class="islandora-print">'; |
|
|
|
|
$tab['#suffix'] = '</li>'; |
|
|
|
|
$tab['#theme'] = 'link'; |
|
|
|
|
$tab['#text'] = theme('image', array( |
|
|
|
|