|
|
|
@ -18,7 +18,7 @@ function islandora_datastream_version_table($datastream) {
|
|
|
|
|
$header[] = array('data' => t('Size')); |
|
|
|
|
$header[] = array('data' => t('Label')); |
|
|
|
|
$header[] = array('data' => t('Mime type')); |
|
|
|
|
$header[] = array('data' => t('Operations')); |
|
|
|
|
$header[] = array('data' => t('Operations'), 'colspan' => '2'); |
|
|
|
|
$rows = array(); |
|
|
|
|
|
|
|
|
|
foreach ($datastream as $version => $datastream_version) { |
|
|
|
@ -50,6 +50,13 @@ function islandora_datastream_version_table($datastream) {
|
|
|
|
|
'version' => $version, |
|
|
|
|
)), |
|
|
|
|
); |
|
|
|
|
$row[] = array( |
|
|
|
|
'class' => 'datastream-revert', |
|
|
|
|
'data' => theme('islandora_datastream_revert_link', array( |
|
|
|
|
'datastream' => $datastream, |
|
|
|
|
'version' => $version, |
|
|
|
|
)), |
|
|
|
|
); |
|
|
|
|
$rows[] = $row; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -125,3 +132,84 @@ function islandora_delete_datastream_version_form_submit(array $form, array &$fo
|
|
|
|
|
|
|
|
|
|
$form_state['redirect'] = "islandora/object/{$object->id}/datastream/{$datastream->id}/version"; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* The admin revert datastream form. |
|
|
|
|
* |
|
|
|
|
* @param array $form |
|
|
|
|
* The Drupal form. |
|
|
|
|
* @param array $form_state |
|
|
|
|
* The Drupal form state. |
|
|
|
|
* @param AbstractDatastream $datastream |
|
|
|
|
* The datastream to be deleted. |
|
|
|
|
* @param string $version |
|
|
|
|
* The version number of the datastream we are trying to delete. |
|
|
|
|
* |
|
|
|
|
* @return array |
|
|
|
|
* The drupal form definition. |
|
|
|
|
*/ |
|
|
|
|
function islandora_revert_datastream_version_form(array $form, array &$form_state, AbstractDatastream $datastream, $version) { |
|
|
|
|
if (!isset($datastream[$version]) || count($datastream) < 2) { |
|
|
|
|
return drupal_not_found(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$form_state['dsid'] = $datastream->id; |
|
|
|
|
$form_state['object_id'] = $datastream->parent->id; |
|
|
|
|
$form_state['version'] = $version; |
|
|
|
|
|
|
|
|
|
return confirm_form($form, |
|
|
|
|
t('Are you sure you want to revert to version @version of the @dsid datastream?', array('@dsid' => $datastream->id, '@version' => $version)), |
|
|
|
|
"islandora/object/{$datastream->parent->id}", |
|
|
|
|
"", |
|
|
|
|
t('Revert'), |
|
|
|
|
t('Cancel') |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Submit handler for the revert datastream form. |
|
|
|
|
* |
|
|
|
|
* Purges/Delete's the given AbstractDatastream if possible. |
|
|
|
|
* |
|
|
|
|
* The ISLANDORA_PRE_PURGE_DATASTREAM_HOOK will query other modules as to |
|
|
|
|
* whether the given FedoraDatastream |
|
|
|
|
* should be: blocked from purging; state set to 'Deleted'; or purged. |
|
|
|
|
* |
|
|
|
|
* @param array $form |
|
|
|
|
* The Drupal form. |
|
|
|
|
* @param array $form_state |
|
|
|
|
* The Drupal form state. |
|
|
|
|
*/ |
|
|
|
|
function islandora_revert_datastream_version_form_submit(array $form, array &$form_state) { |
|
|
|
|
$islandora_object = islandora_object_load($form_state['object_id']); |
|
|
|
|
|
|
|
|
|
$datastream_to_revert = $islandora_object[$form_state['dsid']]; |
|
|
|
|
$version = $form_state['version']; |
|
|
|
|
|
|
|
|
|
// Create file holding specified datastream version, and set datastream to it. |
|
|
|
|
$datastream_to_revert_to = $datastream_to_revert[$version]; |
|
|
|
|
if (in_array($datastream_to_revert->controlGroup, array('R', 'E'))) { |
|
|
|
|
$datastream_to_revert->url = $datastream_to_revert_to->url; |
|
|
|
|
} |
|
|
|
|
else { |
|
|
|
|
$filename = file_create_filename('datastream_temp_file', '.'); |
|
|
|
|
$datastream_to_revert_to->getContent($filename); |
|
|
|
|
$datastream_to_revert->setContentFromFile($filename); |
|
|
|
|
file_unmanaged_delete($filename); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if ($datastream_to_revert->mimeType != $datastream_to_revert_to->mimeType) { |
|
|
|
|
$datastream_to_revert->mimeType = $datastream_to_revert_to->mimeType; |
|
|
|
|
} |
|
|
|
|
if ($datastream_to_revert->label != $datastream_to_revert_to->label) { |
|
|
|
|
$datastream_to_revert->label = $datastream_to_revert_to->label; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
drupal_set_message(t('%d datastream successfully reverted to version %v for Islandora object %o', array( |
|
|
|
|
'%d' => $datastream_to_revert->id, |
|
|
|
|
'%v' => $version, |
|
|
|
|
'%o' => $islandora_object->label))); |
|
|
|
|
|
|
|
|
|
$form_state['redirect'] = "islandora/object/{$islandora_object->id}/datastream/{$datastream_to_revert->id}/version"; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|