Browse Source

Added doc tags

pull/4/head
Ben Woodhead 14 years ago
parent
commit
2784a19a16
  1. 32
      plugins/CollectionFormBuilder.inc
  2. 30
      plugins/CreateCollection.inc
  3. 59
      plugins/DarwinCore.inc
  4. 32
      plugins/DemoFormBuilder.inc
  5. 32
      plugins/DocumentConverter.inc
  6. 101
      plugins/Exiftool.inc
  7. 37
      plugins/Ffmpeg.inc
  8. 109
      plugins/Flv.inc
  9. 24
      plugins/FlvFormBuilder.inc
  10. 199
      plugins/FormBuilder.inc
  11. 81
      plugins/ImageManipulation.inc
  12. 863
      plugins/ModsFormBuilder.inc
  13. 82
      plugins/PersonalCollectionClass.inc
  14. 143
      plugins/QtFormBuilder.php
  15. 151
      plugins/Refworks.inc
  16. 22
      plugins/ShowDemoStreamsInFieldSets.inc
  17. 111
      plugins/ShowStreamsInFieldSets.inc
  18. 33
      plugins/fedoraObject.inc
  19. 83
      plugins/herbarium.inc
  20. 29
      plugins/map_viewer.inc
  21. 140
      plugins/qt_viewer.inc
  22. 34
      plugins/slide_viewer.inc
  23. 44
      plugins/tagging_form.inc

32
plugins/CollectionFormBuilder.inc

