Browse Source

Merge pull request #135 from adam-vessey/6.x

6.x
pull/136/merge
Jonathan Green 13 years ago
parent
commit
05fbdcfa1c
  1. 14
      ObjectHelper.inc
  2. 31
      fedora_repository.module

14
ObjectHelper.inc

@ -186,7 +186,7 @@ class ObjectHelper {
//Set what headers we can... //Set what headers we can...
if ($mimeType = $info['content_type']) { if ($mimeType = $info['content_type']) {
header("Content-Type: $mimeType"); drupal_set_header("Content-Type: $mimeType");
if ($asAttachment) { if ($asAttachment) {
$suggestedFileName = "$label"; $suggestedFileName = "$label";
@ -212,7 +212,7 @@ class ObjectHelper {
$suggestedFileName = "$label.$ext"; $suggestedFileName = "$label.$ext";
} }
header('Content-Disposition: attachment; filename="' . $suggestedFileName . '"'); drupal_set_header('Content-Disposition: attachment; filename="' . $suggestedFileName . '"');
} }
} }
@ -227,14 +227,14 @@ class ObjectHelper {
unset($query['q']); unset($query['q']);
} }
header('HTTP/1.1 307 Moved Temporarily'); drupal_set_header('HTTP/1.1 307 Moved Temporarily');
header('Location: ' . url($effective_url, array('query' => $query))); drupal_set_header('Location: ' . url($effective_url, array('query' => $query)));
} }
elseif ((isset($user) && $user->uid != 0) || $forceSoap || isset($_SERVER['HTTPS'])) { //If not anonymous, soap is force or we're using HTTPS elseif ((isset($user) && $user->uid != 0) || $forceSoap || isset($_SERVER['HTTPS'])) { //If not anonymous, soap is force or we're using HTTPS
//Have the webserver mediate the transfer (download and restream) //Have the webserver mediate the transfer (download and restream)
if (($contentSize = self::getDatastreamSize($pid, $dsID, TRUE)) > 0) { if (($contentSize = self::getDatastreamSize($pid, $dsID, TRUE)) > 0) {
header("Content-Length: $contentSize"); drupal_set_header("Content-Length: $contentSize");
} }
$opts = array( $opts = array(
@ -253,8 +253,8 @@ class ObjectHelper {
} }
} }
else { //Try to redirect directly to Fedora. else { //Try to redirect directly to Fedora.
header('HTTP/1.1 307 Moved Temporarily'); drupal_set_header('HTTP/1.1 307 Moved Temporarily');
header('Location: ' . $url); drupal_set_header('Location: ' . $url);
} }
} }
else { else {

31
fedora_repository.module

@ -220,18 +220,26 @@ function fedora_repository_ingest_form_validate($form, &$form_state) {
// Get the uploaded file. // Get the uploaded file.
$validators = array(); $validators = array();
if (!empty($_FILES['files']['name']['ingest-file-location'])) { $ifl = 'ingest-file-location';
$fileObject = file_save_upload('ingest-file-location', $validators); $fileObject = NULL;
//Check if it's already there; this is what upload_element provides.
if (is_a($form_state['values'][$ifl], 'stdClass') && property_exists($form_state['values'][$ifl], '')) {
$fileObject = $form_state['values'][$ifl];
}
elseif (!empty($_FILES['files']['name'][$ifl])) {
$fileObject = file_save_upload($ifl, $validators);
}
if ($fileObject !== NULL && property_exists($fileObject, 'filepath')) {
file_move($fileObject->filepath, 0, 'FILE_EXISTS_RENAME'); file_move($fileObject->filepath, 0, 'FILE_EXISTS_RENAME');
$form_state['values']['ingest-file-location'] = $fileObject->filepath; $form_state['values'][$ifl] = $fileObject->filepath;
} }
if (isset($form_state['values']['ingest-file-location']) && file_exists($form_state['values']['ingest-file-location'])) { if (isset($form_state['values'][$ifl]) && file_exists($form_state['values'][$ifl])) {
module_load_include('inc', 'fedora_repository', 'ContentModel'); module_load_include('inc', 'fedora_repository', 'ContentModel');
module_load_include('inc', 'fedora_repository', 'MimeClass'); module_load_include('inc', 'fedora_repository', 'MimeClass');
$file = $form_state['values']['ingest-file-location']; $file = $form_state['values'][$ifl];
$contentModelPid = ContentModel::getPidFromIdentifier($form_state['values']['models']); $contentModelPid = ContentModel::getPidFromIdentifier($form_state['values']['models']);
$contentModelDsid = ContentModel::getDSIDFromIdentifier($form_state['values']['models']); $contentModelDsid = ContentModel::getDSIDFromIdentifier($form_state['values']['models']);
@ -244,11 +252,11 @@ function fedora_repository_ingest_form_validate($form, &$form_state) {
if (!empty($file)) { if (!empty($file)) {
if (!in_array($dformat, $allowedMimeTypes)) { if (!in_array($dformat, $allowedMimeTypes)) {
form_set_error('ingest-file-location', form_set_error($ifl,
t('The uploaded file\'s mimetype') . t('The uploaded file\'s mimetype (@mime) is not associated with this Content Model. The allowed types are: @allowed', array(
' (' . $dformat . ') ' . '@mime' => $dformat,
t('is not associated with this Content Model. The allowed types are') . '@allowed' => implode(', ', $allowedMimeTypes),
' ' . implode(' ', $allowedMimeTypes)); )));
file_delete($file); file_delete($file);
return; return;
} }
@ -1163,6 +1171,9 @@ function fedora_object_as_attachment($pid, $dsId, $label=NULL, $version=NULL) {
return ' '; return ' ';
} }
//Disable the page cache, so entire datastreams do not get thrown into the page cache.
$GLOBALS['conf']['cache'] = CACHE_DISABLED;
$objectHelper = new ObjectHelper(); $objectHelper = new ObjectHelper();
$objectHelper->makeObject($pid, $dsId, TRUE, $label, FALSE, $version); $objectHelper->makeObject($pid, $dsId, TRUE, $label, FALSE, $version);
} }

Loading…
Cancel
Save