|
|
|
<?php
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @file datastream.inc
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
* @global object $user
|
|
|
|
* @param string $object_id
|
|
|
|
* @param string $dsid
|
|
|
|
* @return stream
|
|
|
|
* prints datastream to browser
|
|
|
|
*/
|
|
|
|
function islandora_datastream_as_attachment($object_id, $dsid) {
|
|
|
|
module_load_include('inc', 'islandora', 'RestConnection');
|
|
|
|
global $user;
|
|
|
|
try {
|
|
|
|
$restConnection = new RestConnection($user);
|
|
|
|
$fedora_object = new FedoraObject($object_id, $restConnection->repository);
|
|
|
|
} catch (Exception $e) {
|
|
|
|
drupal_set_message(t('Error getting Islanndora datastream $d for object %s', array('%s' => $object_id, '%d' => $dsid)), 'error');
|
|
|
|
return"";
|
|
|
|
}
|
|
|
|
header('Content-type: ' . $fedora_object[$dsid]->mimetype);
|
|
|
|
header('Content-length: ' . $fedora_object[$dsid]->size);
|
|
|
|
header("Cache-control: private");
|
|
|
|
$method = arg(5);
|
|
|
|
if (isset($method) && $method == 'download') {
|
|
|
|
header("Content-Disposition: attachment; filename=\"" . $fedora_object[$dsid]->label);
|
|
|
|
}
|
|
|
|
print($fedora_object[$dsid]->content);
|
|
|
|
exit();
|
|
|
|
}
|
|
|
|
|