Drupal modules for browsing and managing Fedora-based digital repositories.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

137 lines
4.1 KiB

<?php
/**
* @file
* This file defines the hooks that fedora_repository (islandora)
* makes available.
*/
/**
* Implements hook_islandora_tabs().
* This hook lets one add tabs to the object page in Islandora.
*
* @param array $content_models
* An Array of content model objects. A content model is only included
* if the object actualy exists with a ISLANDORACM datastream.
* @param string $pid
* The Fedora PID of the object who's page is firing the hook.
* @param int $page_number
* Page number for collection views.
*
* @return array
* $tabset a tab definition.
*/
function hook_islandora_tabs($content_models, $pid, $page_number) {
$tabset['A TAB'] = array(
'#type' => 'tabpage',
'#title' => t('A TITLE'),
'#content' => 'content'
);
return $tabset;
}
/**
* Implements hook_postprocess_solution_pack().
* This hook fires after the batch job to ingest a solution pack finishes.
*
* @param string $module
* Name of the module that spcified the solution pack.
*/
function hook_fedora_repository_postprocess_solution_pack($module) {
// Do something that requires the objects to be ingested ie. add XACML.
return;
}
/**
* Implements hook_required_fedora_objects().
* This hook lets one add objects to the repository through the
* solution pack interface.
*
* @return array
* array( 'path-to-foxml-file', 'pid', 'dsid', 'path-to-datastream-file',
* int dsversion, boolean required)
*/
function hook_required_fedora_objects() {
return array(
'fedora_repository' => array(
'module' => 'fedora_repository',
'title' => 'Islandora Core',
'objects' => array(
array(
'pid' => 'islandora:collectionCModel',
'label' => 'Islandora Collection Content Model',
'dsid' => 'ISLANDORACM',
'datastream_file' => "./$module_path/content_models/COLLECTIONCM.xml",
'dsversion' => 2,
'cmodel' => 'fedora-system:ContentModel-3.0',
),
array(
'pid' => 'islandora:root',
'label' => 'Islandora Top-level Collection',
'cmodel' => 'islandora:collectionCModel',
'datastreams' => array(
array(
'dsid' => 'COLLECTION_POLICY',
'datastream_file' => "./$module_path/collection_policies/COLLECTION-COLLECTION POLICY.xml",
),
array(
'dsid' => 'TN',
'datastream_file' => "./$module_path/images/Gnome-emblem-photos.png",
'mimetype' => 'image/png',
),
),
),
),
),
);
}
/**
* Implements hook_fedora_repository_can_ingest().
* Override ingest permissions.
* (from islandora_workflow)
*
* @deprecated
* Deprecated in favour of hook_fedora_repository_check_perm().
* @param string $collection_pid
* The PID of the collection
*
* @return boolean
* TRUE if the user can ingest into the specified collection, FALSE otherwise.
*/
function hook_fedora_repository_can_ingest($collection_pid) {
module_load_include('inc', 'islandora_workflow', 'islandora_workflow.permissions');
return (islandora_workflow_user_collection_permission_check($collection_pid) !== FALSE);
}
/**
* Implements hook_fedora_repository_check_perm().
*
* Hook to allow other modules to allow or deny operations on conditions other
* than the explicit Drupal permissions.
*
* @param string $op
* A string representing the operation to be performed.
* @param string|null $pid
* A string containing the Fedora PID on which the operation is to be
* performed. The (default) value of NULL will use the PID indicated by the
* fedora_repository_pid Drupal variable.
* @param object|null $as_user
* An object representing the user for whom to check the permissions (as
* given by user_load or the $user global). The (default) value of NULL will
* cause permissions to be evaluated for the current user (from the $user
* global).
*
* @return boolean|null
* Either a boolean permitting (TRUE) or forbidding (FALSE) an operation, or
* NULL to make no assertion.
*/
function hook_fedora_repository_check_perm($op, $pid = NULL, $as_user = NULL) {
return NULL;
}