Jonathan Green
12 years ago
2 changed files with 157 additions and 47 deletions
@ -0,0 +1,96 @@
|
||||
<?php |
||||
|
||||
/** |
||||
* @file |
||||
* Fits |
||||
* fits.sh must be in the apache user's path |
||||
* |
||||
* Download FITS from http://code.google.com/p/fits/ |
||||
* Installing: http://code.google.com/p/fits/wiki/installing |
||||
* Edit line 5 in fits.sh (FITS_HOME='') and give it a home. |
||||
* Make sure that home is in the apache user's path. |
||||
* |
||||
*/ |
||||
|
||||
/** |
||||
* This Class implements the methods defined in the STANDARD_IMAGE content model |
||||
*/ |
||||
class fits { |
||||
|
||||
private $pid = NULL; |
||||
private $item = NULL; |
||||
|
||||
/** |
||||
* Constructor |
||||
* @param type $pid |
||||
*/ |
||||
function __construct($pid = NULL) { |
||||
module_load_include('inc', 'fedora_repository', 'api/fedora_item'); |
||||
if (!empty($pid)) { |
||||
$this->pid = $pid; |
||||
$this->item = new Fedora_Item($this->pid); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* extract metadata |
||||
* @param type $parameterArray |
||||
* @param type $dsid |
||||
* @param type $file |
||||
* @param type $file_ext |
||||
* @return type |
||||
*/ |
||||
function extractFits($parameterArray, $dsid, $file, $file_ext) { |
||||
if (variable_get('enable_fits', FALSE) == 1) { |
||||
$file_name = '_' . $dsid . '.xml'; |
||||
$output = array(); |
||||
exec(variable_get('fits_path', '/usr/local/bin/fits.sh') .' -i ' . escapeshellarg($file) . '', $output); |
||||
if ( !file_put_contents($file . $file_name, implode("\n", $output)) ) { |
||||
//drupal_set_message(t("error writing fits file %s", array('%s' => "$file.$file_name"))); |
||||
return FALSE; |
||||
} |
||||
$_SESSION['fedora_ingest_files']["$dsid"] = $file . $file_name; |
||||
return TRUE; |
||||
} |
||||
return TRUE; //this prevents getting the error following content model rules message when fits generation is turned off |
||||
} |
||||
|
||||
/** |
||||
* display metadata |
||||
* @return type |
||||
*/ |
||||
function displayFits() { |
||||
$output = ''; |
||||
$fits = $this->item->get_datastream_dissemination('TECHMD_FITS'); |
||||
if (trim($fits) != '') { |
||||
$fitsDom = DOMDocument::loadXML($this->item->get_datastream_dissemination('FITS')); |
||||
if ($fitsDom != NULL) { |
||||
$description = $fitsDom->getElementsByTagName('fits'); |
||||
if ($description->length > 0) { |
||||
$description = $description->item(0); |
||||
$output .= '<div class="fedora_technical_metadata"><ul>'; |
||||
for ($i = 0; $i < $description->childNodes->length; $i++) { |
||||
$name = $description->childNodes->item($i)->nodeName; |
||||
$value = $description->childNodes->item($i)->nodeValue; |
||||
if ($name != '#text' && !preg_match('/^System\:.*$/', $name) && trim($value) != '') { |
||||
list($type, $name) = preg_split('/\:/', $name); |
||||
$name = trim(preg_replace('/(?<!^)([A-Z][a-z]|(?<=[a-z])[A-Z])/', " $1", $name)); |
||||
$output .= '<li><b>' . $name . '</b>: ' . $value . ' </li>'; |
||||
} |
||||
} |
||||
$output .= '</ul></div>'; |
||||
|
||||
$fieldset = array( |
||||
'#title' => t("!text", array('!text' => 'FITS Technical Metadata')), |
||||
'#collapsible' => TRUE, |
||||
'#collapsed' => TRUE, |
||||
'#value' => $output |
||||
); |
||||
$output = theme('fieldset', $fieldset); |
||||
} |
||||
} |
||||
} |
||||
return $output; |
||||
} |
||||
|
||||
} |
Loading…
Reference in new issue