From b2d454ba2259df64033c8b2c87efca4722770457 Mon Sep 17 00:00:00 2001 From: Stefan Langer Date: Tue, 21 Jan 2014 12:07:22 -0500 Subject: [PATCH] ISLANDORA-441 Previous revert unsuccessful (n00b); reverting back to 4ef9551. This reverts commit db284877694bd9e44f7611448332e179d849b207, reversing changes made to 4ef955174e4bca7c6f9c7445abcececf6ca11249. Conflicts: islandora.module --- includes/breadcrumb.inc | 6 +- includes/datastream.inc | 165 +-------------------- includes/derivatives.inc | 106 ++------------ includes/object_properties.form.inc | 27 ---- includes/regenerate_derivatives.form.inc | 178 ----------------------- islandora.api.php | 4 +- islandora.module | 46 +++--- tests/derivatives.test | 31 +--- tests/islandora_derivatives_test.module | 9 +- theme/theme.inc | 27 +--- 10 files changed, 52 insertions(+), 547 deletions(-) delete mode 100644 includes/regenerate_derivatives.form.inc diff --git a/includes/breadcrumb.inc b/includes/breadcrumb.inc index 6f975ae3..05ab1bac 100644 --- a/includes/breadcrumb.inc +++ b/includes/breadcrumb.inc @@ -28,7 +28,7 @@ function islandora_get_breadcrumbs($object) { $breadcrumbs = islandora_get_breadcrumbs_recursive($object->id, $object->repository); array_pop($breadcrumbs); $context = 'islandora'; - drupal_alter('islandora_breadcrumbs', $breadcrumbs, $context, $object); + drupal_alter('islandora_breadcrumbs', $breadcrumbs, $context); return $breadcrumbs; } @@ -114,7 +114,9 @@ function islandora_get_breadcrumbs_recursive($pid, FedoraRepository $repository, // render the last two links and break (on the next pass). return array_merge( islandora_get_breadcrumbs_recursive($root, $repository, $context), - array('...') + array( + '...', + ) ); } } diff --git a/includes/datastream.inc b/includes/datastream.inc index ba2872c2..1d506e3d 100644 --- a/includes/datastream.inc +++ b/includes/datastream.inc @@ -53,19 +53,8 @@ function islandora_view_datastream(AbstractDatastream $datastream, $download = F if ($download) { // Browsers will not append all extensions. $mime_detect = new MimeDetect(); - $extension = '.' . $mime_detect->getExtension($datastream->mimetype); - - // Prevent adding on a duplicate extension. - $label = $datastream->label; - $extension_length = strlen($extension); - $duplicate_extension_position = strlen($label) > $extension_length ? - strripos($label, $extension, -$extension_length) : - FALSE; - $filename = $label; - if ($duplicate_extension_position === FALSE) { - $filename .= $extension; - } - + $extension = $mime_detect->getExtension($datastream->mimetype); + $filename = $datastream->label . '.' . $extension; header("Content-Disposition: attachment; filename=\"$filename\""); } @@ -81,30 +70,14 @@ function islandora_view_datastream(AbstractDatastream $datastream, $download = F islandora_view_datastream_set_cache_headers($datastream); drupal_page_is_cacheable(FALSE); + // Try not to load the file into PHP memory! + // Close and flush ALL the output buffers! + while (@ob_end_flush()) { + }; // New content needed. if ($cache_check === 200) { - // We need to see if the chunking is being requested. This will mainly - // happen with iOS video requests as they do not support any other way - // to receive content for playback. - $chunk_headers = FALSE; - if (isset($_SERVER['HTTP_RANGE'])) { - // Set headers specific to chunking. - $chunk_headers = islandora_view_datastream_set_chunk_headers($datastream); - } - // Try not to load the file into PHP memory! - // Close and flush ALL the output buffers! - while (@ob_end_flush()) { - }; - - if (isset($_SERVER['HTTP_RANGE'])) { - if ($chunk_headers) { - islandora_view_datastream_deliver_chunks($datastream, $chunk_headers); - } - } - else { - $datastream->getContent('php://output'); - } + $datastream->getContent('php://output'); } exit(); } @@ -339,7 +312,7 @@ function islandora_edit_datastream(AbstractDatastream $datastream) { case 0: // No edit implementations. drupal_set_message(t('There are no edit methods specified for this datastream.')); - drupal_goto("islandora/object/{$datastream->parent->id}/manage/datastreams"); + drupal_goto("islandora/object/{$object->id}/manage/datastreams"); break; case 1: @@ -410,125 +383,3 @@ function islandora_datastream_get_view_link(AbstractDatastream $datastream) { 'datastream' => $datastream, )); } - -/** - * Set the headers for the chunking of our content. - * - * @param AbstractDatastream $datastream - * An AbstractDatastream representing a datastream on a Fedora object. - * - * @return bool - * TRUE if there are chunks to be returned, FALSE otherwise. - */ -function islandora_view_datastream_set_chunk_headers(AbstractDatastream $datastream) { - $file_uri = islandora_view_datastream_retrieve_file_uri($datastream); - // The meat of this has been taken from: - // http://mobiforge.com/design-development/content-delivery-mobile-devices. - $size = filesize($file_uri); - $length = $size; - $start = 0; - $end = $size - 1; - - header("Accept-Ranges: 0-$length"); - if (isset($_SERVER['HTTP_RANGE'])) { - $c_start = $start; - $c_end = $end; - // Extract the range string. - list(, $range) = explode('=', $_SERVER['HTTP_RANGE'], 2); - // Make sure the client hasn't sent us a multibyte range. - if (strpos($range, ',') !== FALSE) { - // Not a valid range, notify the client. - header('HTTP/1.1 416 Requested Range Not Satisfiable'); - header("Content-Range: bytes $start-$end/$size"); - exit; - } - // If the range starts with an '-' we start from the beginning. If not, we - // forward the file pointer and make sure to get the end byte if specified. - if (strpos($range, '-') === 0) { - // The n-number of the last bytes is requested. - $c_start = $size - substr($range, 1); - } - else { - $range = explode('-', $range); - $c_start = $range[0]; - $c_end = (isset($range[1]) && is_numeric($range[1])) ? $range[1] : $size; - } - /* Check the range and make sure it's treated according to the specs. - * http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html - */ - // End bytes can not be larger than $end. - $c_end = ($c_end > $end) ? $end : $c_end; - // Validate the requested range and return an error if it's not correct. - if ($c_start > $c_end || $c_start > $size - 1 || $c_end >= $size) { - header('HTTP/1.1 416 Requested Range Not Satisfiable'); - header("Content-Range: bytes $start-$end/$size"); - exit; - } - $start = $c_start; - $end = $c_end; - // Calculate new content length. - $length = $end - $start + 1; - header('HTTP/1.1 206 Partial Content'); - } - // Notify the client the byte range we'll be outputting. - header("Content-Range: bytes $start-$end/$size"); - header("Content-Length: $length"); - return array( - 'start' => $start, - 'end' => $end, - ); -} - -/** - * Deliver back the specified chunks of a file. - * - * @param AbstractDatastream $datastream - * An AbstractDatastream representing a datastream on a Fedora object. - * @param array $params - * An associate array containing the start and ending chunk bytes. - */ -function islandora_view_datastream_deliver_chunks(AbstractDatastream $datastream, $params) { - $file_uri = islandora_view_datastream_retrieve_file_uri($datastream); - // The meat of this has been taken from: - // http://mobiforge.com/design-development/content-delivery-mobile-devices. - $fp = @fopen($file_uri, 'rb'); - fseek($fp, $params['start']); - // Start buffered download. - $buffer = 1024 * 8; - while (!feof($fp) && ($p = ftell($fp)) <= $params['end']) { - if ($p + $buffer > $params['end']) { - // In case we're only outputting a chunk, make sure we don't read past the - // length. - $buffer = $params['end'] - $p + 1; - } - // Reset time limit for big files. - set_time_limit(0); - echo fread($fp, $buffer); - } - fclose($fp); -} - -/** - * Creates/returns the file URI for the content of a datastream for chunking. - * - * @param AbstractDatastream $datastream - * An AbstractDatastream representing a datastream on a Fedora object. - * - * @return string - * The URI of the file. - */ -function islandora_view_datastream_retrieve_file_uri(AbstractDatastream $datastream) { - $mime_detect = new MimeDetect(); - $extension = $mime_detect->getExtension($datastream->mimetype); - $file_uri = 'temporary://chunk_' . $datastream->parent->id . '_' . $datastream->id . '_' . $datastream->createdDate->getTimestamp() . '.' . $extension; - if (!file_exists($file_uri)) { - $file = new stdClass(); - $file->uri = $file_uri; - $file->filename = drupal_basename($file_uri); - $file->filemime = $datastream->mimeType; - $file->status = 0; - $datastream->getContent($file_uri); - file_save($file); - } - return $file_uri; -} diff --git a/includes/derivatives.inc b/includes/derivatives.inc index d25789cc..5ba4bb56 100644 --- a/includes/derivatives.inc +++ b/includes/derivatives.inc @@ -41,7 +41,20 @@ function islandora_do_derivatives(AbstractObject $object, array $options) { $hooks = islandora_invoke_hook_list(ISLANDORA_DERVIATIVE_CREATION_HOOK, $object->models, array($object)); uasort($hooks, 'drupal_sort_weight'); $results = array(); - $hooks = islandora_filter_derivatives($hooks, $options, $object); + + if (array_key_exists('source_dsid', $options)) { + $hooks = array_filter($hooks, function($filter_hook) use($options) { + return array_key_exists('source_dsid', $filter_hook) && + $filter_hook['source_dsid'] == $options['source_dsid']; + }); + } + + if (array_key_exists('destination_dsid', $options)) { + $hooks = array_filter($hooks, function($filter_hook) use($options) { + return array_key_exists('destination_dsid', $filter_hook) && + $filter_hook['destination_dsid'] == $options['destination_dsid']; + }); + } foreach ($hooks as $hook) { if (isset($hook['file'])) { @@ -108,94 +121,3 @@ function islandora_derivative_logging(array $logging_results) { } } } - -/** - * Kicks off derivative functions based upon hooks and conditions. - * - * @param AbstractObject $object - * An AbstractObject representing a FedoraObject. - * @param array $options - * An array of parameters containing: - * - force: Bool denoting whether we are forcing the generation of - * derivatives. - * - source_dsid: (Optional) String of the datastream id we are generating - * from or NULL if it's the object itself. - * - destination_dsid: (Optional) String of the datastream id that is being - * created. To be used in the UI. - * - * @return array - * An array of operations to be called from within a batch. - */ -function islandora_do_batch_derivatives(AbstractObject $object, array $options) { - module_load_include('inc', 'islandora', 'includes/utilities'); - $options += array( - 'force' => FALSE, - ); - $hooks = islandora_invoke_hook_list(ISLANDORA_DERVIATIVE_CREATION_HOOK, $object->models, array($object)); - uasort($hooks, 'drupal_sort_weight'); - $operations = array(); - - $hooks = islandora_filter_derivatives($hooks, $options, $object); - foreach ($hooks as $hook) { - $file = FALSE; - if (isset($hook['file'])) { - $file = $hook['file']; - } - foreach ($hook['function'] as $function) { - $operations[] = array('islandora_derivative_perform_batch_operation', array( - $function, - $file, - $object->id, - $options['force']), - ); - } - } - return $operations; -} - -/** - * Filter the derivative functions to only call those which are valid. - * - * @param array $hooks - * An array of hooks to be filtered depending on options. - * @param array $options - * An array of options for the derivative generation. - * @param AbstractObject $object - * An AbstractObject representing an object within Fedora. - * - * @return array - * Returns the filtered array of hooks to be ran. - */ -function islandora_filter_derivatives($hooks, $options, AbstractObject $object) { - if (array_key_exists('source_dsid', $options)) { - $hooks = array_filter($hooks, function ($filter_hook) use ($options) { - return array_key_exists('source_dsid', $filter_hook) && - $filter_hook['source_dsid'] == $options['source_dsid']; - }); - } - if (array_key_exists('destination_dsid', $options)) { - $hooks = array_filter($hooks, function ($filter_hook) use ($options) { - return array_key_exists('destination_dsid', $filter_hook) && - $filter_hook['destination_dsid'] == $options['destination_dsid']; - }); - } - // Do a final filtering to make sure that the source DSID exists on the object - // where needed. Using a defined function as opposed to the way above as - // it seems to break PHPCS as of 1.4.8. - $filter_function = function ($filter_hook) use ($object) { - $to_return = FALSE; - if (array_key_exists('source_dsid', $filter_hook)) { - if ($filter_hook['source_dsid'] != NULL) { - if (isset($object[$filter_hook['source_dsid']])) { - $to_return = TRUE; - } - } - else { - $to_return = TRUE; - } - } - return $to_return; - }; - $hooks = array_filter($hooks, $filter_function); - return $hooks; -} diff --git a/includes/object_properties.form.inc b/includes/object_properties.form.inc index f9c8e23b..676f0d0c 100644 --- a/includes/object_properties.form.inc +++ b/includes/object_properties.form.inc @@ -26,15 +26,6 @@ function islandora_object_properties_form(array $form, array &$form_state, Abstr if (!empty($temp)) { $related_objects_pids = array_merge_recursive($related_objects_pids, $temp); } - $regenerate_derivatives_access = FALSE; - if (islandora_object_access(ISLANDORA_REGENERATE_DERIVATIVES, $object)) { - module_load_include('inc', 'islandora', 'includes/derivatives'); - $hooks = islandora_invoke_hook_list(ISLANDORA_DERVIATIVE_CREATION_HOOK, $object->models, array($object)); - $hooks = islandora_filter_derivatives($hooks, array('force' => TRUE), $object); - if (count($hooks) > 1) { - $regenerate_derivatives_access = TRUE; - } - } return array( 'pid' => array( '#type' => 'hidden', @@ -93,12 +84,6 @@ function islandora_object_properties_form(array $form, array &$form_state, Abstr '#submit' => array('islandora_object_properties_form_delete'), '#limit_validation_errors' => array(array('pid')), ), - 'regenerate' => array( - '#type' => 'submit', - '#access' => $regenerate_derivatives_access, - '#value' => t("Regenerate all derivatives"), - '#submit' => array('islandora_object_properties_regenerate_derivatives'), - ), ); } @@ -203,15 +188,3 @@ function islandora_update_object_properties($pid, $update_states, $state, $updat } } } - -/** - * Callback function for object properties regenerate all derivatives. - * - * @param array $form - * The Drupal form. - * @param array $form_state - * The Drupal form state. - */ -function islandora_object_properties_regenerate_derivatives(array $form, array &$form_state) { - drupal_goto("islandora/object/{$form_state['object']}/regenerate"); -} diff --git a/includes/regenerate_derivatives.form.inc b/includes/regenerate_derivatives.form.inc deleted file mode 100644 index a7ef147c..00000000 --- a/includes/regenerate_derivatives.form.inc +++ /dev/null @@ -1,178 +0,0 @@ - $datastream->id)), - "islandora/object/{$datastream->parent->id}/manage/datastreams", - t('This will create a new version of the datastream. Please wait while this happens.'), - t('Regenerate'), - t('Cancel') - ); -} - -/** - * Submit handler for the regenerate datastream derivative form. - * - * @param array $form - * The Drupal form. - * @param array $form_state - * The Drupal form state. - */ -function islandora_regenerate_datastream_derivative_form_submit(array $form, array &$form_state) { - module_load_include('inc', 'islandora', 'includes/derivatives'); - $datastream = $form_state['datastream']; - $batch = islandora_regenerate_datastream_derivative_batch($datastream); - batch_set($batch); - $form_state['redirect'] = "islandora/object/{$datastream->parent->id}/manage/datastreams"; -} - -/** - * Regenerate all derivatives on an object. - * - * @param array $form - * The Drupal form. - * @param array $form_state - * The Drupal form state. - * @param AbstractObject $object - * The object that is having its derivatives regenerated. - * - * @return array - * The Drupal form definition. - */ -function islandora_regenerate_object_derivatives_form(array $form, array &$form_state, AbstractObject $object) { - $form_state['object'] = $object; - return confirm_form($form, - t('Are you sure you want to regenerate all the derivatives for %title?', array('%title' => $object->label)), - "islandora/object/{$object->id}/manage/properties", - t('This will create a new version for every datastream on the object. Please wait while this happens.'), - t('Regenerate'), - t('Cancel') - ); -} - -/** - * Submit handler for the regenerate object derivativse form. - * - * @param array $form - * The Drupal form. - * @param array $form_state - * The Drupal form state. - */ -function islandora_regenerate_object_derivatives_form_submit(array $form, array &$form_state) { - $object = $form_state['object']; - $batch = islandora_regenerate_object_derivatives_batch($object); - batch_set($batch); - $form_state['redirect'] = "islandora/object/{$object->id}/manage/properties"; -} - -/** - * Creates a batch to go out and re-create all of the derivatives for an object. - * - * @param AbstractObject $object - * A AbstractObject representing an object within Fedora. - * - * @return array - * An array specifying the Drupal batch. - */ -function islandora_regenerate_object_derivatives_batch(AbstractObject $object) { - module_load_include('inc', 'islandora', 'includes/derivatives'); - return array( - 'title' => t('Regenerating all derivatives for @label', array('@label' => $object->label)), - 'operations' => islandora_do_batch_derivatives($object, array('force' => TRUE)), - 'init_message' => t('Preparing to regenerate derivatives...'), - 'progress_message' => t('Time elapsed: @elapsed
Estimated time remaning @estimate.'), - 'error_message' => t('An error has occurred.'), - 'file' => drupal_get_path('module', 'islandora') . '/includes/regenerate_derivatives.form.inc', - 'finished' => 'islandora_regenerate_derivative_batch_finished', - ); -} - -/** - * Creates a batch to go out and re-create the derivative for a datastream. - * - * @param AbstractDatastream $datastream - * A AbstractDatastream representing a datastream on an object within Fedora. - * - * @return array - * An array specifying the Drupal batch. - */ -function islandora_regenerate_datastream_derivative_batch(AbstractDatastream $datastream) { - module_load_include('inc', 'islandora', 'includes/derivatives'); - return array( - 'title' => t('Regenerating derivatives for the @dsid datastream', array('@dsid' => $datastream->id)), - 'operations' => islandora_do_batch_derivatives($datastream->parent, array( - 'force' => TRUE, - 'destination_dsid' => $datastream->id, - )), - 'init_message' => t('Preparing to regenerate derivatives...'), - 'progress_message' => t('Time elapsed: @elapsed
Estimated time remaning @estimate.'), - 'error_message' => t('An error has occurred.'), - 'file' => drupal_get_path('module', 'islandora') . '/includes/regenerate_derivatives.form.inc', - 'finished' => 'islandora_regenerate_derivative_batch_finished', - ); -} - -/** - * Wrapper to call out to batch operations. - * - * @param string $function - * The name of the function we are calling for derivatives. - * @param bool|string $file - * FALSE if there is no file to load, the path to require otherwise - * @param string $pid - * The pid of the object we are performing. - * @param bool $force - * Whether we are forcing derivative regeneration or not. - * @param array $context - * The context of the current batch operation. - */ -function islandora_derivative_perform_batch_operation($function, $file, $pid, $force, &$context) { - if ($file) { - require_once $file; - } - if (function_exists($function)) { - $logging = call_user_func($function, islandora_object_load($pid), $force); - if (!empty($logging)) { - $context['results']['logging'][] = $logging; - } - } - else { - watchdog('islandora', 'Unable to call derivative function @function as it was not found!', array('@function' => $function), WATCHDOG_ERROR); - } -} - -/** - * Finished function for derivative batch regeneration. - * - * @param array $success - * An array of success passed from the batch. - * @param array $results - * An array of results passed from the batch. - * @param array $operations - * An array of operations passed from the batch. - */ -function islandora_regenerate_derivative_batch_finished($success, $results, $operations) { - module_load_include('inc', 'islandora', 'includes/derivatives'); - if (!empty($results['logging'])) { - islandora_derivative_logging($results['logging']); - } -} diff --git a/islandora.api.php b/islandora.api.php index 51aeb343..04d8bd49 100644 --- a/islandora.api.php +++ b/islandora.api.php @@ -691,10 +691,8 @@ function hook_islandora_update_related_objects_properties(AbstractObject $object * Breadcrumbs array to be altered by reference. Each element is markup. * @param string $context * Where the alter is originating from for distinguishing. - * @param AbstractObject $object - * (Optional) AbstractObject representing object providing breadcrumb path */ -function hook_islandora_breadcrumbs_alter(&$breadcrumbs, $context, $object = NULL) { +function hook_islandora_breadcrumbs_alter(&$breadcrumbs, $context) { } diff --git a/islandora.module b/islandora.module index 8e480baa..8d6b285c 100644 --- a/islandora.module +++ b/islandora.module @@ -36,7 +36,6 @@ define('ISLANDORA_MANAGE_PROPERTIES', 'manage object properties'); define('ISLANDORA_VIEW_DATASTREAM_HISTORY', 'view old datastream versions'); define('ISLANDORA_MANAGE_DELETED_OBJECTS', 'manage deleted objects'); define('ISLANDORA_REVERT_DATASTREAM', 'revert to old datastream'); -define('ISLANDORA_REGENERATE_DERIVATIVES', 'regenerate derivatives for an object'); // Hooks. @@ -210,15 +209,6 @@ function islandora_menu() { 'access callback' => 'islandora_object_access_callback', 'access arguments' => array(ISLANDORA_PURGE, 2), ); - $items['islandora/object/%islandora_object/regenerate'] = array( - 'title' => 'Regenerate all derivatives on an object', - 'file' => 'includes/regenerate_derivatives.form.inc', - 'page callback' => 'drupal_get_form', - 'page arguments' => array('islandora_regenerate_object_derivatives_form', 2), - 'type' => MENU_CALLBACK, - 'access callback' => 'islandora_object_access_callback', - 'access arguments' => array(ISLANDORA_REGENERATE_DERIVATIVES, 2), - ); $items['islandora/object/%islandora_object/manage/datastreams/add'] = array( 'title' => 'Add a datastream', 'file' => 'includes/add_datastream.form.inc', @@ -324,16 +314,6 @@ function islandora_menu() { 'access arguments' => array(ISLANDORA_VIEW_DATASTREAM_HISTORY, 4), 'load arguments' => array(2), ); - $items['islandora/object/%islandora_object/datastream/%islandora_datastream/regenerate'] = array( - 'title' => 'Regenrate datastream derivative', - 'page callback' => 'drupal_get_form', - 'page arguments' => array('islandora_regenerate_datastream_derivative_form', 4), - 'file' => 'includes/regenerate_derivatives.form.inc', - 'type' => MENU_CALLBACK, - 'access callback' => 'islandora_datastream_access', - 'access arguments' => array(ISLANDORA_REGENERATE_DERIVATIVES, 4), - 'load arguments' => array(2), - ); $items['islandora/object/%islandora_object/download_clip'] = array( 'page callback' => 'islandora_download_clip', 'page arguments' => array(2), @@ -480,10 +460,6 @@ function islandora_theme() { 'file' => 'theme/theme.inc', 'variables' => array('datastream' => NULL), ), - 'islandora_datastream_regenerate_link' => array( - 'file' => 'theme/theme.inc', - 'variables' => array('datastream' => NULL), - ), 'islandora_dublin_core_display' => array( 'file' => 'theme/theme.inc', 'template' => 'theme/islandora-dublin-core-display', @@ -558,10 +534,6 @@ function islandora_permission() { 'title' => t('Manage deleted objects'), 'description' => t('Purge or revert deleted objects.'), ), - ISLANDORA_REGENERATE_DERIVATIVES => array( - 'title' => t('Regenerate derivatives'), - 'description' => t('Regenerate derivatives for an object or per datastream.'), - ), ); } @@ -1097,7 +1069,7 @@ function islandora_default_islandora_view_object($object) { * * @param AbstractObject $object * The fedora object to print. - * @param string $alter + * @param unknown $alter * The string representation of the themed viewable object. * * @return array @@ -1831,6 +1803,7 @@ function islandora_islandora_metadata_display_info() { } /** +<<<<<<< HEAD * Implements hook_islandora_datastream_access(). */ function islandora_islandora_datastream_access($op, AbstractDatastream $datastream, $user) { @@ -1854,4 +1827,19 @@ function islandora_islandora_datastream_access($op, AbstractDatastream $datastre } } return $result; +======= + * Determines the server's operating system. + * + * @return string + * The name of the operating system being used. + */ +function islandora_os_check() { + // Determine if PHP is currently running on Windows. (The constant + // "PHP_OS" may return "Windows," "WIN32," "WINNT," "CYGWIN_NT-5.1," etc.) + if ((strtolower(substr(PHP_OS, 0, 3)) == 'win') || + (strtolower(substr(PHP_OS, 0, 6)) == 'cygwin')) { + return 'Windows'; + } + return 'Unix'; +>>>>>>> parent of db28487... ISLANDORA-441 Merging outside commits made since 1/9/2014. } diff --git a/tests/derivatives.test b/tests/derivatives.test index b7eeae9b..13014880 100644 --- a/tests/derivatives.test +++ b/tests/derivatives.test @@ -159,8 +159,7 @@ class IslandoraDerivativesTestCase extends IslandoraWebTestCase { public function testDerivativeFilteringOnSourceDSID() { global $_islandora_derivative_test_derivative_functions; $_islandora_derivative_test_derivative_functions = array(); - $object = $this->constructBaseObject(); - $this->constructSOMEWEIRDDATASTREAMDatastream($object); + $this->constructBaseObject(); $object = islandora_object_load($this->pid); islandora_do_derivatives($object, array( 'source_dsid' => 'OBJ', @@ -208,8 +207,7 @@ class IslandoraDerivativesTestCase extends IslandoraWebTestCase { public function testNoSourceDSIDNoForce() { global $_islandora_derivative_test_derivative_functions; $_islandora_derivative_test_derivative_functions = array(); - $object = $this->constructBaseObject(); - $object = $this->constructSOMEWEIRDDATASTREAMDatastream($object); + $this->constructBaseObject(); $object = islandora_object_load($this->pid); islandora_do_derivatives($object, array()); $this->assertDatastreams($object, array( @@ -218,8 +216,6 @@ class IslandoraDerivativesTestCase extends IslandoraWebTestCase { 'OBJ', 'DERIV', 'NOSOURCE', - 'SOMEWEIRDDATASTREAM', - 'STANLEY', )); $this->assertEqual(3, count($_islandora_derivative_test_derivative_functions), 'Expected 3 derivative functions when there is no source_dsid, got ' . count($_islandora_derivative_test_derivative_functions) . '.'); } @@ -230,8 +226,7 @@ class IslandoraDerivativesTestCase extends IslandoraWebTestCase { public function testNoSourceDSIDForce() { global $_islandora_derivative_test_derivative_functions; $_islandora_derivative_test_derivative_functions = array(); - $object = $this->constructBaseObject(); - $this->constructSOMEWEIRDDATASTREAMDatastream($object); + $this->constructBaseObject(); $object = islandora_object_load($this->pid); islandora_do_derivatives($object, array( 'force' => TRUE, @@ -241,8 +236,6 @@ class IslandoraDerivativesTestCase extends IslandoraWebTestCase { 'RELS-EXT', 'OBJ', 'DERIV', - 'SOMEWEIRDDATASTREAM', - 'STANLEY', 'NOSOURCE', )); $this->assertEqual(3, count($_islandora_derivative_test_derivative_functions), 'Expected 3 derivative functions when there is no source_dsid, got ' . count($_islandora_derivative_test_derivative_functions) . '.'); @@ -300,22 +293,4 @@ class IslandoraDerivativesTestCase extends IslandoraWebTestCase { $object->ingestDatastream($ds); return $object; } - - /** - * Helper function to construct the SWD datastream without firing hooks. - * - * @param AbstractObject $object - * An AbstractObject representing a FedoraObject. - * - * @return AbstractObject - * The modified AbstractObject. - */ - public function constructSOMEWEIRDDATASTREAMDatastream(AbstractObject $object) { - $dsid = 'SOMEWEIRDDATASTREAM'; - $ds = $object->constructDatastream($dsid); - $ds->label = 'Test'; - $ds->content = 'Omnomnom'; - $object->ingestDatastream($ds); - return $object; - } } diff --git a/tests/islandora_derivatives_test.module b/tests/islandora_derivatives_test.module index 2e27c5c7..80530296 100644 --- a/tests/islandora_derivatives_test.module +++ b/tests/islandora_derivatives_test.module @@ -23,7 +23,7 @@ function islandora_derivatives_test_some_cmodel_islandora_derivative() { 'destination_dsid' => 'STANLEY', 'weight' => '-1', 'function' => array( - 'islandora_derivatives_test_create_stanley_datastream', + 'islandora_derivatives_test_create_some_weird_datastream', ), ), array( @@ -81,20 +81,17 @@ function islandora_derivatives_test_create_deriv_datastream(AbstractObject $obje } /** - * Creates the STANLEY datastream for use in testing. + * Stub function that used only for datastream filtering counts. * * @param AbstractObject $object * An AbstractObject representing a Fedora object. * @param bool $force * Whether the derivatives are being forcefully generated or not. */ -function islandora_derivatives_test_create_stanley_datastream(AbstractObject $object, $force = FALSE) { +function islandora_derivatives_test_create_some_weird_datastream(AbstractObject $object, $force = FALSE) { global $_islandora_derivative_test_derivative_functions; // Add to the global that we got to this function. $_islandora_derivative_test_derivative_functions[] = 'islandora_derivatives_test_create_some_weird_datastream'; - if (!isset($object['STANLEY']) || (isset($object['STANLEY']) && $force === TRUE)) { - islandora_derivatives_test_add_datastream($object, 'STANLEY', 'yum'); - } } /** diff --git a/theme/theme.inc b/theme/theme.inc index b783cfa8..6a80fbb6 100644 --- a/theme/theme.inc +++ b/theme/theme.inc @@ -25,7 +25,7 @@ function islandora_preprocess_islandora_default_edit(array &$variables) { $header[] = array('data' => t('Versions')); } - $header[] = array('data' => t('Operations'), 'colspan' => '4'); + $header[] = array('data' => t('Operations'), 'colspan' => '3'); $table_attributes = array('class' => array('manage-datastreams')); $rows = array(); @@ -53,7 +53,7 @@ function islandora_preprocess_islandora_default_edit(array &$variables) { 'class' => 'datastream-size', 'data' => islandora_datastream_get_human_readable_size($ds), ); - if (islandora_datastream_access(ISLANDORA_VIEW_DATASTREAM_HISTORY, $ds)) { + if (user_access(ISLANDORA_VIEW_DATASTREAM_HISTORY)) { $row[] = array( 'class' => 'datastream-versions', 'data' => theme('islandora_datastream_version_link', array( @@ -79,12 +79,6 @@ function islandora_preprocess_islandora_default_edit(array &$variables) { 'datastream' => $ds, )), ); - $row[] = array( - 'class' => 'datastream-regenerate', - 'data' => theme('islandora_datastream_regenerate_link', array( - 'datastream' => $ds, - )), - ); $rows[] = $row; } $caption = filter_xss($islandora_object->label) . ' - ' . $islandora_object->id; @@ -430,23 +424,6 @@ function theme_islandora_datastream_version_link(array $vars) { } } -/** - * Renders a link that will re-create derivatives for a datastream. - * - * @param array $vars - * An array containing: - * - datastream: An AbstractDatastream to generate the version link from. - * - * @return string - * Markup. - */ -function theme_islandora_datastream_regenerate_link(array $vars) { - $datastream = $vars['datastream']; - if (islandora_datastream_access(ISLANDORA_REGENERATE_DERIVATIVES, $datastream)) { - return l(t('regenerate'), "islandora/object/{$datastream->parent->id}/datastream/{$datastream->id}/regenerate"); - } -} - /** * Implements hook_preprocess(). */