@ -1,37 +1,52 @@
<?php <?php
// $Id$ // $Id$
/**
* @file
* Collection Form Builder
*/
module_load_include('inc', 'fedora_repository', 'plugins/FormBuilder'); module_load_include('inc', 'fedora_repository', 'plugins/FormBuilder');
/*
* Created on 19-Feb-08 /**
*
*
* implements methods from content model ingest form xml * implements methods from content model ingest form xml
* builds a dc metadata form * builds a dc metadata form
*/ */
class CollectionFormBuilder extends FormBuilder { class CollectionFormBuilder extends FormBuilder {
/**
* Constructor
*/
function CollectionFormBuilder() { function CollectionFormBuilder() {
module_load_include('inc', 'CollectionFormBuilder', ''); module_load_include('inc', 'CollectionFormBuilder', '');
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
} }
/**
* Create Fedora Datastream
* @global type $base_url
* @param type $form_values
* @param type $dom
* @param type $rootElement
*/
function createFedoraDataStreams($form_values, &$dom, &$rootElement) { function createFedoraDataStreams($form_values, &$dom, &$rootElement) {
module_load_include('inc', 'fedora_repository', 'MimeClass'); module_load_include('inc', 'fedora_repository', 'MimeClass');
global $base_url; global $base_url;
$mimetype = new MimeClass(); $mimetype = new MimeClass();
$server = NULL; $server = NULL;
$file=$form_values['ingest-file-location']; $file = $form_values['ingest-file-location'];
$dformat = $mimetype->getType($file); $dformat = $mimetype->getType($file);
$fileUrl = $base_url . '/'. drupal_urlencode($file); $fileUrl = $base_url . '/' . drupal_urlencode($file);
$beginIndex = strrpos($fileUrl, '/'); $beginIndex = strrpos($fileUrl, '/');
$dtitle = substr($fileUrl, $beginIndex + 1); $dtitle = substr($fileUrl, $beginIndex + 1);
$dtitle = substr($dtitle, 0, strpos($dtitle, ".")); $dtitle = substr($dtitle, 0, strpos($dtitle, "."));
$ds1 = $dom->createElement("foxml:datastream"); $ds1 = $dom->createElement("foxml:datastream");
$ds1->setAttribute("ID", "COLLECTION_POLICY"); //set the ID $ds1->setAttribute("ID", "COLLECTION_POLICY"); //set the ID
$ds1->setAttribute("STATE", "A"); $ds1->setAttribute("STATE", "A");
$ds1->setAttribute("CONTROL_GROUP", "M"); $ds1->setAttribute("CONTROL_GROUP", "M");
$ds1v= $dom->createElement("foxml:datastreamVersion"); $ds1v = $dom->createElement("foxml:datastreamVersion");
$ds1v->setAttribute("ID", "COLLECTION_POLICY.0"); $ds1v->setAttribute("ID", "COLLECTION_POLICY.0");
$ds1v->setAttribute("MIMETYPE", "$dformat"); $ds1v->setAttribute("MIMETYPE", "$dformat");
$ds1v->setAttribute("LABEL", "$dtitle"); $ds1v->setAttribute("LABEL", "$dtitle");
@ -42,4 +57,5 @@ class CollectionFormBuilder extends FormBuilder {
$ds1v->appendChild($ds1content); $ds1v->appendChild($ds1content);
$rootElement->appendChild($ds1); $rootElement->appendChild($ds1);
} }
} }

30
plugins/CreateCollection.inc

@ -1,22 +1,34 @@
<?php <?php
// $Id$ // $Id$
/* /**
* * @file
* * Create Collection Class
* This Class implements the methods defined in the STANDARD_IMAGE content model
*/ */
/**
* This Class implements the methods defined in the STANDARD_IMAGE content model
*/
class CreateCollection { class CreateCollection {
function CreateCollection() {
/**
* Constructor
*/
function CreateCollection() {
} }
/**
* ingest collection policy ???
* @param type $parameterArray
* @param type $dsid
* @param type $file
* @param type $file_ext
* @return type
*/
function ingestCollectionPolicy($parameterArray = NULL, $dsid, $file, $file_ext = NULL) { function ingestCollectionPolicy($parameterArray = NULL, $dsid, $file, $file_ext = NULL) {
return TRUE; //nothing needed here as we are not transforming any files return TRUE; //nothing needed here as we are not transforming any files
} }
} }

59
plugins/DarwinCore.inc

@ -2,13 +2,25 @@
// $Id$ // $Id$
/**
* @file
* Darwin Core class
*/
/**
* Darwin Core ???
*/
class DarwinCore { class DarwinCore {
/**
* Constructor
* @param type $item
*/
function __construct($item = NULL) { function __construct($item = NULL) {
module_load_include('inc', 'fedora_repository', 'api/fedora_item'); module_load_include('inc', 'fedora_repository', 'api/fedora_item');
if (!empty($item)) { if (!empty($item)) {
$this->owner = $item; $this->owner = $item;
if ( array_key_exists('DARWIN_CORE', $item->get_datastreams_list_as_array())) { if (array_key_exists('DARWIN_CORE', $item->get_datastreams_list_as_array())) {
$dwc = $item->get_datastream_dissemination('DARWIN_CORE'); $dwc = $item->get_datastream_dissemination('DARWIN_CORE');
if (!empty($dwc)) { if (!empty($dwc)) {
$this->darwinCoreXML = $dwc; $this->darwinCoreXML = $dwc;
@ -17,10 +29,15 @@ class DarwinCore {
} }
} }
/**
* Build Drupal Form
* @param type $form
* @return int
*/
public function buildDrupalForm($form = array()) { public function buildDrupalForm($form = array()) {
$dwc_xml = $this->darwinCoreXML; $dwc_xml = $this->darwinCoreXML;
$dwc = DOMDocument::loadXML($dwc_xml); $dwc = DOMDocument::loadXML($dwc_xml);
$form['dc:type'] = array( $form['dc:type'] = array(
@ -162,17 +179,22 @@ class DarwinCore {
$date = $dwc->getElementsByTagNameNS('http://rs.tdwg.org/dwc/terms/', 'eventDate')->item(0)->nodeValue; $date = $dwc->getElementsByTagNameNS('http://rs.tdwg.org/dwc/terms/', 'eventDate')->item(0)->nodeValue;
$format = 'Y-m-d H:i:s'; $format = 'Y-m-d H:i:s';
$form['dwceventDate'] = array( $form['dwceventDate'] = array(
'#type' => 'date_popup', // types 'date_text' and 'date_timezone' are also supported. See .inc file. '#type' => 'date_popup', // types 'date_text' and 'date_timezone' are also supported. See .inc file.
'#title' => 'select a date', '#title' => 'select a date',
'#default_value' => $date, '#default_value' => $date,
'#date_format' => $format, '#date_format' => $format,
'#date_label_position' => 'within', // See other available attributes and what they do in date_api_elements.inc '#date_label_position' => 'within', // See other available attributes and what they do in date_api_elements.inc
'#date_increment' => 15, // Optional, used by the date_select and date_popup elements to increment minutes and seconds. '#date_increment' => 15, // Optional, used by the date_select and date_popup elements to increment minutes and seconds.
'#description' => '', '#description' => '',
); );
return $form; return $form;
} }
/**
* Handle Form ??
* @global type $user
* @param type $form_values
*/
public function handleForm($form_values) { public function handleForm($form_values) {
module_load_include('inc', 'fedora_repository', 'api/fedora_item'); module_load_include('inc', 'fedora_repository', 'api/fedora_item');
global $user; global $user;
@ -208,12 +230,20 @@ class DarwinCore {
$this->darwinCoreXML = $dwc->saveXML(); $this->darwinCoreXML = $dwc->saveXML();
} }
/**
* asXML ??
* @return type
*/
public function asXML() { public function asXML() {
return $this->darwinCoreXML; return $this->darwinCoreXML;
} }
/**
* asHTML ??
* @return type
*/
public function asHTML() { public function asHTML() {
$path=drupal_get_path('module', 'Fedora_Repository'); $path = drupal_get_path('module', 'Fedora_Repository');
module_load_include('inc', 'fedora_repository', 'ObjectHelper'); module_load_include('inc', 'fedora_repository', 'ObjectHelper');
module_load_include('inc', 'fedora_repository', 'CollectionClass'); module_load_include('inc', 'fedora_repository', 'CollectionClass');
@ -226,8 +256,7 @@ class DarwinCore {
try { try {
$proc = new XsltProcessor(); $proc = new XsltProcessor();
} } catch (Exception $e) {
catch (Exception $e) {
drupal_set_message(t("!e", array('!e' => $e->getMessage())), 'error'); drupal_set_message(t("!e", array('!e' => $e->getMessage())), 'error');
return " "; return " ";
} }
@ -238,7 +267,7 @@ class DarwinCore {
$input->loadXML(trim($xmlstr)); $input->loadXML(trim($xmlstr));
$xsl = $proc->importStylesheet($xsl); $xsl = $proc->importStylesheet($xsl);
$newdom = $proc->transformToDoc($input); $newdom = $proc->transformToDoc($input);
$content=$newdom->saveXML(); $content = $newdom->saveXML();
return $content; return $content;
} }
@ -256,9 +285,7 @@ class DarwinCore {
'MachineObservation' => 'MachineObservation', 'MachineObservation' => 'MachineObservation',
'NomenclaturalChecklist' => 'NomenclaturalChecklist', 'NomenclaturalChecklist' => 'NomenclaturalChecklist',
), ),
); );
public $dwcFields = array( public $dwcFields = array(
'dc:type', 'dc:type',
'dc:language', 'dc:language',
@ -283,8 +310,6 @@ class DarwinCore {
'dwc:eventDate', 'dwc:eventDate',
'dwc:eventTime', 'dwc:eventTime',
); );
public $darwinCoreXML = ' public $darwinCoreXML = '
<SimpleDarwinRecordSet xmlns="http://rs.tdwg.org/dwc/xsd/simpledarwincore/" xmlns:dc="http://purl.org/dc/terms/" xmlns:dwc="http://rs.tdwg.org/dwc/terms/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://rs.tdwg.org/dwc/xsd/simpledarwincore/ http://rs.tdwg.org/dwc/xsd/tdwg_dwc_simple.xsd"> <SimpleDarwinRecordSet xmlns="http://rs.tdwg.org/dwc/xsd/simpledarwincore/" xmlns:dc="http://purl.org/dc/terms/" xmlns:dwc="http://rs.tdwg.org/dwc/terms/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://rs.tdwg.org/dwc/xsd/simpledarwincore/ http://rs.tdwg.org/dwc/xsd/tdwg_dwc_simple.xsd">
<SimpleDarwinRecord> <SimpleDarwinRecord>

32
plugins/DemoFormBuilder.inc

@ -1,31 +1,44 @@
<?php <?php
// $Id$ // $Id$
/**
* @file
*
*/
module_load_include('inc', 'fedora_repository', 'plugins/FormBuilder'); module_load_include('inc', 'fedora_repository', 'plugins/FormBuilder');
/*
* Created on 19-Feb-08 /**
*
*
* implements methods from content model ingest form xml * implements methods from content model ingest form xml
* builds a dc metadata form * builds a dc metadata form
*/ */
class DemoFormBuilder extends FormBuilder { class DemoFormBuilder extends FormBuilder {
/**
* Constructor
*/
function DemoFormBuilder() { function DemoFormBuilder() {
module_load_include('inc', 'fedora_repository', 'plugins/FormBuilder'); module_load_include('inc', 'fedora_repository', 'plugins/FormBuilder');
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
} }
//Override this so we can specify the datastream id of FULL_SIZE should make this easier /**
* Override this so we can specify the datastream id of FULL_SIZE should make this easier
* @global type $base_url
* @param type $form_values
* @param type $dom
* @param type $rootElement
*/
function createFedoraDataStreams($form_values, &$dom, &$rootElement) { function createFedoraDataStreams($form_values, &$dom, &$rootElement) {
module_load_include('inc', 'fedora_repository', 'MimeClass'); module_load_include('inc', 'fedora_repository', 'MimeClass');
global $base_url; global $base_url;
$mimetype = new MimeClass(); $mimetype = new MimeClass();
$server = NULL; $server = NULL;
$file=$form_values['ingest-file-location']; $file = $form_values['ingest-file-location'];
if (!empty($file)) { if (!empty($file)) {
$dformat = $mimetype->getType($file); $dformat = $mimetype->getType($file);
$fileUrl = $base_url .'/'. drupal_urlencode($file); $fileUrl = $base_url . '/' . drupal_urlencode($file);
$beginIndex = strrpos($fileUrl, '/'); $beginIndex = strrpos($fileUrl, '/');
$dtitle = substr($fileUrl, $beginIndex + 1); $dtitle = substr($fileUrl, $beginIndex + 1);
$dtitle = urldecode($dtitle); $dtitle = urldecode($dtitle);
@ -50,7 +63,7 @@ class DemoFormBuilder extends FormBuilder {
foreach ($_SESSION['fedora_ingest_files'] as $dsid => $createdFile) { foreach ($_SESSION['fedora_ingest_files'] as $dsid => $createdFile) {
$createdFile = strstr($createdFile, $file); $createdFile = strstr($createdFile, $file);
$dformat = $mimetype->getType($createdFile); $dformat = $mimetype->getType($createdFile);
$fileUrl = $base_url .'/'. drupal_urlencode( $createdFile ); $fileUrl = $base_url . '/' . drupal_urlencode($createdFile);
$beginIndex = strrpos($fileUrl, '/'); $beginIndex = strrpos($fileUrl, '/');
$dtitle = substr($fileUrl, $beginIndex + 1); $dtitle = substr($fileUrl, $beginIndex + 1);
$dtitle = urldecode($dtitle); $dtitle = urldecode($dtitle);
@ -60,7 +73,7 @@ class DemoFormBuilder extends FormBuilder {
$ds1->setAttribute("ID", "$dsid"); $ds1->setAttribute("ID", "$dsid");
$ds1->setAttribute("STATE", "A"); $ds1->setAttribute("STATE", "A");
$ds1->setAttribute("CONTROL_GROUP", "M"); $ds1->setAttribute("CONTROL_GROUP", "M");
$ds1v= $dom->createElement("foxml:datastreamVersion"); $ds1v = $dom->createElement("foxml:datastreamVersion");
$ds1v->setAttribute("ID", "$dsid.0"); $ds1v->setAttribute("ID", "$dsid.0");
$ds1v->setAttribute("MIMETYPE", "$dformat"); $ds1v->setAttribute("MIMETYPE", "$dformat");
$ds1v->setAttribute("LABEL", "$dtitle"); $ds1v->setAttribute("LABEL", "$dtitle");
@ -73,5 +86,6 @@ class DemoFormBuilder extends FormBuilder {
} }
} }
} }
} }

32
plugins/DocumentConverter.inc

@ -3,20 +3,35 @@
// $Id$ // $Id$
/** /**
* * @file
* Document Converter Class
*/
/**
* This class implements document (doc, odt, pdf, etc.) conversion for a generic * This class implements document (doc, odt, pdf, etc.) conversion for a generic
* multi-format document collection. * multi-format document collection.
*/ */
class DocumentConverter { class DocumentConverter {
private $converter_service_url = "http://localhost:8080/converter/service"; private $converter_service_url = "http://localhost:8080/converter/service";
/**
* Constructor
* @param type $converter_url
*/
public function __construct($converter_url = NULL) { public function __construct($converter_url = NULL) {
if (!empty($converter_url)) if (!empty($converter_url))
$this->converter_service_url = $converter_url; $this->converter_service_url = $converter_url;
} }
/**
* Convert ???
* @param type $parameterArray
* @param type $dsid
* @param type $file
* @param type $output_ext
* @return string
*/
function convert($parameterArray = NULL, $dsid, $file, $output_ext) { function convert($parameterArray = NULL, $dsid, $file, $output_ext) {
module_load_include('inc', 'fedora_repository', 'MimeClass'); module_load_include('inc', 'fedora_repository', 'MimeClass');
@ -32,7 +47,7 @@ class DocumentConverter {
$outputType = $helper->get_mimetype($output_ext); $outputType = $helper->get_mimetype($output_ext);
$inputData = file_get_contents($file); $inputData = file_get_contents($file);
$outputFile = $file ."_". $dsid .".". $output_ext; $outputFile = $file . "_" . $dsid . "." . $output_ext;
#debug: #debug:
#drupal_set_message("inputType: $inputType", 'status'); #drupal_set_message("inputType: $inputType", 'status');
@ -40,8 +55,8 @@ class DocumentConverter {
#drupal_set_message("outputFile: $outputFile", 'status'); #drupal_set_message("outputFile: $outputFile", 'status');
$ch = curl_init($this->converter_service_url); $ch = curl_init($this->converter_service_url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array( "Content-Type: $inputType", "Accept: $outputType" ) ); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: $inputType", "Accept: $outputType"));
curl_setopt($ch, CURLOPT_POST, 1 ); curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 120); // times out after 2 minutes curl_setopt($ch, CURLOPT_TIMEOUT, 120); // times out after 2 minutes
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // return into a variable curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // return into a variable
curl_setopt($ch, CURLOPT_POSTFIELDS, $inputData); // add POST fields curl_setopt($ch, CURLOPT_POSTFIELDS, $inputData); // add POST fields
@ -52,23 +67,24 @@ class DocumentConverter {
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE); $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (200 == $code) { if (200 == $code) {
$returnValue = file_put_contents($outputFile, $data); $returnValue = file_put_contents($outputFile, $data);
if ($returnValue > 0) { if ($returnValue > 0) {
drupal_set_message("Conversion successful.", 'status'); drupal_set_message("Conversion successful.", 'status');
$_SESSION['fedora_ingest_files']["$dsid"] = $outputFile; $_SESSION['fedora_ingest_files']["$dsid"] = $outputFile;
return $outputFile; return $outputFile;
} }
else { else {
return $returnValue; // a.k.a. FALSE. return $returnValue; // a.k.a. FALSE.
} }
} }
else { else {
drupal_set_message("Conversion Failed. Webservice returned $code.", 'status'); drupal_set_message("Conversion Failed. Webservice returned $code.", 'status');
return FALSE; return FALSE;
} }
} }
} }
/* /*

101
plugins/Exiftool.inc

@ -1,17 +1,24 @@
<?php <?php
// $Id$ // $Id$
/* /**
* * @file
* * Exiftool
* This Class implements the methods defined in the STANDARD_IMAGE content model
*/ */
/**
* This Class implements the methods defined in the STANDARD_IMAGE content model
*/
class Exiftool { class Exiftool {
private $pid = NULL; private $pid = NULL;
private $item = NULL; private $item = NULL;
/**
* Constructor
* @param type $pid
*/
function __construct($pid) { function __construct($pid) {
//drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); //drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
$this->pid = $pid; $this->pid = $pid;
@ -19,49 +26,61 @@ class Exiftool {
$this->item = new Fedora_Item($this->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 extractMetadata($parameterArray, $dsid, $file, $file_ext) { function extractMetadata($parameterArray, $dsid, $file, $file_ext) {
$system = getenv('System'); $system = getenv('System');
$file_suffix = '_'. $dsid . '.xml'; $file_suffix = '_' . $dsid . '.xml';
$returnValue=TRUE; $returnValue = TRUE;
$output=array(); $output = array();
exec('exiftool -X ' . escapeshellarg($file) . '', $output); exec('exiftool -X ' . escapeshellarg($file) . '', $output);
file_put_contents($file.$file_suffix, implode("\n", $output)); file_put_contents($file . $file_suffix, implode("\n", $output));
$_SESSION['fedora_ingest_files']["$dsid"] = $file . $file_suffix; $_SESSION['fedora_ingest_files']["$dsid"] = $file . $file_suffix;
return TRUE; return TRUE;
} }
function displayMetadata() { /**
$output=''; * display metadata ???
$exif = $this->item->get_datastream_dissemination('EXIF'); * @return type
if (trim($exif) != '') { */
$exifDom = DOMDocument::loadXML($this->item->get_datastream_dissemination('EXIF')); function displayMetadata() {
if ($exifDom != NULL) { $output = '';
$description = $exifDom->getElementsByTagNameNS('http://www.w3.org/1999/02/22-rdf-syntax-ns#','Description'); $exif = $this->item->get_datastream_dissemination('EXIF');
if ($description->length > 0) { if (trim($exif) != '') {
$description=$description->item(0); $exifDom = DOMDocument::loadXML($this->item->get_datastream_dissemination('EXIF'));
$output .= '<div class="fedora_technical_metadata"><ul>'; if ($exifDom != NULL) {
for ($i=0;$i<$description->childNodes->length;$i++){ $description = $exifDom->getElementsByTagNameNS('http://www.w3.org/1999/02/22-rdf-syntax-ns#', 'Description');
$name=$description->childNodes->item($i)->nodeName; if ($description->length > 0) {
$value=$description->childNodes->item($i)->nodeValue; $description = $description->item(0);
if ($name != '#text' && !preg_match('/^System\:.*$/',$name) && trim($value) != '') { $output .= '<div class="fedora_technical_metadata"><ul>';
list($type,$name) = preg_split('/\:/',$name); for ($i = 0; $i < $description->childNodes->length; $i++) {
$name = trim(preg_replace('/(?<!^)([A-Z][a-z]|(?<=[a-z])[A-Z])/'," $1", $name)); $name = $description->childNodes->item($i)->nodeName;
$output .= '<li><b>'.$name. '</b>: '. $value .' </li>'; $value = $description->childNodes->item($i)->nodeValue;
} if ($name != '#text' && !preg_match('/^System\:.*$/', $name) && trim($value) != '') {
} list($type, $name) = preg_split('/\:/', $name);
$output.='</ul></div>'; $name = trim(preg_replace('/(?<!^)([A-Z][a-z]|(?<=[a-z])[A-Z])/', " $1", $name));
$output .= '<li><b>' . $name . '</b>: ' . $value . ' </li>';
$fieldset = array( }
'#title' => t("!text", array('!text' => 'Technical Metadata')), }
'#collapsible' => TRUE, $output.='</ul></div>';
'#collapsed' => TRUE,
'#value' => $output $fieldset = array(
); '#title' => t("!text", array('!text' => 'Technical Metadata')),
$output = theme('fieldset', $fieldset); '#collapsible' => TRUE,
} '#collapsed' => TRUE,
} '#value' => $output
} );
$output = theme('fieldset', $fieldset);
}
}
}
return $output; return $output;
} }
} }

37
plugins/Ffmpeg.inc

@ -1,26 +1,44 @@
<?php <?php
// $Id$ // $Id$
/* /**
* * @file
* * Ffmpeg wrapper class
* This Class implements the methods defined in the STANDARD_QT content model
*/ */
/**
* FFMpeg wrapper class for generating movie thumbnails
*
* This Class implements the methods defined in the STANDARD_QT content model
*/
class Ffmpeg { class Ffmpeg {
/**
* Default constructor
*/
function Ffmpeg() { function Ffmpeg() {
} }
/**
* Extract a thumbnail from the movie
* @param type $parameterArray
* @param type $dsid
* @param type $file
* @param type $file_ext
* @return type
*/
function extract_thumbnail($parameterArray, $dsid, $file, $file_ext) { function extract_thumbnail($parameterArray, $dsid, $file, $file_ext) {
$defaults = array('ss' => '00:00:10', 's' => null); $defaults = array('ss' => '00:00:10', 's' => null);
$params = array_merge($defaults, $parameterArray); $params = array_merge($defaults, $parameterArray);
$system = getenv('System'); $system = getenv('System');
$file_suffix = '_'. $dsid . '.' . $file_ext; $file_suffix = '_' . $dsid . '.' . $file_ext;
$returnValue=TRUE; $returnValue = TRUE;
$output=array(); $output = array();
$size = ''; $size = '';
if($params['s'] != null) { if ($params['s'] != null) {
$size = ' -s ' . escapeshellarg($params['s']); $size = ' -s ' . escapeshellarg($params['s']);
} }
exec('ffmpeg -i ' . escapeshellarg($file) . ' -r 1 -ss ' . escapeshellarg($params['ss']) . ' ' . $size . ' -t 1 ' . escapeshellarg($file . $file_suffix)); exec('ffmpeg -i ' . escapeshellarg($file) . ' -r 1 -ss ' . escapeshellarg($params['ss']) . ' ' . $size . ' -t 1 ' . escapeshellarg($file . $file_suffix));
@ -32,4 +50,5 @@ class Ffmpeg {
$_SESSION['fedora_ingest_files']["$dsid"] = $file . $file_suffix; $_SESSION['fedora_ingest_files']["$dsid"] = $file . $file_suffix;
return TRUE; return TRUE;
} }
} }

109
plugins/Flv.inc

@ -1,18 +1,31 @@
<?php <?php
// $Id$ // $Id$
/* /**
* Created on 19-Feb-08 * @file
* * Form Builder class
* */
/**
* implements method from content model ingest form xml * implements method from content model ingest form xml
*/ */
class FormBuilder { class FormBuilder {
/**
* Constructor
*/
function FormBuilder() { function FormBuilder() {
module_load_include('inc', 'Flv', ''); module_load_include('inc', 'Flv', '');
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
} }
/**
* Create QDC Stream ???
* @param type $form_values
* @param type $dom
* @param type $rootElement
*/
function createQDCStream($form_values, &$dom, &$rootElement) { function createQDCStream($form_values, &$dom, &$rootElement) {
$datastream = $dom->createElement("foxml:datastream"); $datastream = $dom->createElement("foxml:datastream");
$datastream->setAttribute("ID", "QDC"); $datastream->setAttribute("ID", "QDC");
@ -33,7 +46,7 @@ class FormBuilder {
$oai->setAttribute('xmlns:xsi', "http://www.w3.org/2001/XMLSchema-instance"); $oai->setAttribute('xmlns:xsi', "http://www.w3.org/2001/XMLSchema-instance");
$content->appendChild($oai); $content->appendChild($oai);
//dc elements //dc elements
$previousElement=NULL; //used in case we have to nest elements for qualified dublin core $previousElement = NULL; //used in case we have to nest elements for qualified dublin core
foreach ($form_values as $key => $value) { foreach ($form_values as $key => $value) {
$index = strrpos($key, '-'); $index = strrpos($key, '-');
if ($index > 01) { if ($index > 01) {
@ -42,7 +55,7 @@ class FormBuilder {
$test = substr($key, 0, 2); $test = substr($key, 0, 2);
if ($test=='dc'||$test=='ap') {//don't try to process other form values if ($test == 'dc' || $test == 'ap') {//don't try to process other form values
try { try {
if (!strcmp(substr($key, 0, 4), 'app_')) { if (!strcmp(substr($key, 0, 4), 'app_')) {
$key = substr($key, 4); $key = substr($key, 4);
@ -52,8 +65,7 @@ class FormBuilder {
$previousElement = $dom->createElement($key, $value); $previousElement = $dom->createElement($key, $value);
$oai->appendChild($previousElement); $oai->appendChild($previousElement);
} }
} } catch (exception $e) {
catch (exception $e) {
drupal_set_message(t("!e", array('!e' => $e->getMessage())), 'error'); drupal_set_message(t("!e", array('!e' => $e->getMessage())), 'error');
continue; continue;
} }
@ -62,10 +74,15 @@ class FormBuilder {
} }
} }
/**
* Handle QDC Form ???
* @param type $form_values
* @return type
*/
function handleQDCForm($form_values) { function handleQDCForm($form_values) {
$dom = new DomDocument("1.0", "UTF-8"); $dom = new DomDocument("1.0", "UTF-8");
$dom->formatOutput = TRUE; $dom->formatOutput = TRUE;
$pid=$form_values['pid']; $pid = $form_values['pid'];
$rootElement = $dom->createElement("foxml:digitalObject"); $rootElement = $dom->createElement("foxml:digitalObject");
$rootElement->setAttribute('PID', "$pid"); $rootElement->setAttribute('PID', "$pid");
$rootElement->setAttribute('xmlns:foxml', "info:fedora/fedora-system:def/foxml#"); $rootElement->setAttribute('xmlns:foxml', "info:fedora/fedora-system:def/foxml#");
@ -87,13 +104,13 @@ class FormBuilder {
try { try {
$soapHelper = new ConnectionHelper(); $soapHelper = new ConnectionHelper();
$client=$soapHelper->getSoapClient(variable_get('fedora_soap_manage_url', 'http://localhost:8080/fedora/services/management?wsdl')); $client = $soapHelper->getSoapClient(variable_get('fedora_soap_manage_url', 'http://localhost:8080/fedora/services/management?wsdl'));
if ($client == NULL) { if ($client == NULL) {
drupal_set_message(t('Error getting SOAP client.'), 'error'); drupal_set_message(t('Error getting SOAP client.'), 'error');
return; return;
} }
$object=$client->__soapCall('ingest', array($params)); $object = $client->__soapCall('ingest', array($params));
$deleteFiles = $form_values['delete_file']; //remove files from drupal file system $deleteFiles = $form_values['delete_file']; //remove files from drupal file system
if ($deleteFiles > 0) { if ($deleteFiles > 0) {
@ -102,20 +119,25 @@ class FormBuilder {
} }
unlink($form_values['fullpath']); unlink($form_values['fullpath']);
} }
} } catch (exception $e) {
catch (exception $e) {
drupal_set_message(t('Error ingesting object: !e', array('!e' => $e->getMessage())), 'error'); drupal_set_message(t('Error ingesting object: !e', array('!e' => $e->getMessage())), 'error');
return; return;
} }
} }
/**
* Create Fedora DataStream
* @param type $form_values
* @param type $dom
* @param type $rootElement
*/
function createFedoraDataStreams($form_values, &$dom, &$rootElement) { function createFedoraDataStreams($form_values, &$dom, &$rootElement) {
module_load_include('inc', 'fedora_repository', 'MimeClass'); module_load_include('inc', 'fedora_repository', 'MimeClass');
$mimetype = new MimeClass(); $mimetype = new MimeClass();
$server = NULL; $server = NULL;
$file=$form_values['ingest-file-location']; $file = $form_values['ingest-file-location'];
$dformat = $mimetype->getType($file); $dformat = $mimetype->getType($file);
$fileUrl = 'http://'. $_SERVER['HTTP_HOST'] . $file; $fileUrl = 'http://' . $_SERVER['HTTP_HOST'] . $file;
$beginIndex = strrpos($fileUrl, '/'); $beginIndex = strrpos($fileUrl, '/');
$dtitle = substr($fileUrl, $beginIndex + 1); $dtitle = substr($fileUrl, $beginIndex + 1);
$dtitle = substr($dtitle, 0, strpos($dtitle, ".")); $dtitle = substr($dtitle, 0, strpos($dtitle, "."));
@ -123,7 +145,7 @@ class FormBuilder {
$ds1->setAttribute("ID", "OBJ"); $ds1->setAttribute("ID", "OBJ");
$ds1->setAttribute("STATE", "A"); $ds1->setAttribute("STATE", "A");
$ds1->setAttribute("CONTROL_GROUP", "M"); $ds1->setAttribute("CONTROL_GROUP", "M");
$ds1v= $dom->createElement("foxml:datastreamVersion"); $ds1v = $dom->createElement("foxml:datastreamVersion");
$ds1v->setAttribute("ID", "OBJ.0"); $ds1v->setAttribute("ID", "OBJ.0");
$ds1v->setAttribute("MIMETYPE", "$dformat"); $ds1v->setAttribute("MIMETYPE", "$dformat");
$ds1v->setAttribute("LABEL", "$dtitle"); $ds1v->setAttribute("LABEL", "$dtitle");
@ -137,16 +159,16 @@ class FormBuilder {
foreach ($_SESSION['fedora_ingest_files'] as $dsid => $createdFile) { foreach ($_SESSION['fedora_ingest_files'] as $dsid => $createdFile) {
$createdFile = strstr($createdFile, $file); $createdFile = strstr($createdFile, $file);
$dformat = $mimetype->getType($createdFile); $dformat = $mimetype->getType($createdFile);
$fileUrl = 'http://'. $_SERVER['HTTP_HOST'] . $createdFile; $fileUrl = 'http://' . $_SERVER['HTTP_HOST'] . $createdFile;
$beginIndex = strrpos($fileUrl, '/'); $beginIndex = strrpos($fileUrl, '/');
$dtitle = substr($fileUrl, $beginIndex + 1); $dtitle = substr($fileUrl, $beginIndex + 1);
$dtitle = substr($dtitle, 0, strpos($dtitle, ".")); $dtitle = substr($dtitle, 0, strpos($dtitle, "."));
$dtitle = $dtitle . '_'. $dsid; $dtitle = $dtitle . '_' . $dsid;
$ds1 = $dom->createElement("foxml:datastream"); $ds1 = $dom->createElement("foxml:datastream");
$ds1->setAttribute("ID", "$dsid"); $ds1->setAttribute("ID", "$dsid");
$ds1->setAttribute("STATE", "A"); $ds1->setAttribute("STATE", "A");
$ds1->setAttribute("CONTROL_GROUP", "M"); $ds1->setAttribute("CONTROL_GROUP", "M");
$ds1v= $dom->createElement("foxml:datastreamVersion"); $ds1v = $dom->createElement("foxml:datastreamVersion");
$ds1v->setAttribute("ID", "$dsid.0"); $ds1v->setAttribute("ID", "$dsid.0");
$ds1v->setAttribute("MIMETYPE", "$dformat"); $ds1v->setAttribute("MIMETYPE", "$dformat");
$ds1v->setAttribute("LABEL", "$dtitle"); $ds1v->setAttribute("LABEL", "$dtitle");
@ -158,9 +180,12 @@ class FormBuilder {
$rootElement->appendChild($ds1); $rootElement->appendChild($ds1);
} }
} }
/** /**
* creates the RELS-EXT for the foxml * creates the RELS-EXT for the foxml
* @param type $form_values
* @param type $dom
* @param type $rootElement
*/ */
function createRelationShips($form_values, &$dom, &$rootElement) { function createRelationShips($form_values, &$dom, &$rootElement) {
$drdf = $dom->createElement("foxml:datastream"); $drdf = $dom->createElement("foxml:datastream");
@ -190,14 +215,16 @@ class FormBuilder {
$rdf->appendChild($rdfdesc); $rdf->appendChild($rdfdesc);
$rdfdesc->appendChild($member); $rdfdesc->appendChild($member);
$rootElement->appendChild($drdf); $rootElement->appendChild($drdf);
} }
/** /**
* creates the standard foxml properties * creates the standard foxml properties
* @param type $form_values
* @param type $dom
* @param type $rootElement
*/ */
function createStandardFedoraStuff($form_values, &$dom, &$rootElement) { function createStandardFedoraStuff($form_values, &$dom, &$rootElement) {
/*foxml object properties section */ /* foxml object properties section */
$objproperties = $dom->createElement("foxml:objectProperties"); $objproperties = $dom->createElement("foxml:objectProperties");
$prop1 = $dom->createElement("foxml:property"); $prop1 = $dom->createElement("foxml:property");
$prop1->setAttribute("NAME", "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"); $prop1->setAttribute("NAME", "http://www.w3.org/1999/02/22-rdf-syntax-ns#type");
@ -222,11 +249,17 @@ class FormBuilder {
$rootElement->appendChild($objproperties); $rootElement->appendChild($objproperties);
} }
/**
* Build QDC Form
* @param type $form
* @param type $ingest_form_definition
* @param type $form_values
* @return type
*/
function buildQDCForm(&$form, $ingest_form_definition, &$form_values) { function buildQDCForm(&$form, $ingest_form_definition, &$form_values) {
$form['indicator2'] = array( $form['indicator2'] = array(
'#type' => 'fieldset', '#type' => 'fieldset',
'#title' => t('Ingest Digital Object Step #2') '#title' => t('Ingest Digital Object Step #2')
); );
foreach ($ingest_form_definition->form_elements->element as $element) { foreach ($ingest_form_definition->form_elements->element as $element) {
$name = strip_tags($element->name->asXML()); $name = strip_tags($element->name->asXML());
@ -234,7 +267,7 @@ class FormBuilder {
$required = strip_tags($element->required->asXML()); $required = strip_tags($element->required->asXML());
$required = strtolower($required); $required = strtolower($required);
if ($required != 'TRUE') { if ($required != 'TRUE') {
$required='0'; $required = '0';
} }
$description = strip_tags($element->description->asXML()); $description = strip_tags($element->description->asXML());
@ -247,20 +280,19 @@ class FormBuilder {
$options["$field"] = $value; $options["$field"] = $value;
} }
$form['indicator2']["$name"] = array( $form['indicator2']["$name"] = array(
'#title' => $title, '#title' => $title,
'#required' => $required, '#required' => $required,
'#description' => $description, '#description' => $description,
'#type' => $type, '#type' => $type,
'#options' => $options, '#options' => $options,
); );
} }
else { else {
$form['indicator2']["$name"] = array( $form['indicator2']["$name"] = array(
'#title' => $title, '#title' => $title,
'#required' => $required, '#required' => $required,
'#description' => $description, '#description' => $description,
'#type' => $type '#type' => $type
); );
} }
} }
@ -269,3 +301,4 @@ class FormBuilder {
} }
} }

24
plugins/FlvFormBuilder.inc

@ -1,20 +1,33 @@
<?php <?php
// $Id$ // $Id$
/**
* @file
* FLVFormBuilder
*/
module_load_include('inc', 'fedora_repository', 'plugins/FormBuilder'); module_load_include('inc', 'fedora_repository', 'plugins/FormBuilder');
/* /**
* implements methods from content model ingest form xml * implements methods from content model ingest form xml
* builds a dc metadata form * builds a dc metadata form
*/ */
class FlvFormBuilder extends FormBuilder { class FlvFormBuilder extends FormBuilder {
/**
* Constructor
*/
function FlvFormBuilder() { function FlvFormBuilder() {
module_load_include('inc', 'fedora_repository', 'plugins/FormBuilder'); module_load_include('inc', 'fedora_repository', 'plugins/FormBuilder');
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
} }
/* /**
* method overrides method in FormBuilder. We changed the dsid from OBJ to FLV and added the TN datastream * method overrides method in FormBuilder. We changed the dsid from OBJ to FLV and added the TN datastream
* @global type $base_url
* @param type $form_values
* @param type $dom
* @param type $rootElement
*/ */
function createFedoraDataStreams($form_values, &$dom, &$rootElement) { function createFedoraDataStreams($form_values, &$dom, &$rootElement) {
module_load_include('inc', 'fedora_repository', 'MimeClass'); module_load_include('inc', 'fedora_repository', 'MimeClass');
@ -24,7 +37,7 @@ class FlvFormBuilder extends FormBuilder {
$file = $form_values['ingest-file-location']; $file = $form_values['ingest-file-location'];
$dformat = $mimetype->getType($file); $dformat = $mimetype->getType($file);
//$fileUrl = 'http://'.$_SERVER['HTTP_HOST'].$file; //$fileUrl = 'http://'.$_SERVER['HTTP_HOST'].$file;
$fileUrl = $base_url .'/'. drupal_urlencode($file); $fileUrl = $base_url . '/' . drupal_urlencode($file);
$beginIndex = strrpos($fileUrl, '/'); $beginIndex = strrpos($fileUrl, '/');
$dtitle = substr($fileUrl, $beginIndex + 1); $dtitle = substr($fileUrl, $beginIndex + 1);
$dtitle = substr($dtitle, 0, strpos($dtitle, ".")); $dtitle = substr($dtitle, 0, strpos($dtitle, "."));
@ -32,7 +45,7 @@ class FlvFormBuilder extends FormBuilder {
$ds1->setAttribute("ID", "FLV"); $ds1->setAttribute("ID", "FLV");
$ds1->setAttribute("STATE", "A"); $ds1->setAttribute("STATE", "A");
$ds1->setAttribute("CONTROL_GROUP", "M"); $ds1->setAttribute("CONTROL_GROUP", "M");
$ds1v= $dom->createElement("foxml:datastreamVersion"); $ds1v = $dom->createElement("foxml:datastreamVersion");
$ds1v->setAttribute("ID", "FLV.0"); $ds1v->setAttribute("ID", "FLV.0");
$ds1v->setAttribute("MIMETYPE", "$dformat"); $ds1v->setAttribute("MIMETYPE", "$dformat");
$ds1v->setAttribute("LABEL", "$dtitle"); $ds1v->setAttribute("LABEL", "$dtitle");
@ -44,7 +57,7 @@ class FlvFormBuilder extends FormBuilder {
$rootElement->appendChild($ds1); $rootElement->appendChild($ds1);
$createdFile = drupal_get_path('module', 'Fedora_Repository') . '/images/flashThumb.jpg'; $createdFile = drupal_get_path('module', 'Fedora_Repository') . '/images/flashThumb.jpg';
$fileUrl = $base_url .'/'. drupal_urlencode($createdFile); //'http://'.$_SERVER['HTTP_HOST'].'/'.$createdFile; $fileUrl = $base_url . '/' . drupal_urlencode($createdFile); //'http://'.$_SERVER['HTTP_HOST'].'/'.$createdFile;
$ds1 = $dom->createElement("foxml:datastream"); $ds1 = $dom->createElement("foxml:datastream");
$ds1->setAttribute("ID", "TN"); $ds1->setAttribute("ID", "TN");
$ds1->setAttribute("STATE", "A"); $ds1->setAttribute("STATE", "A");
@ -60,5 +73,6 @@ class FlvFormBuilder extends FormBuilder {
$ds1v->appendChild($ds1content); $ds1v->appendChild($ds1content);
$rootElement->appendChild($ds1); $rootElement->appendChild($ds1);
} }
} }

199
plugins/FormBuilder.inc

@ -2,19 +2,31 @@
// $Id$ // $Id$
/* /**
* Created on 19-Feb-08 * @file
* * FormBuilder class
* */
/**
* implements methods from content model ingest form xml * implements methods from content model ingest form xml
* builds a dc metadata form * builds a dc metadata form
*/ */
class FormBuilder { class FormBuilder {
/**
* Constructor
*/
function FormBuilder() { function FormBuilder() {
module_load_include('inc', 'FormBuilder', ''); module_load_include('inc', 'FormBuilder', '');
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
} }
/**
* Create QDC Stream ??
* @param type $form_values
* @param type $dom
* @param type $rootElement
*/
function createQDCStream($form_values, &$dom, &$rootElement) { function createQDCStream($form_values, &$dom, &$rootElement) {
$datastream = $dom->createElement("foxml:datastream"); $datastream = $dom->createElement("foxml:datastream");
$datastream->setAttribute("ID", "DC"); $datastream->setAttribute("ID", "DC");
@ -35,7 +47,7 @@ class FormBuilder {
$oai->setAttribute('xmlns:xsi', "http://www.w3.org/2001/XMLSchema-instance"); $oai->setAttribute('xmlns:xsi', "http://www.w3.org/2001/XMLSchema-instance");
$content->appendChild($oai); $content->appendChild($oai);
//dc elements //dc elements
$previousElement=NULL;//used in case we have to nest elements for qualified dublin core $previousElement = NULL; //used in case we have to nest elements for qualified dublin core
foreach ($form_values as $key => $value) { foreach ($form_values as $key => $value) {
$key = str_replace('_', ':', $key); $key = str_replace('_', ':', $key);
$index = strrpos($key, '-'); $index = strrpos($key, '-');
@ -55,18 +67,22 @@ class FormBuilder {
$previousElement = $dom->createElement($key, $value); $previousElement = $dom->createElement($key, $value);
$oai->appendChild($previousElement); $oai->appendChild($previousElement);
} }
} } catch (exception $e) {
catch (exception $e) {
drupal_set_message(t("!e", array('!e' => $e->getMessage())), 'error'); drupal_set_message(t("!e", array('!e' => $e->getMessage())), 'error');
continue; continue;
} }
} }
$rootElement->appendChild($datastream); $rootElement->appendChild($datastream);
} }
} }
//create the security Policy /**
* Create the security policy
* @param type $collectionPid
* @param type $dom
* @param type $rootElement
* @return type
*/
function createPolicy($collectionPid, &$dom, &$rootElement) { function createPolicy($collectionPid, &$dom, &$rootElement) {
module_load_include('inc', 'fedora_repository', 'ObjectHelper'); module_load_include('inc', 'fedora_repository', 'ObjectHelper');
$objectHelper = new ObjectHelper(); $objectHelper = new ObjectHelper();
@ -78,8 +94,7 @@ class FormBuilder {
} }
try { try {
$xml = new SimpleXMLElement($policyStreamDoc); $xml = new SimpleXMLElement($policyStreamDoc);
} } catch (Exception $e) {
catch (Exception $e) {
watchdog(t("Fedora_Repository"), t("Problem getting security policy."), NULL, WATCHDOG_ERROR); watchdog(t("Fedora_Repository"), t("Problem getting security policy."), NULL, WATCHDOG_ERROR);
drupal_set_message(t('Problem getting security policy: !e', array('!e' => $e->getMessage())), 'error'); drupal_set_message(t('Problem getting security policy: !e', array('!e' => $e->getMessage())), 'error');
return FALSE; return FALSE;
@ -91,7 +106,7 @@ class FormBuilder {
return FALSE; return FALSE;
} }
$dom->importNode($policyElement, TRUE); $dom->importNode($policyElement, TRUE);
$value=$policyElement->appendXML($policyStreamDoc); $value = $policyElement->appendXML($policyStreamDoc);
if (!$value) { if (!$value) {
drupal_set_message(t('Error creating security policy stream.')); drupal_set_message(t('Error creating security policy stream.'));
watchdog(t("Fedora_Repository"), t("Error creating security policy stream, could not parse collection policy template file."), NULL, WATCHDOG_NOTICE); watchdog(t("Fedora_Repository"), t("Error creating security policy stream, could not parse collection policy template file."), NULL, WATCHDOG_NOTICE);
@ -114,14 +129,18 @@ class FormBuilder {
return TRUE; return TRUE;
} }
/**
* Handle QDC Form ??
* @param type $form_values
* @return type
*/
function handleQDCForm($form_values) { function handleQDCForm($form_values) {
module_load_include('inc', 'fedora_repository', 'api/fedora_item'); module_load_include('inc', 'fedora_repository', 'api/fedora_item');
module_load_include('inc', 'fedora_repository', 'CollectionPolicy'); module_load_include('inc', 'fedora_repository', 'CollectionPolicy');
$dom = new DomDocument("1.0", "UTF-8"); $dom = new DomDocument("1.0", "UTF-8");
$dom->formatOutput = TRUE; $dom->formatOutput = TRUE;
$pid=$form_values['pid']; $pid = $form_values['pid'];
$rootElement = $dom->createElement("foxml:digitalObject"); $rootElement = $dom->createElement("foxml:digitalObject");
$rootElement->setAttribute('VERSION', '1.1'); $rootElement->setAttribute('VERSION', '1.1');
$rootElement->setAttribute('PID', "$pid"); $rootElement->setAttribute('PID', "$pid");
@ -134,13 +153,13 @@ class FormBuilder {
// Create relationships // Create relationships
$this->createRelationShips($form_values, $dom, $rootElement); $this->createRelationShips($form_values, $dom, $rootElement);
$collectionPid = $form_values['collection_pid']; $collectionPid = $form_values['collection_pid'];
if (($cp = CollectionPolicy::LoadFromCollection($collectionPid)) !== FALSE) { if (($cp = CollectionPolicy::LoadFromCollection($collectionPid)) !== FALSE) {
$collectionName = trim($cp->getName()); $collectionName = trim($cp->getName());
if (trim($collectionName) != '') { if (trim($collectionName) != '') {
$form_values['dc_relation'] = $collectionName; $form_values['dc_relation'] = $collectionName;
} }
} }
// Create dublin core // Create dublin core
$this->createQDCStream($form_values, $dom, $rootElement); $this->createQDCStream($form_values, $dom, $rootElement);
@ -150,43 +169,49 @@ class FormBuilder {
$this->createPolicy($collectionPid, &$dom, &$rootElement); $this->createPolicy($collectionPid, &$dom, &$rootElement);
try { try {
$object = Fedora_Item::ingest_from_FOXML($dom); $object = Fedora_Item::ingest_from_FOXML($dom);
if (!empty($object->pid)) { if (!empty($object->pid)) {
// drupal_set_message("Item ". l($object->pid, 'fedora/repository/'. $object->pid) . " created successfully.", "status"); // drupal_set_message("Item ". l($object->pid, 'fedora/repository/'. $object->pid) . " created successfully.", "status");
drupal_set_message(t("Item !pid created successfully.", array('!pid' => l($object->pid, 'fedora/repository/'. $object->pid))), "status"); drupal_set_message(t("Item !pid created successfully.", array('!pid' => l($object->pid, 'fedora/repository/' . $object->pid))), "status");
} }
if (!empty( $_SESSION['fedora_ingest_files'])) { if (!empty($_SESSION['fedora_ingest_files'])) {
foreach ($_SESSION['fedora_ingest_files'] as $dsid => $createdFile) { foreach ($_SESSION['fedora_ingest_files'] as $dsid => $createdFile) {
file_delete($createdFile); file_delete($createdFile);
} }
} }
file_delete($form_values['ingest-file-location']); file_delete($form_values['ingest-file-location']);
} } catch (exception $e) {
catch (exception $e) {
drupal_set_message(t('Error ingesting object: !e', array('!e' => $e->getMessage())), 'error'); drupal_set_message(t('Error ingesting object: !e', array('!e' => $e->getMessage())), 'error');
watchdog(t("Fedora_Repository"), t("Error ingesting object: !e", array('!e' => $e->getMessage())), NULL, WATCHDOG_ERROR); watchdog(t("Fedora_Repository"), t("Error ingesting object: !e", array('!e' => $e->getMessage())), NULL, WATCHDOG_ERROR);
return; return;
} }
} }
/**
* Create Fedora Data stream
* @global type $base_url
* @param type $form_values
* @param type $dom
* @param type $rootElement
*/
function createFedoraDataStreams($form_values, &$dom, &$rootElement) { function createFedoraDataStreams($form_values, &$dom, &$rootElement) {
module_load_include('inc', 'fedora_repository', 'MimeClass'); module_load_include('inc', 'fedora_repository', 'MimeClass');
global $base_url; global $base_url;
$mimetype = new MimeClass(); $mimetype = new MimeClass();
$server=NULL; $server = NULL;
$file=$form_values['ingest-file-location']; $file = $form_values['ingest-file-location'];
if (!empty( $file)) { if (!empty($file)) {
$dformat = $mimetype->getType($file); $dformat = $mimetype->getType($file);
$parts = explode('/', $file); $parts = explode('/', $file);
foreach ($parts as $n => $part) { foreach ($parts as $n => $part) {
$parts[$n] = rawurlencode($part); $parts[$n] = rawurlencode($part);
} }
$path = implode('/', $parts); $path = implode('/', $parts);
$fileUrl = $base_url . '/' . $path; $fileUrl = $base_url . '/' . $path;
$beginIndex = strrpos($fileUrl, '/'); $beginIndex = strrpos($fileUrl, '/');
$dtitle = substr($fileUrl, $beginIndex + 1); $dtitle = substr($fileUrl, $beginIndex + 1);
$dtitle = urldecode($dtitle); $dtitle = urldecode($dtitle);
@ -194,7 +219,7 @@ class FormBuilder {
$ds1->setAttribute("ID", "OBJ"); $ds1->setAttribute("ID", "OBJ");
$ds1->setAttribute("STATE", "A"); $ds1->setAttribute("STATE", "A");
$ds1->setAttribute("CONTROL_GROUP", "M"); $ds1->setAttribute("CONTROL_GROUP", "M");
$ds1v= $dom->createElement("foxml:datastreamVersion"); $ds1v = $dom->createElement("foxml:datastreamVersion");
$rootElement->appendChild($ds1); $rootElement->appendChild($ds1);
$ds1v->setAttribute("ID", "OBJ.0"); $ds1v->setAttribute("ID", "OBJ.0");
@ -207,27 +232,24 @@ class FormBuilder {
$ds1v->appendChild($ds1content); $ds1v->appendChild($ds1content);
} }
if (!empty($_SESSION['fedora_ingest_files'])) { if (!empty($_SESSION['fedora_ingest_files'])) {
foreach ($_SESSION['fedora_ingest_files'] as $dsid => $createdFile) { foreach ($_SESSION['fedora_ingest_files'] as $dsid => $createdFile) {
if (!empty($file)) {
if (!empty($file)) { $found = strstr($createdFile, $file);
$found = strstr($createdFile, $file); if ($found !== FALSE) {
if ($found !== FALSE) { $createdFile = $found;
$createdFile = $found; }
} }
}
$dformat = $mimetype->getType($createdFile); $dformat = $mimetype->getType($createdFile);
$parts = explode('/', $createdFile); $parts = explode('/', $createdFile);
foreach ($parts as $n => $part) { foreach ($parts as $n => $part) {
$parts[$n] = rawurlencode($part); $parts[$n] = rawurlencode($part);
} }
$path = implode('/', $parts); $path = implode('/', $parts);
$fileUrl = $base_url . '/' . $path; $fileUrl = $base_url . '/' . $path;
$beginIndex = strrpos($fileUrl, '/'); $beginIndex = strrpos($fileUrl, '/');
$dtitle = substr($fileUrl, $beginIndex + 1); $dtitle = substr($fileUrl, $beginIndex + 1);
$dtitle = urldecode($dtitle); $dtitle = urldecode($dtitle);
@ -236,7 +258,7 @@ class FormBuilder {
$ds1->setAttribute("ID", "$dsid"); $ds1->setAttribute("ID", "$dsid");
$ds1->setAttribute("STATE", "A"); $ds1->setAttribute("STATE", "A");
$ds1->setAttribute("CONTROL_GROUP", "M"); $ds1->setAttribute("CONTROL_GROUP", "M");
$ds1v= $dom->createElement("foxml:datastreamVersion"); $ds1v = $dom->createElement("foxml:datastreamVersion");
$ds1v->setAttribute("ID", "$dsid.0"); $ds1v->setAttribute("ID", "$dsid.0");
$ds1v->setAttribute("MIMETYPE", "$dformat"); $ds1v->setAttribute("MIMETYPE", "$dformat");
$ds1v->setAttribute("LABEL", "$dtitle"); $ds1v->setAttribute("LABEL", "$dtitle");
@ -250,9 +272,11 @@ class FormBuilder {
} }
} }
/** /**
* Creates the RELS-EXT for the foxml * Creates the RELS-EXT for the foxml
* @param type $form_values
* @param type $dom
* @param type $rootElement
*/ */
function createRelationShips($form_values, &$dom, &$rootElement) { function createRelationShips($form_values, &$dom, &$rootElement) {
$drdf = $dom->createElement("foxml:datastream"); $drdf = $dom->createElement("foxml:datastream");
@ -278,11 +302,11 @@ class FormBuilder {
if (!isset($relationship)) { if (!isset($relationship)) {
$relationship = 'isMemberOfCollection'; $relationship = 'isMemberOfCollection';
} }
$member = $dom->createElement("fedora:". $relationship); $member = $dom->createElement("fedora:" . $relationship);
$membr = $form_values['collection_pid']; $membr = $form_values['collection_pid'];
$member->setAttribute("rdf:resource", "info:fedora/$membr"); $member->setAttribute("rdf:resource", "info:fedora/$membr");
$rdfHasModel = $dom->createElement("fedora-model:hasModel"); $rdfHasModel = $dom->createElement("fedora-model:hasModel");
$contentModelPid=$form_values['content_model_pid']; $contentModelPid = $form_values['content_model_pid'];
$rdfHasModel->setAttribute("rdf:resource", "info:fedora/$contentModelPid"); $rdfHasModel->setAttribute("rdf:resource", "info:fedora/$contentModelPid");
$drdf->appendChild($dvrdf); $drdf->appendChild($dvrdf);
$dvrdf->appendChild($dvcontent); $dvrdf->appendChild($dvcontent);
@ -293,9 +317,11 @@ class FormBuilder {
$rootElement->appendChild($drdf); $rootElement->appendChild($drdf);
} }
/** /**
* Creates the standard foxml properties * Creates the standard foxml properties
* @param type $form_values
* @param type $dom
* @param type $rootElement
*/ */
function createStandardFedoraStuff($form_values, &$dom, &$rootElement) { function createStandardFedoraStuff($form_values, &$dom, &$rootElement) {
// Foxml object properties section // Foxml object properties section
@ -315,57 +341,66 @@ class FormBuilder {
$rootElement->appendChild($objproperties); $rootElement->appendChild($objproperties);
} }
/**
* Build QDC Form
* @param type $form
* @param type $elements
* @param type $form_values
* @return string
*/
function buildQDCForm(&$form, $elements, &$form_values) { function buildQDCForm(&$form, $elements, &$form_values) {
$form['#multistep'] = TRUE; // used so that it triggers a form rebuild every time. $form['#multistep'] = TRUE; // used so that it triggers a form rebuild every time.
$form['indicator2'] = array( $form['indicator2'] = array(
'#type' => 'fieldset', '#type' => 'fieldset',
'#title' => t('Ingest digital object step #2'), '#title' => t('Ingest digital object step #2'),
); );
foreach ($elements as $element) { foreach ($elements as $element) {
if ($element['type'] == 'markup') {
$el = array('#value'=> $element['description']);
} else {
$el = array(
'#title' => $element['label'],
'#required' => ($element['required'] ? 1 : 0),
'#description' => $element['description'],
'#type' => $element['type']
);
}
$name = explode('][', $element['name']); if ($element['type'] == 'markup') {
$elLocation = &$form['indicator2']; $el = array('#value' => $element['description']);
while (isset($elLocation[$name[0]]) && ($partial = array_shift($name)) != NULL) { }
$elLocation = &$elLocation[$partial]; else {
} $el = array(
'#title' => $element['label'],
$autocomplete_path = FALSE; '#required' => ($element['required'] ? 1 : 0),
$autocomplete_omit_collection = FALSE; '#description' => $element['description'],
'#type' => $element['type']
);
}
$name = explode('][', $element['name']);
$elLocation = &$form['indicator2'];
while (isset($elLocation[$name[0]]) && ($partial = array_shift($name)) != NULL) {
$elLocation = &$elLocation[$partial];
}
$autocomplete_path = FALSE;
$autocomplete_omit_collection = FALSE;
foreach ($element['parameters'] as $key => $val) { foreach ($element['parameters'] as $key => $val) {
if ($key == '#autocomplete_path') { if ($key == '#autocomplete_path') {
$autocomplete_path = $val; $autocomplete_path = $val;
} elseif ($key == '#autocomplete_omit_collection') { }
$autocomplete_omit_collection = TRUE; elseif ($key == '#autocomplete_omit_collection') {
} else { $autocomplete_omit_collection = TRUE;
$el[$key]=$val; }
} else {
$el[$key] = $val;
}
} }
if ($autocomplete_path !== FALSE) { if ($autocomplete_path !== FALSE) {
$el['#autocomplete_path'] = $autocomplete_path . (!$autocomplete_omit_collection?'/'.$form_values['storage']['collection_pid']:'/'); $el['#autocomplete_path'] = $autocomplete_path . (!$autocomplete_omit_collection ? '/' . $form_values['storage']['collection_pid'] : '/');
} }
if ($element['type'] == 'select' || $element['type'] == 'other_select') { if ($element['type'] == 'select' || $element['type'] == 'other_select') {
$el['#options']= isset($element['authoritative_list'])?$element['authoritative_list']:array(); $el['#options'] = isset($element['authoritative_list']) ? $element['authoritative_list'] : array();
} }
$elLocation[join('][', $name)] = $el; $elLocation[join('][', $name)] = $el;
} }
return $form; return $form;
} }
} }

81
plugins/ImageManipulation.inc

@ -2,40 +2,54 @@
// $Id$ // $Id$
/* /**
* * @file
* * Image Manipulation class
* This Class implements the methods defined in the STANDARD_IMAGE content model
*/ */
/**
* This Class implements the methods defined in the STANDARD_IMAGE content model
*/
class ImageManipulation { class ImageManipulation {
/**
* Constructor
*/
function ImageManipulation() { function ImageManipulation() {
module_load_include('inc', 'fedora_repository', 'ObjectHelper'); module_load_include('inc', 'fedora_repository', 'ObjectHelper');
} }
/**
* Create a preview ??
* @param type $parameterArray
* @param type $dsid
* @param type $file
* @param type $file_ext
* @return string
*/
function createPreview($parameterArray, $dsid, $file, $file_ext) { function createPreview($parameterArray, $dsid, $file, $file_ext) {
$system = getenv('System'); $system = getenv('System');
$file_suffix = '_' . $dsid . '.' . $file_ext; $file_suffix = '_' . $dsid . '.' . $file_ext;
$width = $parameterArray['width']; $width = $parameterArray['width'];
if (!isset($parameterArray['height'])) { if (!isset($parameterArray['height'])) {
$height = $width; $height = $width;
} else { }
$height = $parameterArray['height']; else {
$height = $parameterArray['height'];
} }
$returnValue = TRUE; $returnValue = TRUE;
$output = array(); $output = array();
$destDir = dirname($file).'/work'; $destDir = dirname($file) . '/work';
$destFile = $destDir .'/'. basename($file) . $file_suffix; $destFile = $destDir . '/' . basename($file) . $file_suffix;
if (!is_dir($destDir)) { if (!is_dir($destDir)) {
@mkdir($destDir); @mkdir($destDir);
} }
if (!file_exists($destFile)) { if (!file_exists($destFile)) {
exec('convert -resize ' . $width . 'x'.$height.' -quality 85 "' . $file . '"[0] -strip "' .$destFile . '" 2>&1 &', $output, $returnValue); exec('convert -resize ' . $width . 'x' . $height . ' -quality 85 "' . $file . '"[0] -strip "' . $destFile . '" 2>&1 &', $output, $returnValue);
} }
else else
$returnValue = '0'; $returnValue = '0';
@ -49,6 +63,14 @@ class ImageManipulation {
} }
} }
/**
* Create PNG
* @param type $parameterArray
* @param type $dsid
* @param type $file
* @param type $file_ext
* @return string
*/
function createPNG($parameterArray = NULL, $dsid, $file, $file_ext) { function createPNG($parameterArray = NULL, $dsid, $file, $file_ext) {
$file_suffix = '_' . $dsid . '.' . $file_ext; $file_suffix = '_' . $dsid . '.' . $file_ext;
$returnValue = TRUE; $returnValue = TRUE;
@ -69,6 +91,14 @@ class ImageManipulation {
} }
} }
/**
* Create JPEG 2000
* @param type $parameterArray
* @param type $dsid
* @param type $file
* @param type $file_ext
* @return type
*/
function createJP2($parameterArray = NULL, $dsid, $file, $file_ext) { function createJP2($parameterArray = NULL, $dsid, $file, $file_ext) {
$file_suffix = "_$dsid.$file_ext"; $file_suffix = "_$dsid.$file_ext";
$return_value = TRUE; $return_value = TRUE;
@ -115,7 +145,14 @@ class ImageManipulation {
} }
} }
//use imagemapi to manipulate images instead of going directly to imagemagick or whatever /**
* use imagemapi to manipulate images instead of going directly to imagemagick or whatever
* @param type $parameterArray
* @param type $dsid
* @param type $file
* @param type $file_ext
* @return type
*/
function manipulateImage($parameterArray = NULL, $dsid, $file, $file_ext) { function manipulateImage($parameterArray = NULL, $dsid, $file, $file_ext) {
$height = $parameterArray['height']; $height = $parameterArray['height'];
$width = $parameterArray['width']; $width = $parameterArray['width'];
@ -151,6 +188,14 @@ class ImageManipulation {
} }
} }
/**
* Create Thumbnail from PDF
* @param type $parameterArray
* @param type $dsid
* @param type $file
* @param type $file_ext
* @return boolean
*/
function createThumbnailFromPDF($parameterArray, $dsid, $file, $file_ext) { function createThumbnailFromPDF($parameterArray, $dsid, $file, $file_ext) {
$height = $parameterArray['height']; $height = $parameterArray['height'];
$width = $parameterArray['width']; $width = $parameterArray['width'];
@ -185,6 +230,14 @@ class ImageManipulation {
} }
} }
/**
* Create Thumbnail
* @param type $parameterArray
* @param type $dsid
* @param type $file
* @param type $file_ext
* @return boolean
*/
function createThumbnail($parameterArray, $dsid, $file, $file_ext) { function createThumbnail($parameterArray, $dsid, $file, $file_ext) {
// var_dump($parameterArray);exit(0); // var_dump($parameterArray);exit(0);
$file_suffix = '_' . $dsid . '.' . $file_ext; $file_suffix = '_' . $dsid . '.' . $file_ext;

863
plugins/ModsFormBuilder.inc

File diff suppressed because it is too large Load Diff

82
plugins/PersonalCollectionClass.inc

@ -1,11 +1,31 @@
<?php <?php
// $Id$ // $Id$
/**
* @file
* PersonalCollectionClass class
*/
/**
* Personal Collection Class
*/
class PersonalCollectionClass { class PersonalCollectionClass {
/**
* Constructor
*/
function PersonalCollectionClass() { function PersonalCollectionClass() {
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
} }
/**
* Create collection
* @param type $theUser
* @param type $pid
* @param type $soapClient
* @return type
*/
function createCollection($theUser, $pid, $soapClient) { function createCollection($theUser, $pid, $soapClient) {
$dom = new DomDocument("1.0", "UTF-8"); $dom = new DomDocument("1.0", "UTF-8");
$dom->formatOutput = TRUE; $dom->formatOutput = TRUE;
@ -23,34 +43,38 @@ class PersonalCollectionClass {
$value = $this->createPolicyStream($theUser, $dom, $rootElement); $value = $this->createPolicyStream($theUser, $dom, $rootElement);
if (!$value) { if (!$value) {
return FALSE;//error should already be logged. return FALSE; //error should already be logged.
} }
$this->createCollectionPolicyStream($theUser, $dom, $rootElement); $this->createCollectionPolicyStream($theUser, $dom, $rootElement);
try { try {
$params = array( $params = array(
'objectXML' => $dom->saveXML(), 'objectXML' => $dom->saveXML(),
'format' => "foxml1.0", 'format' => "foxml1.0",
'logMessage' => "Fedora object ingested", 'logMessage' => "Fedora object ingested",
); );
$object = $soapClient->__soapCall('ingest', array( $object = $soapClient->__soapCall('ingest', array(
$params $params
)); ));
} catch (exception $e) {
}
catch (exception $e) {
drupal_set_message(t('Error ingesting personal collection object: !e', array('!e' => $e->getMessage())), 'error'); drupal_set_message(t('Error ingesting personal collection object: !e', array('!e' => $e->getMessage())), 'error');
return FALSE; return FALSE;
} }
return TRUE; return TRUE;
} }
/**
* Create Collection Policy Stream ??
* @param type $user
* @param type $dom
* @param type $rootElement
* @return type
*/
function createCollectionPolicyStream($user, $dom, $rootElement) { function createCollectionPolicyStream($user, $dom, $rootElement) {
$collectionTemplate = file_get_contents(drupal_get_path('module', 'Fedora_Repository') . '/collection_policies/PERSONAL-COLLECTION-POLICY.xml'); $collectionTemplate = file_get_contents(drupal_get_path('module', 'Fedora_Repository') . '/collection_policies/PERSONAL-COLLECTION-POLICY.xml');
try { try {
$xml = new SimpleXMLElement($collectionTemplate); $xml = new SimpleXMLElement($collectionTemplate);
} } catch (Exception $e) {
catch (Exception $e) {
watchdog(t("Fedora_Repository"), t("Problem creating personal collection policy, could not parse collection policy stream."), NULL, WATCHDOG_ERROR); watchdog(t("Fedora_Repository"), t("Problem creating personal collection policy, could not parse collection policy stream."), NULL, WATCHDOG_ERROR);
drupal_set_message(t('Problem creating personal collection policy, could not parse collection policy stream: !e', array('!e' => $e->getMessage())), 'error'); drupal_set_message(t('Problem creating personal collection policy, could not parse collection policy stream: !e', array('!e' => $e->getMessage())), 'error');
return FALSE; return FALSE;
@ -88,6 +112,13 @@ class PersonalCollectionClass {
return TRUE; return TRUE;
} }
/**
* Create Policy Stream ??
* @param type $user
* @param type $dom
* @param type $rootElement
* @return type
*/
function createPolicyStream($user, $dom, $rootElement) { function createPolicyStream($user, $dom, $rootElement) {
module_load_include('inc', 'fedora_repository', 'SecurityClass'); module_load_include('inc', 'fedora_repository', 'SecurityClass');
@ -113,9 +144,15 @@ class PersonalCollectionClass {
$content->appendChild($policyStream); $content->appendChild($policyStream);
return $this->createChildPolicyStream($dom, $rootElement, $policyStream->cloneNode(TRUE)); return $this->createChildPolicyStream($dom, $rootElement, $policyStream->cloneNode(TRUE));
} }
//right now this is the same as the policy stream for this object, may change /**
//objects in this collection will reference this datastream as their own POLICY stream * right now this is the same as the policy stream for this object, may change
* objects in this collection will reference this datastream as their own POLICY stream ???
* @param type $dom
* @param type $rootElement
* @param type $policyStream
* @return type
*/
function createChildPolicyStream($dom, $rootElement, $policyStream) { function createChildPolicyStream($dom, $rootElement, $policyStream) {
$ds1 = $dom->createElement("foxml:datastream"); $ds1 = $dom->createElement("foxml:datastream");
@ -135,8 +172,14 @@ class PersonalCollectionClass {
return TRUE; return TRUE;
} }
/**
* Create standard fedora stuff ??????????????????
* @param type $user
* @param type $dom
* @param type $rootElement
*/
function createStandardFedoraStuff($user, & $dom, & $rootElement) { function createStandardFedoraStuff($user, & $dom, & $rootElement) {
/*foxml object properties section */ /* foxml object properties section */
$objproperties = $dom->createElement("foxml:objectProperties"); $objproperties = $dom->createElement("foxml:objectProperties");
$prop1 = $dom->createElement("foxml:property"); $prop1 = $dom->createElement("foxml:property");
$prop1->setAttribute("NAME", "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"); $prop1->setAttribute("NAME", "http://www.w3.org/1999/02/22-rdf-syntax-ns#type");
@ -161,6 +204,13 @@ class PersonalCollectionClass {
$rootElement->appendChild($objproperties); $rootElement->appendChild($objproperties);
} }
/**
* Create DC Stream ???
* @global type $user
* @param type $theUser
* @param type $dom
* @param type $rootElement
*/
function createDCStream($theUser, & $dom, & $rootElement) { function createDCStream($theUser, & $dom, & $rootElement) {
global $user; global $user;
$datastream = $dom->createElement("foxml:datastream"); $datastream = $dom->createElement("foxml:datastream");

143
plugins/QtFormBuilder.php

@ -1,76 +1,86 @@
<?php <?php
module_load_include('inc', 'fedora_repository', 'plugins/FormBuilder');
/*
*
*
*
* implements methods from content model ingest form xml
* builds a dc metadata form
*/
class QtFormBuilder extends FormBuilder{
function QtFormBuilder(){
module_load_include('php', 'Fedora_Repository', 'plugins/FormBuilder');
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
} // $Id$
/* /**
* method overrides method in FormBuilder. We changed the dsid from OBJ to OBJ and added the TN datastream * @file
* QTFormBuilder class
*/ */
function createFedoraDataStreams($form_values,&$dom, &$rootElement){ module_load_include('inc', 'fedora_repository', 'plugins/FormBuilder');
module_load_include('inc', 'fedora_repository', 'MimeClass');
global $base_url;
$mimetype = new MimeClass();
$server=null;
$file=$form_values['ingest-file-location'];
$dformat = $mimetype->getType($file);
//$fileUrl = 'http://'.$_SERVER['HTTP_HOST'].$file;
$fileUrl = $base_url.'/'.drupal_urlencode($file);
$beginIndex = strrpos($fileUrl,'/');
$dtitle = substr($fileUrl,$beginIndex+1);
$dtitle = substr($dtitle, 0, strpos($dtitle, "."));
$ds1 = $dom->createElement("foxml:datastream");
$ds1->setAttribute("ID","OBJ");
$ds1->setAttribute("STATE","A");
$ds1->setAttribute("CONTROL_GROUP","M");
$ds1v= $dom->createElement("foxml:datastreamVersion");
$ds1v->setAttribute("ID","OBJ.0");
$ds1v->setAttribute("MIMETYPE","$dformat");
$ds1v->setAttribute("LABEL","$dtitle");
$ds1content = $dom->createElement('foxml:contentLocation');
$ds1content->setAttribute("REF","$fileUrl");
$ds1content->setAttribute("TYPE","URL");
$ds1->appendChild($ds1v);
$ds1v->appendChild($ds1content);
$rootElement->appendChild($ds1);
if(empty($_SESSION['fedora_ingest_files']) || !isset($_SESSION['fedora_ingest_files']['TN'])) { /**
$createdFile = drupal_get_path('module', 'Fedora_Repository').'/images/qtThumb.jpg'; * Implements methods from content model ingest form xml
$fileUrl = $base_url.'/'.drupal_urlencode($createdFile);//'http://'.$_SERVER['HTTP_HOST'].'/'.$createdFile; * builds a dc metadata form
$ds1 = $dom->createElement("foxml:datastream"); */
$ds1->setAttribute("ID","TN"); class QtFormBuilder extends FormBuilder {
$ds1->setAttribute("STATE","A");
$ds1->setAttribute("CONTROL_GROUP","M"); /**
$ds1v= $dom->createElement("foxml:datastreamVersion"); * Constructor
$ds1v->setAttribute("ID","TN.0"); */
$ds1v->setAttribute("MIMETYPE","image/jpeg"); function QtFormBuilder() {
$ds1v->setAttribute("LABEL","Thumbnail"); module_load_include('php', 'Fedora_Repository', 'plugins/FormBuilder');
$ds1content = $dom->createElement('foxml:contentLocation'); drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
$ds1content->setAttribute("REF","$fileUrl"); }
$ds1content->setAttribute("TYPE","URL");
$ds1->appendChild($ds1v);
$ds1v->appendChild($ds1content);
$rootElement->appendChild($ds1);
}
if (!empty($_SESSION['fedora_ingest_files'])) { /**
* method overrides method in FormBuilder. We changed the dsid from OBJ to OBJ and added the TN datastream
* @global type $base_url
* @param type $form_values
* @param type $dom
* @param type $rootElement
*/
function createFedoraDataStreams($form_values, &$dom, &$rootElement) {
module_load_include('inc', 'fedora_repository', 'MimeClass');
global $base_url;
$mimetype = new MimeClass();
$server = null;
$file = $form_values['ingest-file-location'];
$dformat = $mimetype->getType($file);
//$fileUrl = 'http://'.$_SERVER['HTTP_HOST'].$file;
$fileUrl = $base_url . '/' . drupal_urlencode($file);
$beginIndex = strrpos($fileUrl, '/');
$dtitle = substr($fileUrl, $beginIndex + 1);
$dtitle = substr($dtitle, 0, strpos($dtitle, "."));
$ds1 = $dom->createElement("foxml:datastream");
$ds1->setAttribute("ID", "OBJ");
$ds1->setAttribute("STATE", "A");
$ds1->setAttribute("CONTROL_GROUP", "M");
$ds1v = $dom->createElement("foxml:datastreamVersion");
$ds1v->setAttribute("ID", "OBJ.0");
$ds1v->setAttribute("MIMETYPE", "$dformat");
$ds1v->setAttribute("LABEL", "$dtitle");
$ds1content = $dom->createElement('foxml:contentLocation');
$ds1content->setAttribute("REF", "$fileUrl");
$ds1content->setAttribute("TYPE", "URL");
$ds1->appendChild($ds1v);
$ds1v->appendChild($ds1content);
$rootElement->appendChild($ds1);
if (empty($_SESSION['fedora_ingest_files']) || !isset($_SESSION['fedora_ingest_files']['TN'])) {
$createdFile = drupal_get_path('module', 'Fedora_Repository') . '/images/qtThumb.jpg';
$fileUrl = $base_url . '/' . drupal_urlencode($createdFile); //'http://'.$_SERVER['HTTP_HOST'].'/'.$createdFile;
$ds1 = $dom->createElement("foxml:datastream");
$ds1->setAttribute("ID", "TN");
$ds1->setAttribute("STATE", "A");
$ds1->setAttribute("CONTROL_GROUP", "M");
$ds1v = $dom->createElement("foxml:datastreamVersion");
$ds1v->setAttribute("ID", "TN.0");
$ds1v->setAttribute("MIMETYPE", "image/jpeg");
$ds1v->setAttribute("LABEL", "Thumbnail");
$ds1content = $dom->createElement('foxml:contentLocation');
$ds1content->setAttribute("REF", "$fileUrl");
$ds1content->setAttribute("TYPE", "URL");
$ds1->appendChild($ds1v);
$ds1v->appendChild($ds1content);
$rootElement->appendChild($ds1);
}
if (!empty($_SESSION['fedora_ingest_files'])) {
foreach ($_SESSION['fedora_ingest_files'] as $dsid => $createdFile) { foreach ($_SESSION['fedora_ingest_files'] as $dsid => $createdFile) {
$createdFile = strstr($createdFile, $file); $createdFile = strstr($createdFile, $file);
$dformat = $mimetype->getType($createdFile); $dformat = $mimetype->getType($createdFile);
$fileUrl = $base_url . '/'. drupal_urlencode($createdFile); $fileUrl = $base_url . '/' . drupal_urlencode($createdFile);
$beginIndex = strrpos($fileUrl, '/'); $beginIndex = strrpos($fileUrl, '/');
$dtitle = substr($fileUrl, $beginIndex + 1); $dtitle = substr($fileUrl, $beginIndex + 1);
$dtitle = urldecode($dtitle); $dtitle = urldecode($dtitle);
@ -79,7 +89,7 @@ if(empty($_SESSION['fedora_ingest_files']) || !isset($_SESSION['fedora_ingest_fi
$ds1->setAttribute("ID", "$dsid"); $ds1->setAttribute("ID", "$dsid");
$ds1->setAttribute("STATE", "A"); $ds1->setAttribute("STATE", "A");
$ds1->setAttribute("CONTROL_GROUP", "M"); $ds1->setAttribute("CONTROL_GROUP", "M");
$ds1v= $dom->createElement("foxml:datastreamVersion"); $ds1v = $dom->createElement("foxml:datastreamVersion");
$ds1v->setAttribute("ID", "$dsid.0"); $ds1v->setAttribute("ID", "$dsid.0");
$ds1v->setAttribute("MIMETYPE", "$dformat"); $ds1v->setAttribute("MIMETYPE", "$dformat");
$ds1v->setAttribute("LABEL", "$dtitle"); $ds1v->setAttribute("LABEL", "$dtitle");
@ -91,12 +101,7 @@ if(empty($_SESSION['fedora_ingest_files']) || !isset($_SESSION['fedora_ingest_fi
$rootElement->appendChild($ds1); $rootElement->appendChild($ds1);
} }
} }
}
}
}
}
?> ?>

151
plugins/Refworks.inc

@ -1,6 +1,11 @@
<?php <?php
// $Id$ // $Id$
/**
* @file
* Refworks class
*/
/* /*
* Created on 26-Feb-08 * Created on 26-Feb-08
* *
@ -9,21 +14,35 @@
*/ */
module_load_include('inc', 'fedora_repository', 'SecurityClass'); module_load_include('inc', 'fedora_repository', 'SecurityClass');
/**
* Refworks class ???
*/
class Refworks { class Refworks {
private $romeoUrlString = ""; private $romeoUrlString = "";
private $referenceList; private $referenceList;
private $securityHelper; private $securityHelper;
private $collectionPolicyStream; private $collectionPolicyStream;
private $issn = ''; private $issn = '';
/**
* Constructor
*/
function Refworks() { function Refworks() {
$this->romeoUrlString = "http://www.sherpa.ac.uk/romeo/api24.php?issn="; $this->romeoUrlString = "http://www.sherpa.ac.uk/romeo/api24.php?issn=";
} }
function buildForm( &$form, $ingest_form_definition, &$form_values) { /**
* Build Form ??
* @param type $form
* @param type $ingest_form_definition
* @param type $form_values
* @return type
*/
function buildForm(&$form, $ingest_form_definition, &$form_values) {
$form['indicator2'] = array( $form['indicator2'] = array(
'#type' => 'fieldset', '#type' => 'fieldset',
'#title' => t('Ingest digital object step #2'), '#title' => t('Ingest digital object step #2'),
); );
foreach ($ingest_form_definition->form_elements->element as $element) { foreach ($ingest_form_definition->form_elements->element as $element) {
$name = strip_tags($element->name->asXML()); $name = strip_tags($element->name->asXML());
@ -39,11 +58,11 @@ class Refworks {
$type = strip_tags($element->type->asXML()); $type = strip_tags($element->type->asXML());
$form['indicator2']["$name"] = array( $form['indicator2']["$name"] = array(
'#title' => $title, '#title' => $title,
'#required' => $required, '#required' => $required,
'#description' => $description, '#description' => $description,
'#prefix' => $prefix, '#prefix' => $prefix,
'#type' => $type '#type' => $type
); );
} }
@ -68,21 +87,26 @@ class Refworks {
//$xml=simplexml_load_string(trim(file_get_contents($file),NULL,TRUE)); //$xml=simplexml_load_string(trim(file_get_contents($file),NULL,TRUE));
//$dom = dom_import_simplexml($xml);//test to see if it behaves better //$dom = dom_import_simplexml($xml);//test to see if it behaves better
//$xml = new SimpleXMLElement(trim(file_get_contents($file))); //$xml = new SimpleXMLElement(trim(file_get_contents($file)));
} } catch (Exception $e) {
catch (Exception $e) {
drupal_set_message(t('Error processing Refworks file: ') . $e->getMessage()); drupal_set_message(t('Error processing Refworks file: ') . $e->getMessage());
return FALSE; return FALSE;
} }
$this->referenceList = array(); $this->referenceList = array();
foreach ($xml->reference as $reference) { foreach ($xml->reference as $reference) {
array_push( $this->referenceList, $reference ); array_push($this->referenceList, $reference);
} }
return $this->referenceList; return $this->referenceList;
} }
//create A DC stream with ID of DC /**
function createQDCStream( &$dom, &$rootElement, $reference ) { * Create a DC stream with ID of DC ???
* @param type $dom
* @param type $rootElement
* @param type $reference
* @return type
*/
function createQDCStream(&$dom, &$rootElement, $reference) {
$datastream = $dom->createElement("foxml:datastream"); $datastream = $dom->createElement("foxml:datastream");
$datastream->setAttribute("ID", "DC"); $datastream->setAttribute("ID", "DC");
$datastream->setAttribute("STATE", "A"); $datastream->setAttribute("STATE", "A");
@ -126,19 +150,19 @@ class Refworks {
$oai->appendChild($element); $oai->appendChild($element);
} }
foreach ($reference->vo as $value) { foreach ($reference->vo as $value) {
$source .= ' Volume: '. $value; $source .= ' Volume: ' . $value;
} }
foreach ($reference->is as $value) { foreach ($reference->is as $value) {
$source .= ' Issue: '. $value; $source .= ' Issue: ' . $value;
} }
foreach ($reference->sp as $value) { foreach ($reference->sp as $value) {
$source .= ' Start Page: '. $value; $source .= ' Start Page: ' . $value;
} }
foreach ($reference->op as $value) { foreach ($reference->op as $value) {
$source .= ' Other Pages: '. $value; $source .= ' Other Pages: ' . $value;
} }
foreach ($reference->ul as $value) { foreach ($reference->ul as $value) {
$source .= ' URL: '. $value; $source .= ' URL: ' . $value;
} }
foreach ($reference->k1 as $value) { foreach ($reference->k1 as $value) {
$element = $dom->createElement('dc:subject', htmlspecialchars($value, ENT_NOQUOTES, 'UTF-8')); $element = $dom->createElement('dc:subject', htmlspecialchars($value, ENT_NOQUOTES, 'UTF-8'));
@ -174,17 +198,17 @@ class Refworks {
$identifier .= ' ISSN/ISBN: ' . $value; $identifier .= ' ISSN/ISBN: ' . $value;
//$this->romeoUrlString = $this->romeoUrlString . $value; //$this->romeoUrlString = $this->romeoUrlString . $value;
if (!$this->issn == '') { if (!$this->issn == '') {
$this->issn=$value; $this->issn = $value;
} }
else { else {
$this->issn .= ','. $value; $this->issn .= ',' . $value;
} }
} }
foreach ($reference->ab as $value) { foreach ($reference->ab as $value) {
$description = ' abstract: '. $value; $description = ' abstract: ' . $value;
} }
foreach ($reference->cr as $value) { foreach ($reference->cr as $value) {
$description .= ' Cited reference: '. $value; $description .= ' Cited reference: ' . $value;
} }
$element = $dom->createElement('dc:description', htmlspecialchars($description, ENT_NOQUOTES, 'UTF-8')); $element = $dom->createElement('dc:description', htmlspecialchars($description, ENT_NOQUOTES, 'UTF-8'));
$oai->appendChild($element); $oai->appendChild($element);
@ -196,7 +220,12 @@ class Refworks {
return $datastream; return $datastream;
} }
function handleForm( &$form_values ) { /**
* Handle Form ??
* @param type $form_values
* @return type
*/
function handleForm(&$form_values) {
$errorMessage = NULL; $errorMessage = NULL;
module_load_include('inc', 'fedora_repository', 'CollectionClass'); module_load_include('inc', 'fedora_repository', 'CollectionClass');
module_load_include('inc', 'fedora_repository', 'ContentModel'); module_load_include('inc', 'fedora_repository', 'ContentModel');
@ -204,10 +233,10 @@ class Refworks {
$contentModelPid = ContentModel::getPidFromIdentifier($form_values['models']); $contentModelPid = ContentModel::getPidFromIdentifier($form_values['models']);
$contentModelDsid = ContentModel::getDSIDFromIdentifier($form_values['models']); $contentModelDsid = ContentModel::getDSIDFromIdentifier($form_values['models']);
$collectionHelper = new CollectionClass(); $collectionHelper = new CollectionClass();
$startTime=time(); $startTime = time();
$collection_pid = $form_values['collection_pid']; $collection_pid = $form_values['collection_pid'];
$this->parse_refworks_item( $form_values ); $this->parse_refworks_item($form_values);
$this->securityHelper = new SecurityClass(); $this->securityHelper = new SecurityClass();
@ -231,18 +260,18 @@ class Refworks {
$rootElement->setAttribute('xmlns:xsi', "http://www.w3.org/2001/XMLSchema-instance"); $rootElement->setAttribute('xmlns:xsi', "http://www.w3.org/2001/XMLSchema-instance");
$rootElement->setAttribute('xsi:schemaLocation', "info:fedora/fedora-system:def/foxml# http://www.fedora.info/definitions/1/0/foxml1-1.xsd"); $rootElement->setAttribute('xsi:schemaLocation', "info:fedora/fedora-system:def/foxml# http://www.fedora.info/definitions/1/0/foxml1-1.xsd");
$dom->appendChild($rootElement); $dom->appendChild($rootElement);
//create standard fedora stuff //create standard fedora stuff
$qdc_element = $this->createQDCStream($dom, $rootElement, $reference); $qdc_element = $this->createQDCStream($dom, $rootElement, $reference);
if (!$qdc_element) { if (!$qdc_element) {
drupal_set_message(t('Error creating DC for Refworks'), 'error'); drupal_set_message(t('Error creating DC for Refworks'), 'error');
continue; continue;
} }
$item_title=''; $item_title = '';
foreach ($reference->t1 as $value) { foreach ($reference->t1 as $value) {
$item_title .= ' --- '. $value; $item_title .= ' --- ' . $value;
} }
$this->createStandardFedoraStuff($form_values, $dom, $rootElement, $reference ); $this->createStandardFedoraStuff($form_values, $dom, $rootElement, $reference);
$rootElement->appendChild($qdc_element); $rootElement->appendChild($qdc_element);
//create relationships //create relationships
$this->createRelationShips($form_values, $dom, $rootElement, $pid); $this->createRelationShips($form_values, $dom, $rootElement, $pid);
@ -250,14 +279,14 @@ class Refworks {
$this->createFedoraDataStreams($form_values, $dom, $rootElement, $reference); $this->createFedoraDataStreams($form_values, $dom, $rootElement, $reference);
if (!empty ( $this->collectionPolicyStream)) { if (!empty($this->collectionPolicyStream)) {
$this->create_security_policies($dom, $rootElement, $reference); $this->create_security_policies($dom, $rootElement, $reference);
} }
$params = array( $params = array(
'objectXML' => $dom->saveXML(), 'objectXML' => $dom->saveXML(),
'format' => 'info:fedora/fedora-system:FOXML-1.1', 'format' => 'info:fedora/fedora-system:FOXML-1.1',
'logMessage' => "Fedora Object Ingested", 'logMessage' => "Fedora Object Ingested",
); );
try { try {
@ -270,34 +299,36 @@ class Refworks {
return; return;
} }
$object = $client->__soapCall('ingest', array( $object = $client->__soapCall('ingest', array(
$params $params
)); ));
watchdog(t("FEDORA_REPOSITORY"), t("Successfully added repository item !pid - !it", array('!pid' => $pid, '!it' => $item_title)), NULL, WATCHDOG_INFO); watchdog(t("FEDORA_REPOSITORY"), t("Successfully added repository item !pid - !it", array('!pid' => $pid, '!it' => $item_title)), NULL, WATCHDOG_INFO);
$deleteFiles = $form_values['delete_file']; //remove files from drupal file system $deleteFiles = $form_values['delete_file']; //remove files from drupal file system
if ($deleteFiles > 0) { if ($deleteFiles > 0) {
unlink($form_values['fullpath']); unlink($form_values['fullpath']);
} }
} } catch (exception $e) {
catch (exception $e) {
$errors++; $errors++;
$errorMessage = 'yes'; $errorMessage = 'yes';
watchdog(t("FEDORA_REPOSITORY"), t("Error during ingest !it !e", array('!it' => $item_title, '!e' => $e)), NULL, WATCHDOG_ERROR); watchdog(t("FEDORA_REPOSITORY"), t("Error during ingest !it !e", array('!it' => $item_title, '!e' => $e)), NULL, WATCHDOG_ERROR);
} }
$success++; $success++;
} }
if (isset($errorMessage)) { if (isset($errorMessage)) {
drupal_set_message(t('Error ingesting one or more records! Check Drupal watchdog logs for more info') , 'error'); drupal_set_message(t('Error ingesting one or more records! Check Drupal watchdog logs for more info'), 'error');
} }
$endTime = time(); $endTime = time();
drupal_set_message(t('Successfull ingest of %success records. %errors records failed. Ingest took %seconds seconds', drupal_set_message(t('Successfull ingest of %success records. %errors records failed. Ingest took %seconds seconds', array('%success' => $success - $errors, '%errors' => $errors, '%seconds' => $endTime - $startTime)), 'info');
array('%success' => $success-$errors, '%errors' => $errors, '%seconds' => $endTime-$startTime)) , 'info');
} }
/** /**
* Creates the RELS-EXT for the foxml * Creates the RELS-EXT for the foxml
* @param type $form_values
* @param type $dom
* @param type $rootElement
* @param type $pid
*/ */
function createRelationShips( $form_values, &$dom, &$rootElement, $pid = NULL ) { function createRelationShips($form_values, &$dom, &$rootElement, $pid = NULL) {
$drdf = $dom->createElement("foxml:datastream"); $drdf = $dom->createElement("foxml:datastream");
$drdf->setAttribute("ID", "RELS-EXT"); $drdf->setAttribute("ID", "RELS-EXT");
$drdf->setAttribute("CONTROL_GROUP", "X"); $drdf->setAttribute("CONTROL_GROUP", "X");
@ -326,9 +357,13 @@ class Refworks {
$rdfdesc->appendChild($member); $rdfdesc->appendChild($member);
$rdfdesc->appendChild($model); $rdfdesc->appendChild($model);
$rootElement->appendChild($drdf); $rootElement->appendChild($drdf);
} }
/**
* Create Romeo Datastream
* @param type $dom
* @param type $rootElement
*/
function createRomeoDataStream(&$dom, &$rootElement) { function createRomeoDataStream(&$dom, &$rootElement) {
$ds1 = $dom->createElement("foxml:datastream"); $ds1 = $dom->createElement("foxml:datastream");
$ds1->setAttribute("ID", "ROMEO"); $ds1->setAttribute("ID", "ROMEO");
@ -340,7 +375,7 @@ class Refworks {
$ds1v->setAttribute("LABEL", "ROMEO"); $ds1v->setAttribute("LABEL", "ROMEO");
$ds1content = $dom->createElement('foxml:contentLocation'); $ds1content = $dom->createElement('foxml:contentLocation');
$url = $this->romeoUrlString . $this->issn; $url = $this->romeoUrlString . $this->issn;
$this->issn=''; //clear the issn's for next ingest in case we are doing batch $this->issn = ''; //clear the issn's for next ingest in case we are doing batch
$ds1content->setAttribute("REF", "$url"); $ds1content->setAttribute("REF", "$url");
$ds1content->setAttribute("TYPE", "URL"); $ds1content->setAttribute("TYPE", "URL");
$ds1->appendChild($ds1v); $ds1->appendChild($ds1v);
@ -348,6 +383,14 @@ class Refworks {
$rootElement->appendChild($ds1); $rootElement->appendChild($ds1);
} }
/**
* Create Fedora Datastream
* @global type $base_url
* @param type $form_values
* @param type $dom
* @param type $rootElement
* @param type $reference
*/
function createFedoraDataStreams($form_values, &$dom, &$rootElement, $reference) { function createFedoraDataStreams($form_values, &$dom, &$rootElement, $reference) {
global $base_url; global $base_url;
module_load_include('inc', 'fedora_repository', 'MimeClass'); module_load_include('inc', 'fedora_repository', 'MimeClass');
@ -374,6 +417,10 @@ class Refworks {
/** /**
* Creates the standard foxml properties * Creates the standard foxml properties
* @param type $form_values
* @param type $dom
* @param type $rootElement
* @param type $reference
*/ */
function createStandardFedoraStuff($form_values, &$dom, &$rootElement, $reference) { function createStandardFedoraStuff($form_values, &$dom, &$rootElement, $reference) {
// Foxml object properties section // Foxml object properties section
@ -397,10 +444,9 @@ class Refworks {
$rootElement->appendChild($objproperties); $rootElement->appendChild($objproperties);
} }
/** /**
* Read the list of Users from the U1 field and Roles from the U2 field and add elements * Read the list of Users from the U1 field and Roles from the U2 field and add elements
* to the security policy record for this item, then add the record as the security policy datastream. * to the security policy record for this item, then add the record as the security policy datastream.
* *
* @param array $form_values * @param array $form_values
* @param DOMDocument $dom * @param DOMDocument $dom
@ -417,8 +463,8 @@ class Refworks {
$ds1v->setAttribute("ID", "POLICY.0"); $ds1v->setAttribute("ID", "POLICY.0");
$ds1v->setAttribute("MIMETYPE", "text/xml"); $ds1v->setAttribute("MIMETYPE", "text/xml");
$ds1v->setAttribute("LABEL", "POLICY Record"); $ds1v->setAttribute("LABEL", "POLICY Record");
$ds1content = $dom->createElement( "foxml:xmlContent" ); $ds1content = $dom->createElement("foxml:xmlContent");
$custom_policy = $this->collectionPolicyStream; $custom_policy = $this->collectionPolicyStream;
$allowed_users_and_roles = array(); $allowed_users_and_roles = array();
$allowed_users_and_roles['users'] = array(); $allowed_users_and_roles['users'] = array();
@ -428,11 +474,11 @@ class Refworks {
array_push($allowed_users_and_roles['users'], $name); array_push($allowed_users_and_roles['users'], $name);
} }
} }
if (empty( $reference->u1)) { if (empty($reference->u1)) {
// If no "u1" value exists, add the currently logged-in user to the item's security policy. // If no "u1" value exists, add the currently logged-in user to the item's security policy.
array_push($allowed_users_and_roles['users'], $user->name); array_push($allowed_users_and_roles['users'], $user->name);
} }
foreach ($reference->u2 as $rolelist) { foreach ($reference->u2 as $rolelist) {
foreach (explode(';', strip_tags($rolelist->asXML())) as $role) { foreach (explode(';', strip_tags($rolelist->asXML())) as $role) {
array_push($allowed_users_and_roles['roles'], $role); array_push($allowed_users_and_roles['roles'], $role);
@ -444,6 +490,7 @@ class Refworks {
$ds1v->appendChild($ds1content); $ds1v->appendChild($ds1content);
$rootElement->appendChild($ds1); $rootElement->appendChild($ds1);
$ds1content->appendChild($dom->importNode( dom_import_simplexml($custom_policy_sxe), TRUE)); $ds1content->appendChild($dom->importNode(dom_import_simplexml($custom_policy_sxe), TRUE));
} }
} }

22
plugins/ShowDemoStreamsInFieldSets.inc

@ -1,18 +1,32 @@
<?php <?php
// $Id$ // $Id$
/* /**
* Created on 17-Apr-08 * @file
* * ShowDemoStreamsInFieldSets class
* */
/**
* Show Demo Streams in Field Sets ???
*/ */
class ShowDemoStreamsInFieldSets { class ShowDemoStreamsInFieldSets {
private $pid = NULL; private $pid = NULL;
/**
* Constructor
* @param type $pid
*/
function ShowDemoStreamsInFieldSets($pid) { function ShowDemoStreamsInFieldSets($pid) {
//drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); //drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
$this->pid = $pid; $this->pid = $pid;
} }
/**
* Show Medium Size ??
* @global type $base_url
* @return type
*/
function showMediumSize() { function showMediumSize() {
global $base_url; global $base_url;
$collection_fieldset = array( $collection_fieldset = array(

111
plugins/ShowStreamsInFieldSets.inc

@ -1,15 +1,31 @@
<?php <?php
// $Id$ // $Id$
/* /**
* Created on 17-Apr-08 * @file
* ShowStreamsInFieldSets class
*/
/**
* Show Streams In Field Sets ??
*/ */
class ShowStreamsInFieldSets { class ShowStreamsInFieldSets {
private $pid = NULL; private $pid = NULL;
/**
* Constructor
* @param type $pid
*/
function ShowStreamsInFieldSets($pid) { function ShowStreamsInFieldSets($pid) {
$this->pid = $pid; $this->pid = $pid;
} }
/**
* Show the FLV ??
* @return type
*/
function showFlv() { function showFlv() {
//FLV is the datastream id //FLV is the datastream id
$path = drupal_get_path('module', 'Fedora_Repository'); $path = drupal_get_path('module', 'Fedora_Repository');
@ -17,11 +33,11 @@ class ShowStreamsInFieldSets {
$content = ""; $content = "";
$pathTojs = drupal_get_path('module', 'Fedora_Repository') . '/js/swfobject.js'; $pathTojs = drupal_get_path('module', 'Fedora_Repository') . '/js/swfobject.js';
drupal_add_js("$pathTojs"); drupal_add_js("$pathTojs");
$content .= '<div id="player'. $this->pid . 'FLV"><a href="http://www.macromedia.com/go/getflashplayer">Get the Flash Player</a> to see this player.</div>'; $content .= '<div id="player' . $this->pid . 'FLV"><a href="http://www.macromedia.com/go/getflashplayer">Get the Flash Player</a> to see this player.</div>';
drupal_add_js('var s1 = new SWFObject("'. $fullPath . '/flash/flvplayer.swf","single","320","240","7"); drupal_add_js('var s1 = new SWFObject("' . $fullPath . '/flash/flvplayer.swf","single","320","240","7");
s1.addParam("allowfullscreen","TRUE"); s1.addParam("allowfullscreen","TRUE");
s1.addVariable("file","'. base_path() . 'fedora/repository/'. $this->pid . '/FLV/FLV.flv"); s1.addVariable("file","' . base_path() . 'fedora/repository/' . $this->pid . '/FLV/FLV.flv");
s1.write("player'. $this->pid . 'FLV");', 'inline', 'footer'); s1.write("player' . $this->pid . 'FLV");', 'inline', 'footer');
$collection_fieldset = array( $collection_fieldset = array(
'#title' => t('Flash Video'), '#title' => t('Flash Video'),
'#collapsible' => TRUE, '#collapsible' => TRUE,
@ -30,30 +46,42 @@ class ShowStreamsInFieldSets {
return theme('fieldset', $collection_fieldset); return theme('fieldset', $collection_fieldset);
} }
/**
* Show the TN ??
* @global type $base_url
* @return type
*/
function showTN() { function showTN() {
global $base_url; global $base_url;
$collection_fieldset = array( $collection_fieldset = array(
'#title' => '', '#title' => '',
'#attributes' => array(), '#attributes' => array(),
'#collapsible' => FALSE, '#collapsible' => FALSE,
'#value' => '<a href="'. $base_url . '/fedora/repository/'. $this->pid . '/OBJ/"><img src="'. $base_url . '/fedora/repository/'. $this->pid . '/TN/TN'.'" /></a>', '#value' => '<a href="' . $base_url . '/fedora/repository/' . $this->pid . '/OBJ/"><img src="' . $base_url . '/fedora/repository/' . $this->pid . '/TN/TN' . '" /></a>',
); );
return theme('fieldset', $collection_fieldset); return theme('fieldset', $collection_fieldset);
} }
/**
// Same as showTN but artinventory stores the image in a dsid of IMAGE instead of OBJ * Same as showTN but artinventory stores the image in a dsid of IMAGE instead of OBJ
* @global type $base_url
* @return type
*/
function showArtInventoryTN() { function showArtInventoryTN() {
global $base_url; global $base_url;
$collection_fieldset = array( $collection_fieldset = array(
'#collapsible' => FALSE, '#collapsible' => FALSE,
'#value' => '<a href="'. $base_url . '/fedora/repository/'. $this->pid . '/IMAGE/image.jpg"><img src="'. $base_url . '/fedora/repository/'. $this->pid . '/TN/TN'. '" /></a>', '#value' => '<a href="' . $base_url . '/fedora/repository/' . $this->pid . '/IMAGE/image.jpg"><img src="' . $base_url . '/fedora/repository/' . $this->pid . '/TN/TN' . '" /></a>',
); );
return theme('fieldset', $collection_fieldset); return theme('fieldset', $collection_fieldset);
} }
/** /**
* Embed Google Docs' PDF viewer into the page. * Embed Google Docs' PDF viewer into the page.
* @global type $base_url
* @global type $base_path
* @global type $user
* @return type
*/ */
function showPDFPreview() { function showPDFPreview() {
global $base_url; global $base_url;
@ -74,21 +102,21 @@ class ShowStreamsInFieldSets {
$objectHelper = new ObjectHelper(); $objectHelper = new ObjectHelper();
$item = new Fedora_Item($this->pid); $item = new Fedora_Item($this->pid);
if (key_exists('TN', $item->datastreams)) { if (key_exists('TN', $item->datastreams)) {
$tn_url = $base_url.'/fedora/repository/'.$item->pid.'/TN'; $tn_url = $base_url . '/fedora/repository/' . $item->pid . '/TN';
} }
else { else {
$tn_url = $base_path.drupal_get_path('module', 'fedora_repository').'/images/Crystal_Clear_app_download_manager.png'; $tn_url = $base_path . drupal_get_path('module', 'fedora_repository') . '/images/Crystal_Clear_app_download_manager.png';
} }
$dc_html = $objectHelper->getFormattedDC($item); $dc_html = $objectHelper->getFormattedDC($item);
$dl_link = l('<div style="float:left; padding: 10px"><img src="'.$tn_url.'"><br />View Document</div>', 'fedora/repository/'.$this->pid.'/OBJ', array('html' => TRUE)); $dl_link = l('<div style="float:left; padding: 10px"><img src="' . $tn_url . '"><br />View Document</div>', 'fedora/repository/' . $this->pid . '/OBJ', array('html' => TRUE));
$tabset['first_tab']['tabs']['view'] = array( $tabset['first_tab']['tabs']['view'] = array(
'#type' => 'tabpage', '#type' => 'tabpage',
'#title' => t('View'), '#title' => t('View'),
'#content' => $dl_link . $dc_html, '#content' => $dl_link . $dc_html,
); );
if (fedora_repository_access(OBJECTHELPER :: $EDIT_FEDORA_METADATA, $this->pid, $user)) { if (fedora_repository_access(OBJECTHELPER :: $EDIT_FEDORA_METADATA, $this->pid, $user)) {
$editform = drupal_get_form('fedora_repository_edit_qdc_form', $this->pid, 'DC'); $editform = drupal_get_form('fedora_repository_edit_qdc_form', $this->pid, 'DC');
$tabset['first_tab']['tabs']['edit'] = array( $tabset['first_tab']['tabs']['edit'] = array(
@ -97,23 +125,26 @@ class ShowStreamsInFieldSets {
'#content' => $editform, '#content' => $editform,
); );
} }
$tabset['second_tab'] = array( $tabset['second_tab'] = array(
'#type' => 'tabpage', '#type' => 'tabpage',
'#title' => t('Read Online'), '#title' => t('Read Online'),
'#content' => "<iframe src=\"http://docs.google.com/viewer?url=". $base_url . '/fedora/repository/'. '#content' => "<iframe src=\"http://docs.google.com/viewer?url=" . $base_url . '/fedora/repository/' .
$this->pid . '/OBJ/preview.pdf'. "&embedded=TRUE\" style=\"width:600px; height:500px;\" frameborder=\"0\"></iframe>" $this->pid . '/OBJ/preview.pdf' . "&embedded=TRUE\" style=\"width:600px; height:500px;\" frameborder=\"0\"></iframe>"
); );
// Render the tabset. // Render the tabset.
return $tabset; return $tabset;
} }
/**
* Show QDC ??
* @return type
*/
function showQdc() { function showQdc() {
module_load_include('inc', 'fedora_repository', 'ObjectHelper'); module_load_include('inc', 'fedora_repository', 'ObjectHelper');
$objectHelper = new ObjectHelper(); $objectHelper = new ObjectHelper();
$content=$objectHelper->getQDC($this->pid); $content = $objectHelper->getQDC($this->pid);
$collection_fieldset = array( $collection_fieldset = array(
'#title' => t('Description'), '#title' => t('Description'),
'#collapsible' => TRUE, '#collapsible' => TRUE,
@ -123,29 +154,35 @@ class ShowStreamsInFieldSets {
return theme('fieldset', $collection_fieldset); return theme('fieldset', $collection_fieldset);
} }
/**
* Show Object Link ??
* @global type $base_url
* @return type
*/
function showOBJLink() { function showOBJLink() {
global $base_url; global $base_url;
module_load_include('inc', 'fedora_repository', 'api/fedora_item'); module_load_include('inc', 'fedora_repository', 'api/fedora_item');
$item = new Fedora_Item($this->pid); $item = new Fedora_Item($this->pid);
$streams = $item->get_datastreams_list_as_array(); $streams = $item->get_datastreams_list_as_array();
return "<a href='". $base_url ."/fedora/repository/". $this->pid ."/OBJ/". $streams['OBJ']['label'] ."'>". $streams['OBJ']['label'] ."</a>"; return "<a href='" . $base_url . "/fedora/repository/" . $this->pid . "/OBJ/" . $streams['OBJ']['label'] . "'>" . $streams['OBJ']['label'] . "</a>";
} }
/**
* Show REF works ??
* @return type
*/
function showRefworks() { function showRefworks() {
$path=drupal_get_path('module', 'fedora_repository'); $path = drupal_get_path('module', 'fedora_repository');
module_load_include('inc', 'fedora_repository', 'ObjectHelper'); module_load_include('inc', 'fedora_repository', 'ObjectHelper');
$collectionHelper = new CollectionClass(); $collectionHelper = new CollectionClass();
$xmlstr=$collectionHelper->getStream($this->pid, "refworks"); $xmlstr = $collectionHelper->getStream($this->pid, "refworks");
html_entity_decode($xmlstr); html_entity_decode($xmlstr);
if ($xmlstr == NULL || strlen($xmlstr) < 5) { if ($xmlstr == NULL || strlen($xmlstr) < 5) {
return " "; return " ";
} }
try { try {
$proc = new XsltProcessor(); $proc = new XsltProcessor();
} } catch (Exception $e) {
catch (Exception $e) {
drupal_set_message(t("!e", array('!e' => $e->getMessage())), 'error'); drupal_set_message(t("!e", array('!e' => $e->getMessage())), 'error');
return " "; return " ";
} }
@ -165,9 +202,14 @@ class ShowStreamsInFieldSets {
return theme('fieldset', $collection_fieldset); return theme('fieldset', $collection_fieldset);
} }
/**
* Show JP2000
* @param type $collapsed
* @return type
*/
function showJP2($collapsed = FALSE) { function showJP2($collapsed = FALSE) {
$viewer_url = variable_get('fedora_base_url', '') . '/get/'. $this->pid . '/ilives:viewerSdef/getViewer'; $viewer_url = variable_get('fedora_base_url', '') . '/get/' . $this->pid . '/ilives:viewerSdef/getViewer';
$html = '<iframe src="'. $viewer_url . '" frameborder="0" style="width: 100%; height: 400px;">Errors: unable to load viewer</iframe>'; $html = '<iframe src="' . $viewer_url . '" frameborder="0" style="width: 100%; height: 400px;">Errors: unable to load viewer</iframe>';
$fieldset = array( $fieldset = array(
'#title' => t('Viewer'), '#title' => t('Viewer'),
'#collapsible' => TRUE, '#collapsible' => TRUE,
@ -177,6 +219,11 @@ class ShowStreamsInFieldSets {
return theme('fieldset', $fieldset); return theme('fieldset', $fieldset);
} }
/**
* Show Romeo ??
* @param type $collapsed
* @return type
*/
function showRomeo($collapsed = FALSE) { function showRomeo($collapsed = FALSE) {
$path = drupal_get_path('module', 'Fedora_Repository'); $path = drupal_get_path('module', 'Fedora_Repository');
module_load_include('inc', 'fedora_repository', 'CollectionClass'); module_load_include('inc', 'fedora_repository', 'CollectionClass');
@ -189,8 +236,7 @@ class ShowStreamsInFieldSets {
try { try {
$proc = new XsltProcessor(); $proc = new XsltProcessor();
} } catch (Exception $e) {
catch (Exception $e) {
drupal_set_message(t("!e", array('!e' => $e->getMessage())), 'error'); drupal_set_message(t("!e", array('!e' => $e->getMessage())), 'error');
return; return;
} }
@ -210,4 +256,5 @@ class ShowStreamsInFieldSets {
); );
return theme('fieldset', $collection_fieldset); return theme('fieldset', $collection_fieldset);
} }
} }

33
plugins/fedoraObject.inc

@ -1,7 +1,22 @@
<?php <?php
// $Id$
/**
* @file
* FedoraObject class
*/
/**
* Fedora Object class ??
*/
class FedoraObject { class FedoraObject {
function __construct($pid = '') {
/**
* Constructor
* @param type $pid
*/
function __construct($pid = '') {
module_load_include('inc', 'fedora_repository', 'api/fedora_item'); module_load_include('inc', 'fedora_repository', 'api/fedora_item');
if (!empty($pid)) { if (!empty($pid)) {
@ -9,7 +24,12 @@ class FedoraObject {
$this->item = new Fedora_Item($pid); $this->item = new Fedora_Item($pid);
} }
} }
/**
* Show Field Sets
* @global type $user
* @return type
*/
public function showFieldSets() { public function showFieldSets() {
global $user; global $user;
$objectHelper = new ObjectHelper(); $objectHelper = new ObjectHelper();
@ -27,16 +47,16 @@ class FedoraObject {
'#type' => 'tabset', '#type' => 'tabset',
); );
$dc_html = $objectHelper->getFormattedDC($this->item); $dc_html = $objectHelper->getFormattedDC($this->item);
$ds_list = $objectHelper->get_formatted_datastream_list($this->pid, NULL, $this->item); $ds_list = $objectHelper->get_formatted_datastream_list($this->pid, NULL, $this->item);
$tabset['fedora_object_details']['tabset']['view'] = array( $tabset['fedora_object_details']['tabset']['view'] = array(
'#type' => 'tabpage', '#type' => 'tabpage',
'#title' => t('View'), '#title' => t('View'),
'#content' => $dc_html . $ds_list . $purge_form, '#content' => $dc_html . $ds_list . $purge_form,
); );
if (fedora_repository_access(OBJECTHELPER :: $EDIT_FEDORA_METADATA, $this->pid, $user)) { if (fedora_repository_access(OBJECTHELPER :: $EDIT_FEDORA_METADATA, $this->pid, $user)) {
$editform = drupal_get_form('fedora_repository_edit_qdc_form', $this->pid, 'DC'); $editform = drupal_get_form('fedora_repository_edit_qdc_form', $this->pid, 'DC');
$tabset['fedora_object_details']['tabset']['edit'] = array( $tabset['fedora_object_details']['tabset']['edit'] = array(
@ -46,7 +66,8 @@ class FedoraObject {
'#content' => $editform, '#content' => $editform,
); );
} }
return $tabset; return $tabset;
} }
} }

83
plugins/herbarium.inc

@ -2,8 +2,17 @@
// $Id$ // $Id$
/**
* @file
* Herbarium class
*/
/**
* Herbarium ???
*/
class Herbarium { class Herbarium {
function __construct($pid = '') {
function __construct($pid = '') {
module_load_include('inc', 'fedora_repository', 'api/fedora_item'); module_load_include('inc', 'fedora_repository', 'api/fedora_item');
if (!empty($pid)) { if (!empty($pid)) {
$this->pid = $pid; $this->pid = $pid;
@ -11,15 +20,26 @@ class Herbarium {
} }
} }
/**
* Build a drupal form ??
* @param type $form
* @param type $form_state
* @return type
*/
public function buildDrupalForm($form = array(), $form_state = array()) { public function buildDrupalForm($form = array(), $form_state = array()) {
// We don't need to add anything beyond the standard Darwin Core form so just pass this through // We don't need to add anything beyond the standard Darwin Core form so just pass this through
// If we wanted to we could add other fields. // If we wanted to we could add other fields.
module_load_include('inc', 'fedora_repository', 'plugins/DarwinCore'); module_load_include('inc', 'fedora_repository', 'plugins/DarwinCore');
$dwc = new DarwinCore($this->item); $dwc = new DarwinCore($this->item);
return $dwc->buildDrupalForm($form); return $dwc->buildDrupalForm($form);
} }
/**
* Build edit metadata form
* @param type $form
* @return type
*/
public function buildEditMetadataForm($form = array()) { public function buildEditMetadataForm($form = array()) {
$form['submit'] = array( $form['submit'] = array(
'#type' => 'submit', '#type' => 'submit',
@ -34,10 +54,17 @@ class Herbarium {
'#type' => 'hidden', '#type' => 'hidden',
'#value' => "DARWIN_CORE", '#value' => "DARWIN_CORE",
); );
return $this->buildDrupalForm($form); return $this->buildDrupalForm($form);
} }
/**
* handle edit metadata form ??
* @global type $user
* @param type $form_id
* @param type $form_values
* @return type
*/
public function handleEditMetadataForm($form_id, $form_values) { public function handleEditMetadataForm($form_id, $form_values) {
/* /*
* Process the metadata form * Process the metadata form
@ -51,11 +78,15 @@ class Herbarium {
$dwc = new DarwinCore($this->item); $dwc = new DarwinCore($this->item);
$dwc->handleForm($form_values); $dwc->handleForm($form_values);
$this->item->purge_datastream('DARWIN_CORE'); $this->item->purge_datastream('DARWIN_CORE');
$this->item->add_datastream_from_string($dwc->darwinCoreXML, 'DARWIN_CORE', $this->item->add_datastream_from_string($dwc->darwinCoreXML, 'DARWIN_CORE', 'Darwin Core Metadata', 'text/xml', 'X');
'Darwin Core Metadata', 'text/xml', 'X');
return TRUE; return TRUE;
} }
/**
* Handle Ingest Form
* @global type $user
* @param type $form_values
*/
public function handleIngestForm($form_values) { public function handleIngestForm($form_values) {
/* /*
* process the metadata form * process the metadata form
@ -70,51 +101,52 @@ class Herbarium {
$dwc = new DarwinCore(); $dwc = new DarwinCore();
$dwc->handleForm($form_values); $dwc->handleForm($form_values);
$label = $form_values['dwc:institutionCode'] . ':' $label = $form_values['dwc:institutionCode'] . ':'
. $form_values['dwc:collectionCode'] . ':' . $form_values['dwc:collectionCode'] . ':'
. $form_values['dwc:catalogNumber']; . $form_values['dwc:catalogNumber'];
$new_item = Fedora_Item::ingest_new_item($form_values['pid'], 'A', $label, $new_item = Fedora_Item::ingest_new_item($form_values['pid'], 'A', $label, $user->name);
$user->name);
$new_item->add_datastream_from_string($dwc->darwinCoreXML, 'DARWIN_CORE', $new_item->add_datastream_from_string($dwc->darwinCoreXML, 'DARWIN_CORE', 'Darwin Core Metadata', 'text/xml', 'X');
'Darwin Core Metadata', 'text/xml', 'X');
$file = $form_values['ingest-file-location']; $file = $form_values['ingest-file-location'];
if (!empty( $file)) { if (!empty($file)) {
$dformat = $mimetype->getType($file); $dformat = $mimetype->getType($file);
$new_item->add_datastream_from_file($file, 'FULL_SIZE', $new_item->add_datastream_from_file($file, 'FULL_SIZE', "$label-full-size", $dformat, 'M');
"$label-full-size", $dformat, 'M');
} }
$new_item->add_relationship('hasModel', $form_values['content_model_pid'], FEDORA_MODEL_URI); $new_item->add_relationship('hasModel', $form_values['content_model_pid'], FEDORA_MODEL_URI);
$new_item->add_relationship(!empty($form_values['relationship']) ? $form_values['relationship'] : 'isMemberOfCollection', $form_values['collection_pid']); $new_item->add_relationship(!empty($form_values['relationship']) ? $form_values['relationship'] : 'isMemberOfCollection', $form_values['collection_pid']);
if (!empty($_SESSION['fedora_ingest_files'])) { if (!empty($_SESSION['fedora_ingest_files'])) {
foreach ($_SESSION['fedora_ingest_files'] as $dsid => $created_file) { foreach ($_SESSION['fedora_ingest_files'] as $dsid => $created_file) {
$created_file_format = $mimetype->getType($created_file); $created_file_format = $mimetype->getType($created_file);
$created_filename = strstr($created_file, $file); $created_filename = strstr($created_file, $file);
$new_item->add_datastream_from_file($created_file, $dsid, $new_item->add_datastream_from_file($created_file, $dsid, $created_filename, $created_file_format, 'M');
$created_filename, $created_file_format, 'M');
} }
} }
} }
/**
* Show Field Sets
* @global type $base_url
* @global type $user
* @return string
*/
public function showFieldSets() { public function showFieldSets() {
module_load_include('inc', 'fedora_repository', 'plugins/tagging_form'); module_load_include('inc', 'fedora_repository', 'plugins/tagging_form');
module_load_include('inc', 'fedora_repository', 'plugins/DarwinCore'); module_load_include('inc', 'fedora_repository', 'plugins/DarwinCore');
global $base_url; global $base_url;
$tabset = array(); $tabset = array();
global $user; global $user;
$qs = ''; $qs = '';
if ($user->uid != 0) { if ($user->uid != 0) {
$qs = '?uid='. base64_encode($user->name . ':'. $user->pass); $qs = '?uid=' . base64_encode($user->name . ':' . $user->pass);
} }
$viewer_url = variable_get('fedora_base_url', '') . '/get/'. $this->pid . '/ilives:viewerSdef/getViewer'. $qs; $viewer_url = variable_get('fedora_base_url', '') . '/get/' . $this->pid . '/ilives:viewerSdef/getViewer' . $qs;
$html = '<iframe src="'. $viewer_url . '" scrolling="no" frameborder="0" style="width: 100%; height: 800px;">Errors: unable to load viewer</iframe>'; $html = '<iframe src="' . $viewer_url . '" scrolling="no" frameborder="0" style="width: 100%; height: 800px;">Errors: unable to load viewer</iframe>';
$tabset['second_tab'] = array( $tabset['second_tab'] = array(
// $collection_fieldset = array ( // $collection_fieldset = array (
'#type' => 'tabpage', '#type' => 'tabpage',
@ -126,8 +158,8 @@ class Herbarium {
'#type' => 'tabpage', '#type' => 'tabpage',
'#title' => t('View'), '#title' => t('View'),
// This will be the content of the tab. // This will be the content of the tab.
'#content' => '<a href="'. $base_url . '/fedora/repository/'. $this->pid . '/FULL_JPG/"><img src="'. $base_url . '/fedora/imageapi/'. '#content' => '<a href="' . $base_url . '/fedora/repository/' . $this->pid . '/FULL_JPG/"><img src="' . $base_url . '/fedora/imageapi/' .
$this->pid . '/JPG/JPG.jpg'. '" /></a>'. '<p>'. drupal_get_form('fedora_repository_image_tagging_form', $this->pid) . '</p>', $this->pid . '/JPG/JPG.jpg' . '" /></a>' . '<p>' . drupal_get_form('fedora_repository_image_tagging_form', $this->pid) . '</p>',
); );
$dwc = new DarwinCore($this->item); $dwc = new DarwinCore($this->item);
@ -138,7 +170,7 @@ class Herbarium {
$tabset['third_tab']['tabset'] = array( $tabset['third_tab']['tabset'] = array(
'#type' => 'tabset', '#type' => 'tabset',
); );
$tabset['third_tab']['tabset']['view'] = array( $tabset['third_tab']['tabset']['view'] = array(
'#type' => 'tabpage', '#type' => 'tabpage',
'#title' => t('Darwin Core'), '#title' => t('Darwin Core'),
@ -168,4 +200,5 @@ class Herbarium {
} }
return $tabset; return $tabset;
} }
} }

29
plugins/map_viewer.inc

@ -1,13 +1,33 @@
<?php <?php
// $Id$ // $Id$
/**
* @file
* ShowMapStreamsInFieldSets class
*/
/**
* Show Map Streams in Field Sets Class ??
*/
class ShowMapStreamsInFieldSets { class ShowMapStreamsInFieldSets {
private $pid =NULL;
private $pid = NULL;
/**
* Constructor
* @param type $pid
*/
function ShowMapStreamsInFieldSets($pid) { function ShowMapStreamsInFieldSets($pid) {
$this->pid = $pid; $this->pid = $pid;
} }
/**
* Show JPEG
* @global type $base_url
* @global type $user
* @return type
*/
function showJPG() { function showJPG() {
module_load_include('inc', 'fedora_repository', 'plugins/tagging_form'); module_load_include('inc', 'fedora_repository', 'plugins/tagging_form');
module_load_include('inc', 'fedora_repository', 'plugins/ShowStreamsInFieldSets'); module_load_include('inc', 'fedora_repository', 'plugins/ShowStreamsInFieldSets');
@ -27,8 +47,8 @@ class ShowMapStreamsInFieldSets {
$qs = '?uid=' . base64_encode($user->name . ':' . $user->pass); $qs = '?uid=' . base64_encode($user->name . ':' . $user->pass);
} }
$viewer_url = variable_get('fedora_base_url', '') . '/get/'. $this->pid . '/ilives:viewerSdef/getViewer'. $qs; $viewer_url = variable_get('fedora_base_url', '') . '/get/' . $this->pid . '/ilives:viewerSdef/getViewer' . $qs;
$html = '<iframe src="'. $viewer_url . '" scrolling="no" frameborder="0" style="width: 100%; height: 800px;">Errors: unable to load viewer</iframe>'; $html = '<iframe src="' . $viewer_url . '" scrolling="no" frameborder="0" style="width: 100%; height: 800px;">Errors: unable to load viewer</iframe>';
drupal_add_css(path_to_theme() . '/header-viewer.css', 'theme'); drupal_add_css(path_to_theme() . '/header-viewer.css', 'theme');
drupal_add_css(drupal_get_path('module', 'fedora_repository') . '/js/iiv/css/jquery-ui/smoothness/jquery-ui-1.7.2.custom.css'); drupal_add_css(drupal_get_path('module', 'fedora_repository') . '/js/iiv/css/jquery-ui/smoothness/jquery-ui-1.7.2.custom.css');
@ -46,9 +66,10 @@ class ShowMapStreamsInFieldSets {
'#type' => 'tabpage', '#type' => 'tabpage',
'#title' => t('Description'), '#title' => t('Description'),
'#content' => $item->get_dissemination('islandora:mods2htmlSdef', 'mods2html') '#content' => $item->get_dissemination('islandora:mods2htmlSdef', 'mods2html')
. $objectHelper->get_formatted_datastream_list($this->pid, NULL, $item), . $objectHelper->get_formatted_datastream_list($this->pid, NULL, $item),
); );
// Render the tabset. // Render the tabset.
return tabs_render($tabset); return tabs_render($tabset);
} }
} }

140
plugins/qt_viewer.inc

@ -1,60 +1,96 @@
<?php <?php
// $Id$ // $Id$
/**
* @file
* ShowQTStreamsInFieldSets class
*/
/**
* Show QT Stream in Field Sets
*/
class ShowQtStreamsInFieldSets { class ShowQtStreamsInFieldSets {
private $pid =NULL;
private $pid = NULL;
/**
* Constructor
* @param type $pid
*/
function ShowQtStreamsInFieldSets($pid) { function ShowQtStreamsInFieldSets($pid) {
$this->pid = $pid; $this->pid = $pid;
} }
/**
* Returna a new Fedora Object with the QT movie ???
* @return fedora_item
*/
function fedoraObject() { function fedoraObject() {
return new fedora_item($this->pid); return new fedora_item($this->pid);
} }
/**
* Tecnical metadata ??
* @param type $defaults
* @param type $dsid
* @return type
*/
function technicalMetadata($defaults = array(), $dsid = 'OBJ_EXIFTOOL') { function technicalMetadata($defaults = array(), $dsid = 'OBJ_EXIFTOOL') {
$data = $defaults; $data = $defaults;
try { try {
$src = ObjectHelper::getStream($this->pid, $dsid); $src = ObjectHelper::getStream($this->pid, $dsid);
$doc = new SimpleXMLElement($src); $doc = new SimpleXMLElement($src);
$doc->registerXPathNamespace('File', 'http://ns.exiftool.ca/File/1.0/'); $doc->registerXPathNamespace('File', 'http://ns.exiftool.ca/File/1.0/');
$doc->registerXPathNamespace('Composite', 'http://ns.exiftool.ca/Composite/1.0/'); $doc->registerXPathNamespace('Composite', 'http://ns.exiftool.ca/Composite/1.0/');
$mime = reset($doc->xpath('//File:MIMEType')); $mime = reset($doc->xpath('//File:MIMEType'));
$data['mime'] = $mime; $data['mime'] = $mime;
if(strpos($mime, 'audio/') !== false) { if (strpos($mime, 'audio/') !== false) {
$data['width'] = 300; $data['width'] = 300;
$data['height'] = 0; $data['height'] = 0;
} else { }
$size = reset($doc->xpath('//Composite:ImageSize/text()')); else {
list($width, $height) = explode('x', $size); $size = reset($doc->xpath('//Composite:ImageSize/text()'));
$data['width'] = $width; list($width, $height) = explode('x', $size);
$data['height'] = $height; $data['width'] = $width;
} $data['height'] = $height;
}
$data['doc'] = $src; $data['doc'] = $src;
} catch(Exception $e) { } catch (Exception $e) {
$data = $defaults; $data = $defaults;
} }
return $data; return $data;
} }
/**
* Get Poster Frame Datastream Information ??
* @param type $dsid
* @return type
*/
function getPosterFrameDatastreamInfo($dsid = 'FULL_SIZE') { function getPosterFrameDatastreamInfo($dsid = 'FULL_SIZE') {
$p = ObjectHelper::getDatastreamInfo($this->pid, $dsid); $p = ObjectHelper::getDatastreamInfo($this->pid, $dsid);
if(empty($p) || $p == ' ' || $p === false) { if (empty($p) || $p == ' ' || $p === false) {
return false; return false;
} }
return $p; return $p;
} }
/**
* Get Media Datastream Information ??
* @param type $dsid
* @param type $alt
* @return type
*/
function getMediaDatastreamInfo($dsid = 'OBJ', $alt = array('')) { function getMediaDatastreamInfo($dsid = 'OBJ', $alt = array('')) {
$p = ObjectHelper::getDatastreamInfo($this->pid, $dsid); $p = ObjectHelper::getDatastreamInfo($this->pid, $dsid);
if(empty($p) || $p == ' ' || $p === false) { if (empty($p) || $p == ' ' || $p === false) {
if(!empty($alt)) { if (!empty($alt)) {
$ds = array_shift($alt); $ds = array_shift($alt);
return $this->getMediaDatastreamInfo($ds, $alt); return $this->getMediaDatastreamInfo($ds, $alt);
} }
return false; return false;
} }
@ -62,10 +98,19 @@ class ShowQtStreamsInFieldSets {
return $p; return $p;
} }
/**
* Is download enabled. It always returns false. ???
* @return FALSE
*/
function enableDownload() { function enableDownload() {
return false; return false;
} }
/**
* Show the QT ???
* @global type $base_url
* @return type
*/
function showQt() { function showQt() {
module_load_include('inc', 'fedora_repository', 'plugins/tagging_form'); module_load_include('inc', 'fedora_repository', 'plugins/tagging_form');
module_load_include('inc', 'fedora_repository', 'plugins/ShowStreamsInFieldSets'); module_load_include('inc', 'fedora_repository', 'plugins/ShowStreamsInFieldSets');
@ -77,32 +122,32 @@ class ShowQtStreamsInFieldSets {
$pframe = $this->getPosterFrameDatastreamInfo(); $pframe = $this->getPosterFrameDatastreamInfo();
$media = $this->getMediaDatastreamInfo('PROXY', array('OBJ')); $media = $this->getMediaDatastreamInfo('PROXY', array('OBJ'));
if($media === false ) { if ($media === false) {
return ''; return '';
} }
global $base_url; global $base_url;
$path = drupal_get_path('module', 'Fedora_Repository'); $path = drupal_get_path('module', 'Fedora_Repository');
$fullPath=base_path().$path; $fullPath = base_path() . $path;
$content= ''; $content = '';
$pathTojs = drupal_get_path('module', 'Fedora_Repository').'/js/AC_Quicktime.js'; $pathTojs = drupal_get_path('module', 'Fedora_Repository') . '/js/AC_Quicktime.js';
drupal_add_js($pathTojs); drupal_add_js($pathTojs);
$divid = 'player'.md5($this->pid).'MOV'; $divid = 'player' . md5($this->pid) . 'MOV';
$content .= '<div class="player" id="' . $divid .'">'; $content .= '<div class="player" id="' . $divid . '">';
if($pframe !== false) { if ($pframe !== false) {
$content .= '<div class="poster" style="cursor: pointer; position: relative; width: ' . $width .'px; min-height: ' . ($height) . 'px;">'; $content .= '<div class="poster" style="cursor: pointer; position: relative; width: ' . $width . 'px; min-height: ' . ($height) . 'px;">';
$content .= '<img src="' . base_path().'fedora/repository/'.$this->pid.'/'. $pframe->ID . '/poster.jpg' . '" />'; $content .= '<img src="' . base_path() . 'fedora/repository/' . $this->pid . '/' . $pframe->ID . '/poster.jpg' . '" />';
$content .= '<div class="play" style="font-size: 128px; color: white; position: absolute; top: 50%; left: 50%; margin-top: -0.085em; margin-left: -0.33em; opacity: 0.9; "></div>'; $content .= '<div class="play" style="font-size: 128px; color: white; position: absolute; top: 50%; left: 50%; margin-top: -0.085em; margin-left: -0.33em; opacity: 0.9; "></div>';
$content .= '</div>'; $content .= '</div>';
} }
$content .= '</div>'; $content .= '</div>';
if($this->enableDownload()) { if ($this->enableDownload()) {
$url = base_path().'fedora/repository/'.$this->pid.'/OBJ/MOV.mov'; $url = base_path() . 'fedora/repository/' . $this->pid . '/OBJ/MOV.mov';
$content .= '<a class="download" href="' . $url . '">Download Media File</a>'; $content .= '<a class="download" href="' . $url . '">Download Media File</a>';
} }
$src = base_path().'fedora/repository/'.$this->pid.'/' . $media->ID. '/MOV.mov'; $src = base_path() . 'fedora/repository/' . $this->pid . '/' . $media->ID . '/MOV.mov';
$qtparams = ''; $qtparams = '';
$qtparams .= "'autostart', '" . ($pframe !== false ? 'true' : 'false') . "', "; $qtparams .= "'autostart', '" . ($pframe !== false ? 'true' : 'false') . "', ";
$init = <<<EOD $init = <<<EOD
$(function() { $(function() {
src = "$src"; src = "$src";
@ -126,13 +171,14 @@ $qtparams = '';
}); });
EOD; EOD;
drupal_add_js($init, 'inline', 'footer'); drupal_add_js($init, 'inline', 'footer');
$collection_fieldset = array(
'#title' => t('Quicktime'),
'#collapsible' => TRUE,
'#collapsed' => FALSE,
'#value' => $content);
return theme('fieldset', $collection_fieldset);
}
$collection_fieldset = array(
'#title' => t('Quicktime'),
'#collapsible' => TRUE,
'#collapsed' => FALSE,
'#value' => $content);
return theme('fieldset',$collection_fieldset);
}
} }

34
plugins/slide_viewer.inc

@ -1,15 +1,34 @@
<?php <?php
// $Id$ // $Id$
/**
* @file
* ShowSlideStreamsInFieldSets class
*/
/**
* ShowSlideStreamInFieldSets ??????
*/
class ShowSlideStreamsInFieldSets { class ShowSlideStreamsInFieldSets {
private $pid = NULL; private $pid = NULL;
/**
* Contructor
* @param type $pid
*/
function ShowSlideStreamsInFieldSets($pid) { function ShowSlideStreamsInFieldSets($pid) {
//drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); //drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
$this->pid = $pid; $this->pid = $pid;
} }
/**
* Show JPEG
* @global type $base_url
* @global type $user
* @return type
*/
function showJPG() { function showJPG() {
module_load_include('inc', 'fedora_repository', 'plugins/tagging_form'); module_load_include('inc', 'fedora_repository', 'plugins/tagging_form');
module_load_include('inc', 'fedora_repository', 'plugins/ShowStreamsInFieldSets'); module_load_include('inc', 'fedora_repository', 'plugins/ShowStreamsInFieldSets');
@ -17,14 +36,14 @@ class ShowSlideStreamsInFieldSets {
global $user; global $user;
$tabset = array(); $tabset = array();
$qs = ''; $qs = '';
if ($user->uid != 0) { if ($user->uid != 0) {
$qs = '?uid=' . base64_encode($user->name . ':' . $user->pass); $qs = '?uid=' . base64_encode($user->name . ':' . $user->pass);
} }
$viewer_url = variable_get('fedora_base_url', 'http://localhost:8080/fedora') . '/get/'. $this->pid . '/ilives:viewerSdef/getViewer'. $qs; $viewer_url = variable_get('fedora_base_url', 'http://localhost:8080/fedora') . '/get/' . $this->pid . '/ilives:viewerSdef/getViewer' . $qs;
$html = '<iframe src="'. $viewer_url . '" scrolling="no" frameborder="0" style="width: 100%; height: 800px;">Errors: unable to load viewer</iframe>'; $html = '<iframe src="' . $viewer_url . '" scrolling="no" frameborder="0" style="width: 100%; height: 800px;">Errors: unable to load viewer</iframe>';
drupal_add_css(path_to_theme() . '/header-viewer.css', 'theme'); drupal_add_css(path_to_theme() . '/header-viewer.css', 'theme');
@ -38,10 +57,11 @@ class ShowSlideStreamsInFieldSets {
'#type' => 'tabpage', '#type' => 'tabpage',
'#title' => t('View'), '#title' => t('View'),
// This will be the content of the tab. // This will be the content of the tab.
'#content' => '<img src="'. $base_url . '#content' => '<img src="' . $base_url .
'/fedora/imageapi/'. $this->pid . '/JPG/JPG.jpg'. '" />'. '<p>'. drupal_get_form('fedora_repository_image_tagging_form', $this->pid) . '</p>', '/fedora/imageapi/' . $this->pid . '/JPG/JPG.jpg' . '" />' . '<p>' . drupal_get_form('fedora_repository_image_tagging_form', $this->pid) . '</p>',
); );
return $tabset; return $tabset;
} }
} }

44
plugins/tagging_form.inc

@ -1,11 +1,21 @@
<?php <?php
// $Id$ // $Id$
/* /**
* @file
* Tagging Form???
*/
/*
* To change this template, choose Tools | Templates * To change this template, choose Tools | Templates
* and open the template in the editor. * and open the template in the editor.
*/ */
/**
* Show subject tags ???
* @param type $pid
* @return string
*/
function _show_subject_tags($pid) { function _show_subject_tags($pid) {
module_load_include('inc', 'fedora_repository', 'api/fedora_item'); module_load_include('inc', 'fedora_repository', 'api/fedora_item');
module_load_include('inc', 'fedora_repository', 'api/dublin_core'); module_load_include('inc', 'fedora_repository', 'api/dublin_core');
@ -15,13 +25,20 @@ function _show_subject_tags($pid) {
if (!empty($tags->tags)) { if (!empty($tags->tags)) {
$output = "<ul>"; $output = "<ul>";
foreach ($tags->tags as $tag) { foreach ($tags->tags as $tag) {
$output .= "<li title=". $tag['creator'] . '>'. $tag['name'] . '</li> '; $output .= "<li title=" . $tag['creator'] . '>' . $tag['name'] . '</li> ';
} }
$output .= "</ul>"; $output .= "</ul>";
} }
return $output; return $output;
} }
/**
* Fedora repository image tagging form ????
* @global type $base_url
* @param type $form_state
* @param type $pid
* @return type
*/
function fedora_repository_image_tagging_form($form_state, $pid) { function fedora_repository_image_tagging_form($form_state, $pid) {
module_load_include('inc', 'fedora_repository', 'api/fedora_item'); module_load_include('inc', 'fedora_repository', 'api/fedora_item');
module_load_include('inc', 'fedora_repository', 'api/dublin_core'); module_load_include('inc', 'fedora_repository', 'api/dublin_core');
@ -29,7 +46,7 @@ function fedora_repository_image_tagging_form($form_state, $pid) {
global $base_url; global $base_url;
if (!empty($form_state['post']['pid'])) { if (!empty($form_state['post']['pid'])) {
$pid = $form_state['post']['pid']; $pid = $form_state['post']['pid'];
} }
$obj = new Fedora_Item($pid); $obj = new Fedora_Item($pid);
$form['tags-wrapper'] = array( $form['tags-wrapper'] = array(
@ -49,8 +66,8 @@ function fedora_repository_image_tagging_form($form_state, $pid) {
'#prefix' => '<li>', '#prefix' => '<li>',
'#suffix' => '</li>', '#suffix' => '</li>',
); );
$form['tags-wrapper']['tags'][$tag['name']]['tag'] = array( $form['tags-wrapper']['tags'][$tag['name']]['tag'] = array(
'#prefix' => '<a title="Added by '. $tag['creator'] . '" href="'. $base_url . '/fedora/repository/mnpl_advanced_search/tag:'. $tag['name'] . '">', '#prefix' => '<a title="Added by ' . $tag['creator'] . '" href="' . $base_url . '/fedora/repository/mnpl_advanced_search/tag:' . $tag['name'] . '">',
'#value' => $tag['name'], '#value' => $tag['name'],
'#suffix' => '</a>', '#suffix' => '</a>',
); );
@ -58,7 +75,7 @@ function fedora_repository_image_tagging_form($form_state, $pid) {
// Delete button for each existing tag. // Delete button for each existing tag.
$form['tags-wrapper']['tags'][$tag['name']]['delete'] = array( $form['tags-wrapper']['tags'][$tag['name']]['delete'] = array(
'#type' => 'imagebutton', '#type' => 'imagebutton',
'#image' => $base_url . '/'. drupal_get_path('module', 'fedora_repository') . '/images/remove_icon.png', '#image' => $base_url . '/' . drupal_get_path('module', 'fedora_repository') . '/images/remove_icon.png',
'#default_value' => $tag['name'], '#default_value' => $tag['name'],
'#title' => t('Delete this tag'), '#title' => t('Delete this tag'),
); );
@ -84,10 +101,15 @@ function fedora_repository_image_tagging_form($form_state, $pid) {
if (empty($form_state['pid'])) { if (empty($form_state['pid'])) {
$form_state['pid'] = $pid; $form_state['pid'] = $pid;
} }
return $form; return $form;
} }
/**
* Hook image button process ???
* @param type $form
* @return string
*/
function hook_imagebutton_process($form) { function hook_imagebutton_process($form) {
$form['op_x'] = array( $form['op_x'] = array(
'#name' => $form['#name'] . '_x', '#name' => $form['#name'] . '_x',
@ -98,6 +120,12 @@ function hook_imagebutton_process($form) {
return $form; return $form;
} }
/**
* Fedora repository image tagging from submit ???
* @global type $user
* @param type $form
* @param type $form_state
*/
function fedora_repository_image_tagging_form_submit($form, &$form_state) { function fedora_repository_image_tagging_form_submit($form, &$form_state) {
module_load_include('inc', 'fedora_repository', 'api/fedora_item'); module_load_include('inc', 'fedora_repository', 'api/fedora_item');
module_load_include('inc', 'fedora_repository', 'api/tagging'); module_load_include('inc', 'fedora_repository', 'api/tagging');
@ -110,7 +138,7 @@ function fedora_repository_image_tagging_form_submit($form, &$form_state) {
array_push($tagset->tags, array('name' => $form_state['values']['addtag'], 'creator' => $user->name)); array_push($tagset->tags, array('name' => $form_state['values']['addtag'], 'creator' => $user->name));
} }
elseif (!empty($form_state['values']['delete'])) { elseif (!empty($form_state['values']['delete'])) {
for ( $i=0; $i < count($tagset->tags); $i++ ) { for ($i = 0; $i < count($tagset->tags); $i++) {
if ($tagset->tags[$i]['name'] == $form_state['clicked_button']['#value']) { if ($tagset->tags[$i]['name'] == $form_state['clicked_button']['#value']) {
unset($tagset->tags[$i]); unset($tagset->tags[$i]);
} }

Loading…
Cancel
Save