Browse Source

Merge pull request #489 from willtp87/7.x.derivative_rels

7.x.derivative rels
pull/495/head
Nigel Banks 11 years ago
parent
commit
b4fa747c4f
  1. 39
      includes/derivatives.inc
  2. 7
      islandora.api.php
  3. 13
      islandora.module

39
includes/derivatives.inc

@ -4,6 +4,45 @@
* Defines functions used when constructing derivatives. * Defines functions used when constructing derivatives.
*/ */
/**
* Decides which derivative function to call and runs it.
*
* @param AbstractObject $object
* The object to run the derivative function for.
* @param string $dsid
* The DSID to run the derivative function for.
*/
function islandora_run_derivatives(AbstractObject $object, $dsid) {
$batch_array = batch_get();
if (empty($batch_array)) {
$logging_results = islandora_do_derivatives($object, array(
'source_dsid' => $dsid,
));
islandora_derivative_logging($logging_results);
}
else {
batch_set(
// Title won't show for batch in a batch.
array(
'init_message' => t('Preparing derivatives for @label', array('@label' => $object->label)),
'error_message' => t('An error occured creating derivatives.'),
'progress_message' => t(
'Creating derivatives for @label <br/>Time elapsed: @elapsed <br/>
Estimated time remaining @estimate.',
array('@label' => $object->label)
),
'file' => drupal_get_path('module', 'islandora') . '/includes/regenerate_derivatives.form.inc',
'operations' => islandora_do_batch_derivatives(
$object,
array(
'source_dsid' => $dsid,
)
),
)
);
}
}
/** /**
* Kicks off derivative functions based upon hooks and conditions. * Kicks off derivative functions based upon hooks and conditions.
* *

7
islandora.api.php

@ -627,9 +627,10 @@ function hook_CMODEL_PID_islandora_overview_object_alter(AbstractObject &$object
* - force: Bool denoting whether we are forcing the generation of * - force: Bool denoting whether we are forcing the generation of
* derivatives. * derivatives.
* - source_dsid: (Optional) String of the datastream id we are generating * - source_dsid: (Optional) String of the datastream id we are generating
* from or NULL if it's the object itself. * from or NULL if it's the object itself. Does not impact function
* ordering.
* - destination_dsid: (Optional) String of the datastream id that is being * - destination_dsid: (Optional) String of the datastream id that is being
* created. To be used in the UI. * created. To be used in the UI. Does not impact function ordering.
* - weight: A string denoting the weight of the function. This value is * - weight: A string denoting the weight of the function. This value is
* sorted upon to run functions in order. * sorted upon to run functions in order.
* - function: An array of function(s) to be ran when constructing * - function: An array of function(s) to be ran when constructing
@ -642,7 +643,7 @@ function hook_CMODEL_PID_islandora_overview_object_alter(AbstractObject &$object
* following fields: * following fields:
* - message: A string passed through t() describing the * - message: A string passed through t() describing the
* outcome of the operation. * outcome of the operation.
* - message_sub: (Optional) Substitutions to be passed along to t() or * - message_sub: (Optional) A substitution array as acceptable by t() or
* watchdog. * watchdog.
* - type: A string denoting whether the output is to be * - type: A string denoting whether the output is to be
* drupal_set_messaged (dsm) or watchdogged (watchdog). * drupal_set_messaged (dsm) or watchdogged (watchdog).

13
islandora.module

@ -1722,10 +1722,7 @@ function islandora_islandora_basic_collection_get_query_filters() {
*/ */
function islandora_islandora_object_ingested(AbstractObject $object) { function islandora_islandora_object_ingested(AbstractObject $object) {
module_load_include('inc', 'islandora', 'includes/derivatives'); module_load_include('inc', 'islandora', 'includes/derivatives');
$logging_results = islandora_do_derivatives($object, array( islandora_run_derivatives($object, NULL);
'source_dsid' => NULL,
));
islandora_derivative_logging($logging_results);
} }
/** /**
@ -1736,10 +1733,7 @@ function islandora_islandora_object_ingested(AbstractObject $object) {
*/ */
function islandora_islandora_datastream_ingested(AbstractObject $object, AbstractDatastream $datastream) { function islandora_islandora_datastream_ingested(AbstractObject $object, AbstractDatastream $datastream) {
module_load_include('inc', 'islandora', 'includes/derivatives'); module_load_include('inc', 'islandora', 'includes/derivatives');
$logging_results = islandora_do_derivatives($object, array( islandora_run_derivatives($object, $datastream->id);
'source_dsid' => $datastream->id,
));
islandora_derivative_logging($logging_results);
} }
/** /**
@ -1880,7 +1874,8 @@ function islandora_islandora_datastream_access($op, AbstractDatastream $datastre
$hooks = islandora_invoke_hook_list(ISLANDORA_DERVIATIVE_CREATION_HOOK, $object->models, array($object)); $hooks = islandora_invoke_hook_list(ISLANDORA_DERVIATIVE_CREATION_HOOK, $object->models, array($object));
$hooks = islandora_filter_derivatives($hooks, array('force' => TRUE), $object); $hooks = islandora_filter_derivatives($hooks, array('force' => TRUE), $object);
foreach ($hooks as $hook) { foreach ($hooks as $hook) {
if ($hook['destination_dsid'] == $datastream->id && islandora_datastream_access(ISLANDORA_VIEW_OBJECTS, $object[$hook['source_dsid']], $user)) { if ($hook['destination_dsid'] == $datastream->id &&
(is_null($hook['source_dsid']) || islandora_datastream_access(ISLANDORA_VIEW_OBJECTS, $object[$hook['source_dsid']], $user))) {
$applicable_hook = TRUE; $applicable_hook = TRUE;
break; break;
} }

Loading…
Cancel
Save