Browse Source

Allows namespace lockdown from settings.php

pull/105/head
Alan Stanley 14 years ago
parent
commit
026d16222a
  1. 6
      ObjectHelper.inc
  2. 272
      api/fedora_item.inc
  3. 346
      fedora_repository.module
  4. 701
      formClass.inc

6
ObjectHelper.inc

@ -611,7 +611,7 @@ class ObjectHelper {
$returnValue = FALSE;
$isRestricted = variable_get('fedora_namespace_restriction_enforced', TRUE);
if (!$isRestricted) {
$returnValue = TRUE;
$namespaceAccess = TRUE;
}
if ($pid == NULL) {
$pid = variable_get('fedora_repository_pid', 'islandora:top');
@ -621,10 +621,10 @@ class ObjectHelper {
foreach ($nameSpaceAllowed as $nameSpace) {
$pos = stripos($pid, $nameSpace);
if ($pos === 0) {
$returnValue = TRUE;
$namespaceAccess = TRUE;
}
}
if ($returnValue) {
if ($namespaceAccess) {
$user_access = user_access($op);
if ($user_access == NULL) {
return FALSE;

272
api/fedora_item.inc

@ -2,19 +2,18 @@
// $Id$
define ('RELS_EXT_URI', 'info:fedora/fedora-system:def/relations-external#');
define ("FEDORA_MODEL_URI", 'info:fedora/fedora-system:def/model#');
define('RELS_EXT_URI', 'info:fedora/fedora-system:def/relations-external#');
define("FEDORA_MODEL_URI", 'info:fedora/fedora-system:def/model#');
class Fedora_Item {
public $pid = NULL; // The $pid of the fedora object represented by an instance of this class.
public $objectProfile = NULL;
private $datastreams_list = NULL; // A SimpleXML object to store a list of this item's datastreams
public $datastreams = NULL;
private static $connection_helper = NULL;
private static $instantiated_pids = array();
/**
* Create an object to represent an item in the Fedora repository.
* Throws a SOAPException if the PID is not in the repository.
@ -29,32 +28,34 @@ class Fedora_Item {
$this->pid = $pid;
if (isset(Fedora_Item::$instantiated_pids[$pid])) {
$this->objectProfile =& Fedora_Item::$instantiated_pids[$pid]->objectProfile;
$this->datastreams =& Fedora_Item::$instantiated_pids[$pid]->datastreams;
$this->datastreams_list =& Fedora_Item::$instantiated_pids[$pid]->datastreams_list;
} else {
$this->objectProfile = & Fedora_Item::$instantiated_pids[$pid]->objectProfile;
$this->datastreams = & Fedora_Item::$instantiated_pids[$pid]->datastreams;
$this->datastreams_list = & Fedora_Item::$instantiated_pids[$pid]->datastreams_list;
}
else {
if (empty(self::$connection_helper)) {
self::$connection_helper = new ConnectionHelper();
self::$connection_helper = new ConnectionHelper();
}
$raw_objprofile = $this->soap_call('getObjectProfile', array('pid' => $this->pid, 'asOfDateTime' => ""));
if (!empty($raw_objprofile)) {
$this->objectProfile = $raw_objprofile->objectProfile;
$this->datastreams = $this->get_datastreams_list_as_array();
} else {
$this->objectProfile = '';
$this->datastreams = array();
$this->objectProfile = $raw_objprofile->objectProfile;
$this->datastreams = $this->get_datastreams_list_as_array();
}
Fedora_Item::$instantiated_pids[$pid]=&$this;
else {
$this->objectProfile = '';
$this->datastreams = array();
}
Fedora_Item::$instantiated_pids[$pid] = &$this;
}
}
function exists() {
return (!empty($this->objectProfile));
}
function add_datastream_from_file($datastream_file, $datastream_id, $datastream_label = NULL, $datastream_mimetype = '', $controlGroup = 'M',$logMessage = null) {
function add_datastream_from_file($datastream_file, $datastream_id, $datastream_label = NULL, $datastream_mimetype = '', $controlGroup = 'M', $logMessage = null) {
module_load_include('inc', 'fedora_repository', 'MimeClass');
if (empty($datastream_mimetype)) {
// Get mime type from the file extension.
@ -67,7 +68,7 @@ class Fedora_Item {
$datastream_url = drupal_urlencode($datastream_file);
$url = file_create_url($datastream_url);
$return_value = $this->add_datastream_from_url($url, $datastream_id, $datastream_label, $datastream_mimetype, $controlGroup,$logMessage);
$return_value = $this->add_datastream_from_url($url, $datastream_id, $datastream_label, $datastream_mimetype, $controlGroup, $logMessage);
if ($original_path != $datastream_file) {
file_delete($datastream_file);
@ -75,12 +76,12 @@ class Fedora_Item {
return $return_value;
}
function add_datastream_from_url($datastream_url, $datastream_id, $datastream_label = NULL, $datastream_mimetype = '', $controlGroup = 'M',$logMessage = null) {
if (empty( $datastream_label)) {
function add_datastream_from_url($datastream_url, $datastream_id, $datastream_label = NULL, $datastream_mimetype = '', $controlGroup = 'M', $logMessage = null) {
if (empty($datastream_label)) {
$datastream_label = $datastream_id;
}
$params = array(
$params = array(
'pid' => $this->pid,
'dsID' => $datastream_id,
'altIDs' => NULL,
@ -93,19 +94,19 @@ class Fedora_Item {
'dsState' => 'A',
'checksumType' => 'DISABLED',
'checksum' => 'none',
'logMessage' => ($logMessage != null)?$logMessage: 'Ingested object '. $datastream_id
'logMessage' => ($logMessage != null) ? $logMessage : 'Ingested object ' . $datastream_id
);
return $this->soap_call( 'addDataStream', $params )->datastreamID;
return $this->soap_call('addDataStream', $params)->datastreamID;
}
function add_datastream_from_string($str, $datastream_id, $datastream_label = NULL, $datastream_mimetype = 'text/xml', $controlGroup = 'M',$logMessage = null) {
function add_datastream_from_string($str, $datastream_id, $datastream_label = NULL, $datastream_mimetype = 'text/xml', $controlGroup = 'M', $logMessage = null) {
$dir = sys_get_temp_dir();
$tmpfilename = tempnam($dir, 'fedoratmp');
$tmpfile = fopen($tmpfilename, 'w');
fwrite($tmpfile, $str, strlen($str));
fclose($tmpfile);
$returnvalue = $this->add_datastream_from_file($tmpfilename, $datastream_id, $datastream_label, $datastream_mimetype, $controlGroup,$logMessage);
$returnvalue = $this->add_datastream_from_file($tmpfilename, $datastream_id, $datastream_label, $datastream_mimetype, $controlGroup, $logMessage);
unlink($tmpfilename);
return $returnvalue;
}
@ -118,10 +119,10 @@ class Fedora_Item {
*/
function add_relationship($relationship, $object, $namespaceURI = RELS_EXT_URI) {
$ds_list = $this->get_datastreams_list_as_array();
if (empty($ds_list['RELS-EXT'])) {
$this->add_datastream_from_string(' <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about="info:fedora/'. $this->pid . '">
<rdf:Description rdf:about="info:fedora/' . $this->pid . '">
</rdf:Description>
</rdf:RDF>', 'RELS-EXT', 'Fedora object-to-object relationship metadata', 'text/xml', 'X');
}
@ -133,32 +134,32 @@ class Fedora_Item {
}
$relsextxml = new DomDocument();
$relsextxml->loadXML($relsext);
$description = $relsextxml->getElementsByTagNameNS('http://www.w3.org/1999/02/22-rdf-syntax-ns#', 'Description');
if ($description->length == 0) {
$description = $relsextxml->getElementsByTagNameNS('http://www.w3.org/1999/02/22-rdf-syntax-ns#', 'description');
}
$description=$description->item(0);
$description = $description->item(0);
// Create the new relationship node.
$newrel = $relsextxml->createElementNS($namespaceURI, $relationship);
$newrel->setAttribute('rdf:resource', $object);
$description->appendChild($newrel);
$this->modify_datastream_by_value( $relsextxml->saveXML(), 'RELS-EXT', "Fedora Object-to-Object Relationship Metadata", 'text/xml');
$this->modify_datastream_by_value($relsextxml->saveXML(), 'RELS-EXT', "Fedora Object-to-Object Relationship Metadata", 'text/xml');
//print ($description->dump_node());
/*
$params = array( 'pid' => $this->pid,
'relationship' => $relationship,
'object' => $object,
'isLiteral' => FALSE,
'datatype' => '',
);
$params = array( 'pid' => $this->pid,
'relationship' => $relationship,
'object' => $object,
'isLiteral' => FALSE,
'datatype' => '',
);
return $this->soap_call( 'addRelationship', $params );
*/
return $this->soap_call( 'addRelationship', $params );
*/
}
/**
@ -205,7 +206,7 @@ class Fedora_Item {
}
}
if ($modified) {
$this->modify_datastream_by_value( $relsextxml->saveXML(), 'RELS-EXT', "Fedora Object-to-Object Relationship Metadata", 'text/xml');
$this->modify_datastream_by_value($relsextxml->saveXML(), 'RELS-EXT', "Fedora Object-to-Object Relationship Metadata", 'text/xml');
}
return $modified;
//print ($description->dump_node());
@ -231,7 +232,7 @@ class Fedora_Item {
*/
static function find_objects_by_pattern($pattern = '*', $field = 'pid', $max_results = 100, $resultFields = array()) {
module_load_include('inc', 'fedora_repository', 'api/fedora_utils');
$pattern = drupal_urlencode($pattern);
$done = FALSE;
$cursor = 0;
@ -248,8 +249,8 @@ class Fedora_Item {
$url .= "/objects?pid=true&title=truesessionToken=$session_token&resultFormat=xml&maxResults=$max_results";
}
if (count($resultFields) > 0) {
$url .= '&'.join('=true&',$resultFields).'=true';
if (count($resultFields) > 0) {
$url .= '&' . join('=true&', $resultFields) . '=true';
}
$resultxml = do_curl($url);
@ -266,15 +267,15 @@ class Fedora_Item {
$done = TRUE;
}
foreach ($resultelements->resultList->objectFields as $obj) {
$ret = (string)$obj->title;
if (count($resultFields) > 0) {
$ret = array('title' => $ret);
foreach ($resultFields as $field) {
$ret[$field]=(string)$obj->$field;
}
}
$results[(string)$obj->pid] = $ret;
$ret = (string) $obj->title;
if (count($resultFields) > 0) {
$ret = array('title' => $ret);
foreach ($resultFields as $field) {
$ret[$field] = (string) $obj->$field;
}
}
$results[(string) $obj->pid] = $ret;
$cursor++;
if ($cursor >= $max_results) {
$done = TRUE;
@ -311,24 +312,24 @@ class Fedora_Item {
'asOfDateTime' => $as_of_date_time,
);
$object = self::soap_call('getDatastream', $params);
return $object->datastream;
}
function get_datastream_history($dsid) {
$params = array(
'pid' => $this->pid,
'dsID' => $dsid
'pid' => $this->pid,
'dsID' => $dsid
);
$object = self::soap_call('getDatastreamHistory', $params);
$ret = FALSE;
if (!empty($object)) {
$ret = $object->datastream;
}
return $ret;
}
return $ret;
}
function get_dissemination($service_definition_pid, $method_name, $parameters = array(), $as_of_date_time = null) {
$params = array(
'pid' => $this->pid,
@ -365,36 +366,36 @@ class Fedora_Item {
//}
return $this->datastreams_list;
}
/**
* * DatastreamControlGroup controlGroup - String restricted to the values of "X", "M", "R", or "E" (InlineXML,Managed Content,Redirect, or External Referenced).
* String ID - The datastream ID (64 characters max).
* String versionID - The ID of the most recent datastream version
* String[] altIDs - Alternative IDs for the datastream, if any.
* String label - The Label of the datastream.
* boolean versionable - Whether the datastream is versionable.
* String MIMEType - The mime-type for the datastream, if set.
* String formatURI - The format uri for the datastream, if set.
* String createDate - The date the first version of the datastream was created.
* long size - The size of the datastream in Fedora. Only valid for inline XML metadata and managed content datastreams.
* String state - The state of the datastream. Will be "A" (active), "I" (inactive) or "D" (deleted).
* String location - If the datastream is an external reference or redirect, the url to the contents. TODO: Managed?
* String checksumType - The algorithm used to compute the checksum. One of "DEFAULT", "DISABLED", "MD5", "SHA-1", "SHA-256", "SHA-385", "SHA-512".
* String checksum - The value of the checksum represented as a hexadecimal string.
* String ID - The datastream ID (64 characters max).
* String versionID - The ID of the most recent datastream version
* String[] altIDs - Alternative IDs for the datastream, if any.
* String label - The Label of the datastream.
* boolean versionable - Whether the datastream is versionable.
* String MIMEType - The mime-type for the datastream, if set.
* String formatURI - The format uri for the datastream, if set.
* String createDate - The date the first version of the datastream was created.
* long size - The size of the datastream in Fedora. Only valid for inline XML metadata and managed content datastreams.
* String state - The state of the datastream. Will be "A" (active), "I" (inactive) or "D" (deleted).
* String location - If the datastream is an external reference or redirect, the url to the contents. TODO: Managed?
* String checksumType - The algorithm used to compute the checksum. One of "DEFAULT", "DISABLED", "MD5", "SHA-1", "SHA-256", "SHA-385", "SHA-512".
* String checksum - The value of the checksum represented as a hexadecimal string.
*
* @param string $dsid
* @return datastream object
* get the mimetype size etc. in one shot. instead of iterating throught the datastream list for what we need
*/
function get_datastream_info($dsid,$as_of_date_time = ""){
$params = array(
function get_datastream_info($dsid, $as_of_date_time = "") {
$params = array(
'pid' => $this->pid,
'dsID' => $dsid,
'dsID' => $dsid,
'asOfDateTime' => $as_of_date_time
);
return $this->soap_call('getDatastream', $params);
}
/**
@ -427,14 +428,14 @@ class Fedora_Item {
}
$ds_list[$ds->ID]['label'] = $ds->label;
$ds_list[$ds->ID]['MIMEType'] = $ds->MIMEType;
$ds_list[$ds->ID]['URL'] = $this->url() . '/'. $ds->ID . '/'. drupal_urlencode($ds->label);
$ds_list[$ds->ID]['URL'] = $this->url() . '/' . $ds->ID . '/' . drupal_urlencode($ds->label);
}
}
else {
$ds = $this->datastreams_list->datastreamDef;
$ds_list[$ds->ID]['label'] = $ds->label;
$ds_list[$ds->ID]['MIMEType'] = $ds->MIMEType;
$ds_list[$ds->ID]['URL'] = $this->url().'/'.$ds->ID.'/'.drupal_urlencode($ds->label);
$ds_list[$ds->ID]['URL'] = $this->url() . '/' . $ds->ID . '/' . drupal_urlencode($ds->label);
}
}
@ -454,7 +455,7 @@ class Fedora_Item {
foreach ($datastream_list as $datastream) {
foreach ($datastream as $datastreamValue) {
if ($datastreamValue->ID == $dsid) {
return $datastreamValue->MIMEType;
return $datastreamValue->MIMEType;
}
}
}
@ -472,8 +473,7 @@ class Fedora_Item {
$relationships = array();
try {
$relsext = $this->get_datastream_dissemination('RELS-EXT');
}
catch (exception $e) {
} catch (exception $e) {
drupal_set_message("Error retrieving RELS-EXT of object $pid", 'error');
return $relationships;
}
@ -510,12 +510,12 @@ class Fedora_Item {
// Verify the array format and that it isn't empty.
if (!empty($relationships)) {
$relsextxml = '<rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:fedora="info:fedora/fedora-system:def/relations-external#" xmlns:fedora-model="info:fedora/fedora-system:def/model#" xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">'
. '<rdf:description rdf:about="'. $this->pid . '">';
. '<rdf:description rdf:about="' . $this->pid . '">';
foreach ($relationships as $rel) {
if (empty($rel['subject']) || empty($rel['predicate']) || empty($rel['object']) || $rel['subject'] != 'info:fedora/'. $this->pid) {
if (empty($rel['subject']) || empty($rel['predicate']) || empty($rel['object']) || $rel['subject'] != 'info:fedora/' . $this->pid) {
// drupal_set_message should use parameterized variables, not interpolated.
drupal_set_message("Error with relationship format: ". $rel['subject'] . " - ". $rel['predicate'] . ' - '. $rel['object'], "error");
drupal_set_message("Error with relationship format: " . $rel['subject'] . " - " . $rel['predicate'] . ' - ' . $rel['object'], "error");
return FALSE;
}
}
@ -539,25 +539,25 @@ class Fedora_Item {
return $this->soap_call('purgeObject', $params);
}
function purge_datastream( $dsID, $start_date = NULL, $end_date = NULL, $log_message = 'Purged datastream using Islandora API', $force = FALSE) {
function purge_datastream($dsID, $start_date = NULL, $end_date = NULL, $log_message = 'Purged datastream using Islandora API', $force = FALSE) {
$params = array(
'pid' => $this->pid,
'dsID' => $dsID,
'startDT' => $start_date,
'endDT' => $end_date,
'logMessage' => $log_message,
'force' => $force,
'force' => $force,
);
return $this->soap_call('purgeDatastream', $params);
}
function url() {
global $base_url;
return $base_url . '/fedora/repository/'. $this->pid . (!empty($this->objectProfile) ? '/-/'. drupal_urlencode($this->objectProfile->objLabel) : '');
return $base_url . '/fedora/repository/' . $this->pid . (!empty($this->objectProfile) ? '/-/' . drupal_urlencode($this->objectProfile->objLabel) : '');
}
static function get_next_PID_in_namespace( $pid_namespace = '') {
static function get_next_PID_in_namespace($pid_namespace = '') {
if (empty($pid_namespace)) {
// Just get the first one in the config settings.
$allowed_namespaces = explode(" ", variable_get('fedora_pids_allowed', 'default: demo: changeme: islandora: ilives: '));
@ -569,7 +569,7 @@ class Fedora_Item {
$pid_namespace = 'default';
}
}
$params = array(
'numPIDs' => '',
'pidNamespace' => $pid_namespace,
@ -587,7 +587,7 @@ class Fedora_Item {
static function ingest_from_FOXML_file($foxml_file) {
$foxml = new DOMDocument();
$foxml->load( $foxml_file );
$foxml->load($foxml_file);
return self::ingest_from_FOXML($foxml);
}
@ -601,9 +601,9 @@ class Fedora_Item {
}
try {
self::ingest_from_FOXML_file( $path . '/'. $file );
}
catch (exception $e) {
self::ingest_from_FOXML_file($path . '/' . $file);
} catch (exception $e) {
}
}
// Close
@ -611,20 +611,20 @@ class Fedora_Item {
}
function modify_object($label = '', $state = null, $ownerId = null, $logMessage = 'Modified by Islandora API', $quiet=TRUE) {
$params = array(
$params = array(
'pid' => $this->pid,
'ownerId' => $ownerId,
'state' => $state,
'label' => $label,
'logMessage' => $logMessage
);
return self::soap_call('modifyObject', $params, $quiet);
return self::soap_call('modifyObject', $params, $quiet);
}
function modify_datastream_by_reference($external_url, $dsid, $label, $mime_type, $force = FALSE, $logMessage = 'Modified by Islandora API',$quiet=FALSE) {
$params = array(
function modify_datastream_by_reference($external_url, $dsid, $label, $mime_type, $force = FALSE, $logMessage = 'Modified by Islandora API', $quiet=FALSE) {
$params = array(
'pid' => $this->pid,
'dsID' => $dsid,
'altIDs' => NULL,
@ -637,11 +637,11 @@ class Fedora_Item {
'logMessage' => $logMessage,
'force' => $force
);
return self::soap_call('modifyDatastreamByReference', $params, $quiet);
return self::soap_call('modifyDatastreamByReference', $params, $quiet);
}
function modify_datastream_by_value($content, $dsid, $label, $mime_type, $force = FALSE, $logMessage = 'Modified by Islandora API',$quiet=FALSE) {
$params = array(
function modify_datastream_by_value($content, $dsid, $label, $mime_type, $force = FALSE, $logMessage = 'Modified by Islandora API', $quiet=FALSE) {
$params = array(
'pid' => $this->pid,
'dsID' => $dsid,
'altIDs' => NULL,
@ -654,10 +654,10 @@ class Fedora_Item {
'logMessage' => $logMessage,
'force' => $force
);
return self::soap_call('modifyDatastreamByValue', $params,$quiet);
return self::soap_call('modifyDatastreamByValue', $params, $quiet);
}
static function soap_call( $function_name, $params_array, $quiet = FALSE ) {
static function soap_call($function_name, $params_array, $quiet = FALSE) {
if (!self::$connection_helper) {
module_load_include('inc', 'fedora_repository', 'ConnectionHelper');
self::$connection_helper = new ConnectionHelper();
@ -685,25 +685,25 @@ class Fedora_Item {
watchdog(t("FEDORA_REPOSITORY"), t("Error trying to get SOAP client connection."));
return NULL;
}
}
catch (exception $e) {
if (!$quiet) {
if (preg_match('/org\.fcrepo\.server\.security\.xacml\.pep\.AuthzDeniedException/',$e->getMessage())) {
drupal_set_message(t('Error: Insufficient permissions to call SOAP function !fn.', array('!fn' => $function_name) ), 'error');
} else {
drupal_set_message(t("Error trying to call SOAP function $function_name. Check watchdog logs for more information."), 'error');
}
watchdog(t("FEDORA_REPOSITORY"), t("Error Trying to call SOAP function !fn: !e", array('!fn' => $function_name, '!e' => $e)), NULL, WATCHDOG_ERROR);
}
return NULL;
} catch (exception $e) {
if (!$quiet) {
if (preg_match('/org\.fcrepo\.server\.security\.xacml\.pep\.AuthzDeniedException/', $e->getMessage())) {
drupal_set_message(t('Error: Insufficient permissions to call SOAP function !fn.', array('!fn' => $function_name)), 'error');
}
else {
drupal_set_message(t("Error trying to call SOAP function $function_name. Check watchdog logs for more information."), 'error');
}
watchdog(t("FEDORA_REPOSITORY"), t("Error Trying to call SOAP function !fn: !e", array('!fn' => $function_name, '!e' => $e)), NULL, WATCHDOG_ERROR);
}
return NULL;
}
break;
default:
try {
$soap_client = self::$connection_helper->getSoapClient( variable_get('fedora_soap_url', 'http://localhost:8080/fedora/services/access?wsdl'));
$soap_client = self::$connection_helper->getSoapClient(variable_get('fedora_soap_url', 'http://localhost:8080/fedora/services/access?wsdl'));
if (!empty($soap_client)) {
$result = $soap_client->__soapCall($function_name, array('parameters' => $params_array));
}
@ -711,19 +711,17 @@ class Fedora_Item {
watchdog(t("FEDORA_REPOSITORY"), t("Error trying to get SOAP client connection."));
return NULL;
}
}
catch (exception $e) {
if (!$quiet) {
watchdog(t("FEDORA_REPOSITORY"), t("Error trying to call SOAP function !fn: !e", array('!fn' => $function_name, '!e' => $e)), NULL, WATCHDOG_ERROR);
}
return NULL;
} catch (exception $e) {
if (!$quiet) {
watchdog(t("FEDORA_REPOSITORY"), t("Error trying to call SOAP function !fn: !e", array('!fn' => $function_name, '!e' => $e)), NULL, WATCHDOG_ERROR);
}
return NULL;
}
}
return $result;
}
/**
* Creates the minimal FOXML for a new Fedora object, which is then passed to
* ingest_from_FOXML to be added to the repository.
@ -767,7 +765,7 @@ class Fedora_Item {
$owner_property = $foxml->createElement("foxml:property");
$owner_property->setAttribute("NAME", "info:fedora/fedora-system:def/model#ownerId");
$owner_property->setAttribute("VALUE", $owner );
$owner_property->setAttribute("VALUE", $owner);
$object_properties->appendChild($state_property);
$object_properties->appendChild($label_property);
@ -779,7 +777,7 @@ class Fedora_Item {
}
static function ingest_new_item($pid = '', $state = 'A', $label = '', $owner = '') {
return self::ingest_from_FOXML(self::create_object_FOXML( $pid, $state, $label, $owner));
return self::ingest_from_FOXML(self::create_object_FOXML($pid, $state, $label, $owner));
}
static function fedora_item_exists($pid) {
@ -787,9 +785,9 @@ class Fedora_Item {
return $item->exists();
}
/********************************************************
/* * ******************************************************
* Relationship Functions
********************************************************/
* ****************************************************** */
/**
* Returns an associative array of relationships that this item has

346
fedora_repository.module

@ -58,9 +58,9 @@ function fedora_repository_purge_object($pid = NULL, $name = NULL) {
return '';
}
$output = t('Are you sure you wish to purge object %name %pid!<br /><b>This cannot be undone</b><br />',
array(
'%name' => $name,
'%pid' => $pid)
array(
'%name' => $name,
'%pid' => $pid)
);
$output .= drupal_get_form('fedora_repository_purge_object_form', $pid);
@ -101,7 +101,8 @@ function fedora_repository_ingest_object($collection_pid=NULL, $collection_label
if (!validPid($collection_pid)) {
if (validPid(urldecode($collection_pid))) {
$collection_pid = urldecode($collection_pid);
} else {
}
else {
drupal_set_message(t("This collection PID $collection_pid is not valid"), 'error');
return ' ';
}
@ -202,10 +203,11 @@ function fedora_repository_ingest_form_validate($form, &$form_state) {
if (!empty($file)) {
if (!in_array($dformat, $allowedMimeTypes)) {
form_set_error('ingest-file-location', t('The uploaded file\'s mimetype (' . $dformat . ') is not associated with this Content Model. The allowed types are ' .
implode(' ', $allowedMimeTypes)));
implode(' ', $allowedMimeTypes)));
file_delete($file);
return;
} elseif (!$cm->execIngestRules($file, $dformat)) {
}
elseif (!$cm->execIngestRules($file, $dformat)) {
drupal_set_message(t('Error following Content Model Rules'), 'error');
foreach (ContentModel::$errors as $err) {
drupal_set_message($err, 'error');
@ -237,13 +239,13 @@ function fedora_repository_purge_object_form(&$form_state, $pid, $referrer) {
global $base_url;
// $form['#redirect'] = "fedora/repository/$collectionPid/";
$form['pid'] = array(
'#type' => 'hidden',
'#value' => "$pid"
'#type' => 'hidden',
'#value' => "$pid"
);
if (!strstr(drupal_get_destination(), urlencode('fedora/repository'))) {
$form['referrer'] = array(
'#type' => 'hidden',
'#value' => $referrer,
'#type' => 'hidden',
'#value' => $referrer,
);
}
if (!isset($form_state['storage']['confirm'])) {
@ -251,10 +253,10 @@ function fedora_repository_purge_object_form(&$form_state, $pid, $referrer) {
$form['submit'] = array(
'#type' => 'image_button',
'#src' => drupal_get_path('module', 'fedora_repository') . '/images/purge_big.png',
'#value' => t('Purge'),
'#suffix' => 'Purge this object',
'#type' => 'image_button',
'#src' => drupal_get_path('module', 'fedora_repository') . '/images/purge_big.png',
'#value' => t('Purge'),
'#suffix' => 'Purge this object',
);
if ($collectionPid == NULL) {
$collectionPid = $_SESSION['fedora_collection'];
@ -262,7 +264,8 @@ function fedora_repository_purge_object_form(&$form_state, $pid, $referrer) {
//$form['#redirect'] = $referrer;
return $form;
} else {
}
else {
// ALSO do $form definition here. Your final submit handler (after user clicks Yes, I Confirm) will only see $form_state info defined here. Form you create here passed as param1 to confirm_form
return confirm_form($form, 'Confirm Purge Object', $referrer, 'Are you sure you want to delete this object? This action cannot be undone.', 'Delete', 'Cancel'); //Had better luck leaving off last param 'name'
@ -366,9 +369,9 @@ function add_stream_form_validate($form, &$form_state) {
return FALSE;
}
$validators = array(
// 'file_validate_is_image' => array(),
// 'file_validate_image_resolution' => array('85x85'),
// 'file_validate_size' => array(30 * 1024),
// 'file_validate_is_image' => array(),
// 'file_validate_image_resolution' => array('85x85'),
// 'file_validate_size' => array(30 * 1024),
);
$fileObject = file_save_upload('add-stream-file-location', $validators);
@ -393,8 +396,8 @@ function fedora_repository_purge_stream($pid = NULL, $dsId = NULL, $name = NULL)
}
$output = t('Are you sure you wish to purge this datastream %name<br />',
array(
'%name' => $name)
array(
'%name' => $name)
);
$output .= drupal_get_form('fedora_repository_purge_stream_form', $pid, $dsId);
return $output;
@ -407,12 +410,13 @@ function fedora_repository_purge_object_form_submit($form, &$form_state) {
if (!isset($form_state['storage']['confirm'])) {
$form_state['storage']['confirm'] = TRUE; // this will cause the form to be rebuilt, entering the confirm part of the form
$form_state['rebuild'] = TRUE; // along with this
} else {
}
else {
// this is where you do your processing after they have pressed the confirm button
$params = array(
"pid" => $pid,
"logMessage" => "Purged",
"force" => ""
"pid" => $pid,
"logMessage" => "Purged",
"force" => ""
);
try {
$soapHelper = new ConnectionHelper();
@ -422,7 +426,8 @@ function fedora_repository_purge_object_form_submit($form, &$form_state) {
} catch (exception $e) {
if (preg_match('/org\.fcrepo\.server\.security\.xacml\.pep\.AuthzDeniedException/', $e->getMessage())) {
drupal_set_message(t('Error: Insufficient permissions to purge object.'), 'error');
} else {
}
else {
drupal_set_message(t($e->getMessage()), 'error');
}
return;
@ -432,7 +437,8 @@ function fedora_repository_purge_object_form_submit($form, &$form_state) {
}
if (!empty($form_state['values']['referrer'])) {
$form_state['redirect'] = $form_state['values']['referrer'];
} else {
}
else {
$form_state['redirect'] = "fedora/repository/$collectionPid/";
}
}
@ -440,16 +446,16 @@ function fedora_repository_purge_object_form_submit($form, &$form_state) {
function fedora_repository_purge_stream_form(&$form_state, $pid, $dsId) {
$form['pid'] = array(
'#type' => 'hidden',
'#value' => "$pid"
'#type' => 'hidden',
'#value' => "$pid"
);
$form['dsid'] = array(
'#type' => 'hidden',
'#value' => "$dsId"
'#type' => 'hidden',
'#value' => "$dsId"
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Purge')
'#type' => 'submit',
'#value' => t('Purge')
);
return $form;
@ -538,19 +544,19 @@ function fedora_repository_replace_stream_form_submit($form, &$form_state) {
$controlGroup = "M";
$function = 'modifyDatastreamByReference';
$params = array(
'pid' => $pid,
'dsID' => $dsid,
'altIDs' => "",
'dsLabel' => $dsLabel,
'MIMEType' => $dformat,
'formatURI' => "URL",
'dsLocation' => $streamUrl,
'controlGroup' => "$controlGroup",
'dsState' => "A",
'checksumType' => "DISABLED",
'checksum' => "none",
'logMessage' => "datastream replaced",
'force' => FALSE,
'pid' => $pid,
'dsID' => $dsid,
'altIDs' => "",
'dsLabel' => $dsLabel,
'MIMEType' => $dformat,
'formatURI' => "URL",
'dsLocation' => $streamUrl,
'controlGroup' => "$controlGroup",
'dsState' => "A",
'checksumType' => "DISABLED",
'checksum' => "none",
'logMessage' => "datastream replaced",
'force' => FALSE,
);
if ($dformat == 'text/xml') {
@ -685,13 +691,13 @@ function fedora_repository_edit_qdc_form_submit($form, &$form_state) {
function fedora_repository_perm() {
module_load_include('inc', 'fedora_repository', 'ObjectHelper');
return array(
OBJECTHELPER::$OBJECT_HELPER_VIEW_FEDORA,
OBJECTHELPER::$EDIT_FEDORA_METADATA,
OBJECTHELPER::$PURGE_FEDORA_OBJECTSANDSTREAMS,
OBJECTHELPER::$ADD_FEDORA_STREAMS,
OBJECTHELPER::$INGEST_FEDORA_OBJECTS,
OBJECTHELPER::$EDIT_TAGS_DATASTREAM,
OBJECTHELPER::$VIEW_DETAILED_CONTENT_LIST,
OBJECTHELPER::$OBJECT_HELPER_VIEW_FEDORA,
OBJECTHELPER::$EDIT_FEDORA_METADATA,
OBJECTHELPER::$PURGE_FEDORA_OBJECTSANDSTREAMS,
OBJECTHELPER::$ADD_FEDORA_STREAMS,
OBJECTHELPER::$INGEST_FEDORA_OBJECTS,
OBJECTHELPER::$EDIT_TAGS_DATASTREAM,
OBJECTHELPER::$VIEW_DETAILED_CONTENT_LIST,
);
}
@ -764,12 +770,12 @@ function fedora_repository_get_items($pid = NULL, $dsId = NULL, $collection = NU
}
if (!fedora_repository_access(OBJECTHELPER::$OBJECT_HELPER_VIEW_FEDORA, $pid, $user)) {
//drupal_set_message(t("You do not have access to Fedora objects within the attempted namespace or access to Fedora denied"), 'error');
if (user_access('access administration pages')) {
drupal_set_message(t("PIDs may be added to allowed namespaces, or all namespace restrictions removed !here", array('!here' => l('here', 'admin/settings/fedora_repository'))), 'warning');
}
drupal_access_denied();
exit;
drupal_access_denied();
exit;
return ' ';
}
@ -936,7 +942,8 @@ function fedora_repository_search($op = 'search', $keys = NULL) {
$searchQuery = NULL;
if (isset($type) && strcmp($type, ':')) {
$searchQuery = $type . ':' . $keys;
} else {
}
else {
$searchQuery = $keys;
}
//$searchQuery.=" AND (PID:vre OR PID:vre:ref OR PID:demo OR PID:changeme)";
@ -950,10 +957,10 @@ function fedora_repository_search($op = 'search', $keys = NULL) {
$resultData = do_curl($searchUrl);
$results[] = array(
array(
'data' => $resultData,
'colspan' => 2
)
array(
'data' => $resultData,
'colspan' => 2
)
);
return $results;
}
@ -977,10 +984,10 @@ function fedora_repository_search_page($resultData) {
$proc = new XsltProcessor();
} catch (Exception $e) {
$out[] = array(
array(
'data' => $e->getMessage(),
'colspan' => 2
)
array(
'data' => $e->getMessage(),
'colspan' => 2
)
);
return $out;
}
@ -994,7 +1001,8 @@ function fedora_repository_search_page($resultData) {
$xsl = new DomDocument();
if ($isRestricted) {
$xsl->load($path . '/xsl/results.xsl');
} else {
}
else {
$xsl->load($path . '/xsl/unfilteredresults.xsl');
}
@ -1003,29 +1011,30 @@ function fedora_repository_search_page($resultData) {
if (!$didLoadOk) {
$results[] = array(
array(
'data' => 'Error parsing results',
'colspan' => 2
)
array(
'data' => 'Error parsing results',
'colspan' => 2
)
);
} else {
}
else {
$xsl = $proc->importStylesheet($xsl);
$newdom = $proc->transformToDoc($input);
$results[] = array(
array(
'data' => $newdom->saveHTML(),
'colspan' => 2
)
array(
'data' => $newdom->saveHTML(),
'colspan' => 2
)
);
}
$header = array(
array(
'data' => t('Collection results'),
NULL,
),
(NULL)
array(
'data' => t('Collection results'),
NULL,
),
(NULL)
);
$output .= theme('table', $header, $results);
@ -1053,17 +1062,17 @@ function fedora_repository_form_alter(&$form, &$form_state, $form_id) {
$form['basic']['inline']['keys']['#default_value'] = $default_value;
// Keyword boxes:
$form['advanced'] = array(
'#type' => 'fieldset',
'#title' => t('Advanced search'),
'#collapsible' => TRUE,
'#collapsed' => TRUE,
'#attributes' => array(
'class' => 'search-advanced'
),
'#type' => 'fieldset',
'#title' => t('Advanced search'),
'#collapsible' => TRUE,
'#collapsed' => TRUE,
'#attributes' => array(
'class' => 'search-advanced'
),
);
$form['advanced']['keywords'] = array(
'#prefix' => '<div class="criterion">',
'#suffix' => '</div>',
'#prefix' => '<div class="criterion">',
'#suffix' => '</div>',
);
$xmlDoc = new DomDocument();
$xmlDoc->load($path . '/searchTerms.xml');
@ -1072,15 +1081,15 @@ function fedora_repository_form_alter(&$form, &$form_state, $form_id) {
$types = $searchClass->get_search_terms_array();
$form['advanced']['type'] = array(
'#type' => 'select',
'#title' => t('Choose a field to search'),
'#prefix' => '<div class="criterion">', '#suffix' => '</div>', '#options' => $types,
'#default_value' => $type,
'#type' => 'select',
'#title' => t('Choose a field to search'),
'#prefix' => '<div class="criterion">', '#suffix' => '</div>', '#options' => $types,
'#default_value' => $type,
);
$form['advanced']['submit'] = array(
'#type' => 'submit',
'#value' => t('Advanced search'),
'#prefix' => '<div class="action clear-block">', '#suffix' => '</div>',
'#type' => 'submit',
'#value' => t('Advanced search'),
'#prefix' => '<div class="action clear-block">', '#suffix' => '</div>',
);
$form['#validate'][] = 'fedora_repository_search_validate';
}
@ -1114,7 +1123,7 @@ function fedora_repository_block($op = 'list', $delta = 0, $edit = array()) {
// This is used to provide a list of possible blocks to the administrator,
// end users will not see these descriptions.
$blocks[0] = array(
'info' => t('Repository advanced search block'),
'info' => t('Repository advanced search block'),
);
return $blocks;
case 'configure':
@ -1128,11 +1137,11 @@ function fedora_repository_block($op = 'list', $delta = 0, $edit = array()) {
// All we need to provide is a text field, Drupal will take care of
// the other block configuration options and the save button.
$form['fedora_repository_advanced_block_repeat'] = array(
'#type' => 'textfield',
'#title' => t('Number of times to repeat search fields'),
'#size' => 5,
'#description' => t('The number of times you would like the search blocks to be repeated'),
'#default_value' => variable_get('fedora_repository_advanced_block_repeat', t('3')),
'#type' => 'textfield',
'#title' => t('Number of times to repeat search fields'),
'#size' => 5,
'#description' => t('The number of times you would like the search blocks to be repeated'),
'#default_value' => variable_get('fedora_repository_advanced_block_repeat', t('3')),
);
break;
}
@ -1166,16 +1175,16 @@ function fedora_repository_block($op = 'list', $delta = 0, $edit = array()) {
function fedora_repository_theme() {
return array(
'fedora_repository_mnpl_advanced_search_form' => array(
'arguments' => array(
'form' => NULL,
),
'fedora_repository_mnpl_advanced_search_form' => array(
'arguments' => array(
'form' => NULL,
),
'fedora_repository_time' => array(
'arguments' => array(
'element' => NULL
),
),
'fedora_repository_time' => array(
'arguments' => array(
'element' => NULL
),
),
);
}
@ -1237,18 +1246,18 @@ function fedora_repository_demo_objects_form() {
$existing_demos = array();
$form['install_demos'] = array(
'#title' => t('Islandora Demo Collections'),
'#type' => 'fieldset',
'#description' => t('Install demo image and document collections and content models.'),
'#title' => t('Islandora Demo Collections'),
'#type' => 'fieldset',
'#description' => t('Install demo image and document collections and content models.'),
);
$demo_objects = array();
// Check if the top-level islandora collection exists. If not, display a button to ingest.
$form['install_demos']['demo_collections'] = array(
'#type' => 'checkboxes',
'#title' => t('Collections to ingest'),
'#options' => array(),
'#description' => t('Choose which demo collections you would like ingested into the repository.'),
'#type' => 'checkboxes',
'#title' => t('Collections to ingest'),
'#options' => array(),
'#description' => t('Choose which demo collections you would like ingested into the repository.'),
);
foreach (array(
@ -1267,7 +1276,8 @@ function fedora_repository_demo_objects_form() {
if (empty($demo_objects[$available_demo]->objectProfile)) {
//The demo objects collection does not exist in the repository, display a button to ingest them.
$form['install_demos']['demo_collections']['#options'][$available_demo] = $available_demo_desc;
} else {
}
else {
array_push($existing_demos, $demo_objects[$available_demo]);
}
}
@ -1279,34 +1289,36 @@ function fedora_repository_demo_objects_form() {
$datastreams_list = $smiley_stuff->get_datastreams_list_as_array();
if (empty($datastreams_list['COLLECTION_VIEW'])) {
$form['install_demos']['demo_collections']['#options']['demo:SmileyStuff'] = 'Add Islandora Collection View to Fedora Smiley Stuff Collection';
} else {
}
else {
$demo_objects['demo:SmileyStuff'] = $smiley_stuff;
}
} else {
}
else {
$form['install_demos']['smileynote'] = array(
'#value' => '<p>If you install the ' . l('fedora demo objects', 'https://wiki.duraspace.org/display/FCR30/Demonstration+Objects') . ' Islandora can display them as a collection.</p>'
'#value' => '<p>If you install the ' . l('fedora demo objects', 'https://wiki.duraspace.org/display/FCR30/Demonstration+Objects') . ' Islandora can display them as a collection.</p>'
);
}
$form['install_demos']['ingest'] = array(
'#type' => 'submit',
'#name' => 'install_demos',
'#value' => 'Install Selected Demos',
'#disabled' => (empty($form['install_demos']['demo_collections']['#options'])) ? TRUE : FALSE,
'#type' => 'submit',
'#name' => 'install_demos',
'#value' => 'Install Selected Demos',
'#disabled' => (empty($form['install_demos']['demo_collections']['#options'])) ? TRUE : FALSE,
);
$form['existing_demos'] = array(
'#prefix' => '<p>Demo collections already installed in this repository:</p><ul>',
'#suffix' => '</ul>',
'#prefix' => '<p>Demo collections already installed in this repository:</p><ul>',
'#suffix' => '</ul>',
);
if (!empty($existing_demos)) {
foreach ($existing_demos as $pid => $demo_object) {
$form['existing_demos'][$demo_object->pid] = array(
'#prefix' => '<li>',
'#value' => l($demo_object->pid, $demo_object->url()),
'#suffix' => '</li>',
'#prefix' => '<li>',
'#value' => l($demo_object->pid, $demo_object->url()),
'#suffix' => '</li>',
);
}
}
@ -1411,7 +1423,7 @@ function fedora_repository_demo_objects_form_submit($form, &$form_state) {
if (!empty($form_state['values']['demo_collections']['islandora:largeimages'])) {
$error = '';
foreach (array('islandora_jp2Sdep-slideCModel.xml', 'islandora_mods2htmlSdef.xml', 'islandora_mods2htmlSdep.xml',
'islandora_slideCModel.xml', 'islandora_viewerSdep-slideCModel.xml', 'ilives_jp2Sdef.xml', 'ilives_viewerSdef.xml') as $foxml_file) {
'islandora_slideCModel.xml', 'islandora_viewerSdep-slideCModel.xml', 'ilives_jp2Sdef.xml', 'ilives_viewerSdef.xml') as $foxml_file) {
try {
$item = Fedora_Item::ingest_from_FOXML_file(drupal_get_path('module', 'fedora_repository') . '/content_models/' . $foxml_file);
} catch (exception $e) {
@ -1439,8 +1451,8 @@ function fedora_repository_demo_objects_form_submit($form, &$form_state) {
function fedora_repository_elements() {
$type['fedora_repository_time'] = array(
"#input" => TRUE,
"#process" => array("fedora_repository_expand_time"),
"#input" => TRUE,
"#process" => array("fedora_repository_expand_time"),
);
return $type;
@ -1451,8 +1463,8 @@ function fedora_repository_expand_time($element) {
// default value is present it will override value
if (empty($element['#default_value'])) {
$element['#value'] = array(
'hour' => intval(format_date(time(), 'custom', 'h')),
'minute' => intval(format_date(time(), 'custom', 'i')),
'hour' => intval(format_date(time(), 'custom', 'h')),
'minute' => intval(format_date(time(), 'custom', 'i')),
);
}
@ -1475,9 +1487,9 @@ function fedora_repository_expand_time($element) {
}
$element[$type] = array(
'#type' => 'select',
'#default_value' => $element['#value'][$type],
'#options' => $options,
'#type' => 'select',
'#default_value' => $element['#value'][$type],
'#options' => $options,
);
}
@ -1531,7 +1543,8 @@ function fedora_repository_basket_form($form_state, $pids) {
$form['pid'] = array();
$form['title'] = array();
$form['desc'] = array();
} else {
}
else {
return;
}
@ -1545,28 +1558,28 @@ function fedora_repository_basket_form($form_state, $pids) {
}
$form['remove'] = array(
'#type' => 'checkboxes',
'#options' => $cbs,
'#type' => 'checkboxes',
'#options' => $cbs,
);
$form['remove_submit'] = array(
'#type' => 'submit',
'#value' => t('Remove selected'),
'#type' => 'submit',
'#value' => t('Remove selected'),
);
$form['remove_all'] = array(
'#type' => 'submit',
'#value' => t('Empty basket'),
'#type' => 'submit',
'#value' => t('Empty basket'),
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Export selected'),
'#type' => 'submit',
'#value' => t('Export selected'),
);
$form['submit_all'] = array(
'#type' => 'submit',
'#value' => t('Export all'),
'#type' => 'submit',
'#value' => t('Export all'),
);
return $form;
@ -1574,22 +1587,23 @@ function fedora_repository_basket_form($form_state, $pids) {
function theme_fedora_repository_basket_form($form) {
$header = array(
theme('table_select_header_cell'),
t('PID'),
t('Title'),
t('Description'),
theme('table_select_header_cell'),
t('PID'),
t('Title'),
t('Description'),
);
if (isset($form['pid']) && is_array($form['pid'])) {
foreach (element_children($form['pid']) as $key) {
$rows[] = array(
drupal_render($form['remove'][$key]),
drupal_render($form['pid'][$key]),
drupal_render($form['title'][$key]),
drupal_render($form['desc'][$key]),
drupal_render($form['remove'][$key]),
drupal_render($form['pid'][$key]),
drupal_render($form['title'][$key]),
drupal_render($form['desc'][$key]),
);
}
} else {
}
else {
$rows[] = array(array('data' => t('Your basket is empty.'), 'colspan' => '4'));
}
@ -1627,7 +1641,8 @@ function fedora_repository_basket_form_submit($form, &$form_state) {
if ($form_state['values']['op'] == $form_state['values']['submit_all']) {
$msg = t("All objects exported to staging area");
$pids = _fedora_repository_get_basket_pids();
} elseif ($form_state['values']['op'] == $form_state['values']['submit']) {
}
elseif ($form_state['values']['op'] == $form_state['values']['submit']) {
$msg = t("Selected objects exported to staging area");
$pids = array_filter($form_state['values']['remove']);
}
@ -1662,7 +1677,8 @@ function fedora_repository_basket_form_submit($form, &$form_state) {
drupal_set_message($msg, $success ? 'info' : 'error');
//_fedora_repository_empty_basket();
} else {
}
else {
drupal_set_message(t("No objects selected or basket empty"), 'error');
}
@ -1712,7 +1728,8 @@ function fedora_repository_add_to_basket($pid, $warn = TRUE, $searchResultsFlag
if (!isset($_SESSION['basket'])) {
$_SESSION['basket'] = array();
$_SESSION['basket']['unprocessed'] = array($pid => $pid);
} else {
}
else {
$_SESSION['basket']['unprocessed'][$pid] = $pid;
}
@ -1746,9 +1763,9 @@ function theme_add_to_basket_link($pid, $type = 'object') {
*/
if (!_is_added_to_basket($pid)) {
return l(
theme('image', drupal_get_path('module', 'Fedora_Repository') . '/images/' . $save, t("Add to basket"), t("Add this @object to my basket", array('@object' => $object))),
"fedora/repository/addToBasket/" . $path,
array('html' => TRUE)
theme('image', drupal_get_path('module', 'Fedora_Repository') . '/images/' . $save, t("Add to basket"), t("Add this @object to my basket", array('@object' => $object))),
"fedora/repository/addToBasket/" . $path,
array('html' => TRUE)
);
}
@ -1764,7 +1781,8 @@ function fedora_repository_display_schema($file) {
$path = drupal_get_path('module', 'fedora_repository');
if (strtolower(substr($file, -3)) == 'xsd' && file_exists($path . '/' . $file)) {
drupal_goto($path . '/' . $file);
} else {
}
else {
drupal_goto();
}
return;

701
formClass.inc

@ -4,9 +4,6 @@
/*
* Created on Jan 22, 2008
*
* To change the template for this generated file go to
* Window - Preferences - PHPeclipse - PHP - Code Templates
*/
class formClass {
@ -24,201 +21,175 @@ class formClass {
$items = array();
$items['admin/settings/fedora_repository'] = array(
'title' => t('Fedora collection list'),
'description' => t('Enter the Fedora Collection information here'),
'page callback' => 'drupal_get_form',
'page arguments' => array('fedora_repository_admin'),
//'access' => user_access('access administration pages'),
'access arguments' => array('administer site configuration'),
'type' => MENU_NORMAL_ITEM,
// 'type' => MENU_DEFAULT_LOCAL_TASK,
'title' => t('Fedora collection list'),
'description' => t('Enter the Fedora Collection information here'),
'page callback' => 'drupal_get_form',
'page arguments' => array('fedora_repository_admin'),
'access arguments' => array('administer site configuration'),
'type' => MENU_NORMAL_ITEM,
);
$items['admin/settings/fedora_repository/collection'] = array(
'title' => t('Collection list'),
'description' => t('Enter the Fedora collection information here.'),
'access arguments' => array('administer site configuration'),
'type' => MENU_DEFAULT_LOCAL_TASK,
'weight' => 0,
'title' => t('Collection list'),
'description' => t('Enter the Fedora collection information here.'),
'access arguments' => array('administer site configuration'),
'type' => MENU_DEFAULT_LOCAL_TASK,
'weight' => 0,
);
$items['admin/settings/fedora_repository/demoobjects'] = array(
'title' => t('Install demos'),
'description' => t('Install example content models and collections to get started using Islandora and Fedora.'),
'page callback' => 'fedora_repository_install_demos_page',
'access arguments' => array('add fedora datastreams'),
'type' => MENU_LOCAL_TASK,
'title' => t('Install demos'),
'description' => t('Install example content models and collections to get started using Islandora and Fedora.'),
'page callback' => 'fedora_repository_install_demos_page',
'access arguments' => array('add fedora datastreams'),
'type' => MENU_LOCAL_TASK,
);
$items['islandoracm.xsd'] = array(
'title' => t('Islandoracm XML Schema Definition'),
'page callback' => 'fedora_repository_display_schema',
'page arguments' => array('islandoracm.xsd'),
'type' => MENU_CALLBACK,
// 'page arguments'=>array(1),
'access arguments' => array('view fedora collection'),
// 'access' => TRUE
);
'title' => t('Islandoracm XML Schema Definition'),
'page callback' => 'fedora_repository_display_schema',
'page arguments' => array('islandoracm.xsd'),
'type' => MENU_CALLBACK,
'access arguments' => array('view fedora collection'),
);
$items['collection_policy.xsd'] = array(
'title' => t('Islandoracm XML Schema Definition'),
'page callback' => 'fedora_repository_display_schema',
'page arguments' => array('collection_policy.xsd'),
'type' => MENU_CALLBACK,
// 'page arguments'=>array(1),
'access arguments' => array('view fedora collection'),
// 'access' => TRUE
);
'title' => t('Islandoracm XML Schema Definition'),
'page callback' => 'fedora_repository_display_schema',
'page arguments' => array('collection_policy.xsd'),
'type' => MENU_CALLBACK,
'access arguments' => array('view fedora collection'),
);
$items['fedora'] = array(
// 'title' => t('Digital repository'),
'page callback' => 'repository_page',
'type' => MENU_CALLBACK,
// 'page arguments'=>array(1),
'access arguments' => array('view fedora collection'),
// 'access' => TRUE
);
$repository_title = variable_get('fedora_repository_title','Digital repository');
if (trim($repository_title)!= '') {
$respository_title=t($repository_title);
} else {
$repository_title= NULL;
'page callback' => 'repository_page',
'type' => MENU_CALLBACK,
'access arguments' => array('view fedora collection'),
);
$repository_title = variable_get('fedora_repository_title', 'Digital repository');
if (trim($repository_title) != '') {
$respository_title = t($repository_title);
}
else {
$repository_title = NULL;
}
$items['fedora/repository'] = array(
'title' => $repository_title,
'page callback' => 'repository_page',
'type' => MENU_NORMAL_ITEM,
// 'page arguments'=>array(1),
'access arguments' => array('view fedora collection'),
// 'access' => TRUE
'title' => $repository_title,
'page callback' => 'repository_page',
'type' => MENU_NORMAL_ITEM,
'access arguments' => array('view fedora collection'),
// 'access' => TRUE
);
$items['fedora/repository/service'] = array(
'page callback' => 'repository_service',
'type' => MENU_CALLBACK,
'access arguments' => array('view fedora collection'),
'page callback' => 'repository_service',
'type' => MENU_CALLBACK,
'access arguments' => array('view fedora collection'),
);
$items['fedora/repository/object_download'] = array(
'title' => t('Download object'),
'page callback' => 'fedora_object_as_attachment',
'type' => MENU_CALLBACK,
'access arguments' => array('view fedora collection')
'title' => t('Download object'),
'page callback' => 'fedora_object_as_attachment',
'type' => MENU_CALLBACK,
'access arguments' => array('view fedora collection')
);
$items['fedora/repository/editmetadata'] = array(
'title' => t('Edit metadata'),
'page callback' => 'fedora_repository_edit_qdc_page',
// 'page arguments' => array(1),
//'type' => MENU_LOCAL_TASK,
'type' => MENU_CALLBACK,
'access arguments' => array('edit fedora meta data')
'title' => t('Edit metadata'),
'page callback' => 'fedora_repository_edit_qdc_page',
// 'page arguments' => array(1),
//'type' => MENU_LOCAL_TASK,
'type' => MENU_CALLBACK,
'access arguments' => array('edit fedora meta data')
);
$items['fedora/repository/purgeStream'] = array(
'title' => t('Purge data stream'),
'page callback' => 'fedora_repository_purge_stream',
'type' => MENU_CALLBACK,
'access arguments' => array('purge objects and datastreams')
'title' => t('Purge data stream'),
'page callback' => 'fedora_repository_purge_stream',
'type' => MENU_CALLBACK,
'access arguments' => array('purge objects and datastreams')
);
$items['fedora/repository/replaceStream'] = array(
'title' => t('Replace Stream'),
'page callback' => 'fedora_repository_replace_stream',
'title' => t('Replace Stream'),
'page callback' => 'fedora_repository_replace_stream',
// 'callback arguments' => array(3, 4),
'type' => MENU_CALLBACK,
'type' => MENU_CALLBACK,
// 'access callback' => 'fedora_repository_user_access',
'access arguments' => array('add fedora datastreams'),
'access arguments' => array('add fedora datastreams'),
);
$items['fedora/repository/purgeObject'] = array(
'title' => t('Purge object'),
'page callback' => 'fedora_repository_purge_object',
// 'type' => MENU_LOCAL_TASK,
'type' => MENU_CALLBACK,
'access arguments' => array('purge objects and datastreams')
'title' => t('Purge object'),
'page callback' => 'fedora_repository_purge_object',
// 'type' => MENU_LOCAL_TASK,
'type' => MENU_CALLBACK,
'access arguments' => array('purge objects and datastreams')
);
$items['fedora/repository/addStream'] = array(
'title' => t('Add stream'),
'page callback' => 'add_stream',
// 'type' => MENU_LOCAL_TASK,
'type' => MENU_CALLBACK,
'access arguments' => array('add fedora datastreams')
'title' => t('Add stream'),
'page callback' => 'add_stream',
// 'type' => MENU_LOCAL_TASK,
'type' => MENU_CALLBACK,
'access arguments' => array('add fedora datastreams')
);
$items['fedora/repository/collection'] = array(
'title' => t('Collection view'),
'page callback' => 'fedora_collection_view',
'type' => MENU_CALLBACK,
'access argruments' => array('view fedora collection')
'title' => t('Collection view'),
'page callback' => 'fedora_collection_view',
'type' => MENU_CALLBACK,
'access argruments' => array('view fedora collection')
);
//new for mnpl******************************************
$items['fedora/repository/mnpl_advanced_search'] = array(
'title' => t('Repository advanced search'),
'page callback' => 'fedora_repository_mnpl_advanced_search',
'type' => MENU_CALLBACK,
'access arguments' => array('view fedora collection')
'title' => t('Repository advanced search'),
'page callback' => 'fedora_repository_mnpl_advanced_search',
'type' => MENU_CALLBACK,
'access arguments' => array('view fedora collection')
);
$items['fedora/ingestObject'] = array(
'title' => t('Ingest object'),
'page callback' => 'fedora_repository_ingest_object',
'type' => MENU_CALLBACK,
'access arguments' => array('add fedora datastreams')
'title' => t('Ingest object'),
'page callback' => 'fedora_repository_ingest_object',
'type' => MENU_CALLBACK,
'access arguments' => array('add fedora datastreams')
);
$items['fedora/repository/list_terms'] = array(
'title' => t('List terms'),
'page callback' => 'fedora_repository_list_terms',
'type' => MENU_CALLBACK,
'access arguments' => array('view fedora collection')
'title' => t('List terms'),
'page callback' => 'fedora_repository_list_terms',
'type' => MENU_CALLBACK,
'access arguments' => array('view fedora collection')
);
$items['fedora/tagging/add_tag/js'] = array(
'page callback' => 'fedora_tagging_add_tag_js',
'access arguments' => array('edit tags datastream'),
'type' => MENU_CALLBACK,
'page callback' => 'fedora_tagging_add_tag_js',
'access arguments' => array('edit tags datastream'),
'type' => MENU_CALLBACK,
);
/* Export functionality */
$items['fedora/basket'] = array(
'title' => t('Fedora Basket'),
'description' => t('View and download objects added to your basket'),
'page callback' => 'fedora_repository_basket',
'access arguments' => array('view fedora collection'),
'type' => MENU_CALLBACK,
'title' => t('Fedora Basket'),
'description' => t('View and download objects added to your basket'),
'page callback' => 'fedora_repository_basket',
'access arguments' => array('view fedora collection'),
'type' => MENU_CALLBACK,
);
$items['fedora/repository/addToBasket'] = array(
'page callback' => 'fedora_repository_add_to_basket',
'type' => MENU_CALLBACK,
'access arguments' => array('view fedora collection'),
'page callback' => 'fedora_repository_add_to_basket',
'type' => MENU_CALLBACK,
'access arguments' => array('view fedora collection'),
);
$items['fedora/repository/removeFromBasket'] = array(
'page callback' => 'fedora_repository_remove_from_basket',
'type' => MENU_CALLBACK,
'access arguments' => array('view fedora collection'),
'page callback' => 'fedora_repository_remove_from_basket',
'type' => MENU_CALLBACK,
'access arguments' => array('view fedora collection'),
);
$items['fedora/repository/add_search_results_to_basket'] = array(
'page callback' => 'fedora_repository_add_search_results_to_basket',
'type' => MENU_CALLBACK,
'access arguments' => array('view fedora collection'),
);
/*
$items['fedora/item'] = array (
'title' => t('Repository Item'),
'page callback' => 'fedora_repository_add_search_results_to_basket',
'type' => MENU_CALLBACK,
'access arguments' => array('view fedora collection'),
'page callback' => 'fedora_repository_item',
'type' => MENU_NORMAL_ITEM,
);
$item['feodra/item/view'] = array (
'title' => t('View Repository Item'),
'access arguments' => array('view fedora collection'),
'type' => MENU_DEFAULT_LOCAL_TASK,
'weight' => 0,
);
*/
);
// $items = array_merge($items,$irItems);
return $items;
}
@ -228,193 +199,182 @@ class formClass {
return;
}
module_load_include('inc', 'fedora_repository', 'api/fedora_utils');
module_load_include('inc', 'fedora_repository', 'ObjectHelper');
module_load_include('inc', 'fedora_repository', 'ObjectHelper');
$form = array();
$form['fedora_repository_name'] = array(
'#type' => 'textfield',
'#title' => t('Default collection name'),
'#default_value' => variable_get('fedora_repository_name', 'Islandora demos collection'),
'#description' => t('The Name of the collection to grab the list of items from'),
'#required' => TRUE,
'#weight' => -2
'#type' => 'textfield',
'#title' => t('Default collection name'),
'#default_value' => variable_get('fedora_repository_name', 'Islandora demos collection'),
'#description' => t('The Name of the collection to grab the list of items from'),
'#required' => TRUE,
'#weight' => -2
);
$form['fedora_repository_pid'] = array(
'#type' => 'textfield',
'#title' => t('Default collection PID'),
'#default_value' => variable_get('fedora_repository_pid', 'islandora:top'),
'#description' => t('The PID of the collection object to grab the list of items from'),
'#required' => TRUE,
'#weight' => -2
'#type' => 'textfield',
'#title' => t('Default collection PID'),
'#default_value' => variable_get('fedora_repository_pid', 'islandora:top'),
'#description' => t('The PID of the collection object to grab the list of items from'),
'#required' => TRUE,
'#weight' => -2
);
$form['fedora_collection_model_pid'] = array(
'#type' => 'textfield',
'#title' => t('Default Collection Model PID'),
'#default_value' => variable_get('fedora_collection_model_pid', 'islandora:collectionCModel'),
'#description' => t('The PID of the default Collection Model Object'),
'#required' => TRUE,
'#weight' => -2
'#type' => 'textfield',
'#title' => t('Default Collection Model PID'),
'#default_value' => variable_get('fedora_collection_model_pid', 'islandora:collectionCModel'),
'#description' => t('The PID of the default Collection Model Object'),
'#required' => TRUE,
'#weight' => -2
);
$form['fedora_content_model_collection_pid'] = array(
'#type' => 'textfield',
'#title' => t('Default Content Model Collection PID'),
'#default_value' => variable_get('fedora_content_model_collection_pid', 'islandora:ContentModelCollection'),
'#description' => t('The PID of the Content Model Collection Object'),
'#required' => TRUE,
'#weight' => -2
'#type' => 'textfield',
'#title' => t('Default Content Model Collection PID'),
'#default_value' => variable_get('fedora_content_model_collection_pid', 'islandora:ContentModelCollection'),
'#description' => t('The PID of the Content Model Collection Object'),
'#required' => TRUE,
'#weight' => -2
);
$form['fedora_repository_url'] = array(
'#type' => 'textfield',
'#title' => t('Fedora RISearch URL'),
'#default_value' => variable_get('fedora_repository_url',
'http://localhost:8080/fedora/risearch'),
'#description' => t('The url of the Fedora server'), '#required' => TRUE,
'#weight' => 0
'#type' => 'textfield',
'#title' => t('Fedora RISearch URL'),
'#default_value' => variable_get('fedora_repository_url',
'http://localhost:8080/fedora/risearch'),
'#description' => t('The url of the Fedora server'), '#required' => TRUE,
'#weight' => 0
);
$form['fedora_fgsearch_url'] = array(
'#type' => 'textfield',
'#title' => t('Fedora Lucene search URL'),
'#default_value' => variable_get('fedora_fgsearch_url', 'http://localhost:8080/fedoragsearch/rest'),
'#description' => t('The url of the Lucene Fedora server'),
'#required' => TRUE,
'#weight' => 0
'#type' => 'textfield',
'#title' => t('Fedora Lucene search URL'),
'#default_value' => variable_get('fedora_fgsearch_url', 'http://localhost:8080/fedoragsearch/rest'),
'#description' => t('The url of the Lucene Fedora server'),
'#required' => TRUE,
'#weight' => 0
);
$form['fedora_index_name'] = array(
'#type' => 'textfield',
'#title' => t('Fedora Lucene index name'),
'#default_value' => variable_get('fedora_index_name', 'BasicIndex'),
'#description' => t('The name of the Lucene index to search'),
'#required' => TRUE,
'#weight' => 0
'#type' => 'textfield',
'#title' => t('Fedora Lucene index name'),
'#default_value' => variable_get('fedora_index_name', 'BasicIndex'),
'#description' => t('The name of the Lucene index to search'),
'#required' => TRUE,
'#weight' => 0
);
$form['fedora_soap_url'] = array(
'#type' => 'textfield',
'#title' => t('Fedora SOAP Url'),
'#default_value' => variable_get('fedora_soap_url', 'http://localhost:8080/fedora/services/access?wsdl'),
'#description' => t('The URL to use for SOAP connections'),
'#required' => TRUE,
'#weight' => 0,
// '#suffix' => '<p>'. (fedora_available() ? '<img src="'. url('misc/watchdog-ok.png') . '"/>'. t('Successfully connected to Fedora server at ') : '<img src="'. url('misc/watchdog-error.png') . '"/> '. t('Unable to connect to Fedora server at ')) . variable_get('fedora_soap_url', '') . '</p>',
'#suffix' => '<p>' . (fedora_available() ? '<img src="' . url('misc/watchdog-ok.png') . '"/>' . t('Successfully connected to Fedora server at !fedora_soap_url', array('!fedora_soap_url' => variable_get('fedora_soap_url', ''))) : '<img src="' . url('misc/watchdog-error.png') . '"/> ' . t('Unable to connect to Fedora server at !fedora_soap_url</p>', array('!fedora_soap_url' => variable_get('fedora_soap_url', '')))),
'#type' => 'textfield',
'#title' => t('Fedora SOAP Url'),
'#default_value' => variable_get('fedora_soap_url', 'http://localhost:8080/fedora/services/access?wsdl'),
'#description' => t('The URL to use for SOAP connections'),
'#required' => TRUE,
'#weight' => 0,
'#suffix' => '<p>' . (fedora_available() ? '<img src="' . url('misc/watchdog-ok.png') . '"/>' . t('Successfully connected to Fedora server at !fedora_soap_url', array('!fedora_soap_url' => variable_get('fedora_soap_url', ''))) : '<img src="' . url('misc/watchdog-error.png') . '"/> ' . t('Unable to connect to Fedora server at !fedora_soap_url</p>', array('!fedora_soap_url' => variable_get('fedora_soap_url', '')))),
);
$form['fedora_base_url'] = array(
'#type' => 'textfield',
'#title' => t('Fedora base URL'),
'#default_value' => variable_get('fedora_base_url', 'http://localhost:8080/fedora'),
'#description' => t('The URL to use for REST-type connections'),
'#required' => TRUE,
'#weight' => 0,
'#type' => 'textfield',
'#title' => t('Fedora base URL'),
'#default_value' => variable_get('fedora_base_url', 'http://localhost:8080/fedora'),
'#description' => t('The URL to use for REST-type connections'),
'#required' => TRUE,
'#weight' => 0,
);
$form['fedora_soap_manage_url'] = array(
'#type' => 'textfield',
'#title' => t('Fedora SOAP management URL'),
'#default_value' => variable_get('fedora_soap_manage_url', 'http://localhost:8080/fedora/services/management?wsdl'), '#description' => t('The URL to use for SOAP API-M connections'),
'#required' => TRUE,
'#weight' => 0
'#type' => 'textfield',
'#title' => t('Fedora SOAP management URL'),
'#default_value' => variable_get('fedora_soap_manage_url', 'http://localhost:8080/fedora/services/management?wsdl'), '#description' => t('The URL to use for SOAP API-M connections'),
'#required' => TRUE,
'#weight' => 0
);
$form['fedora_solr_search_url'] = array(
'#type' => 'textfield',
'#title' => t('Fedora Solr search URL'),
'#default_value' => variable_get('fedora_solr_search_url', 'http://localhost:8080/solr'), '#description' => t('The URL to use for Solr searching'),
'#required' => TRUE,
'#weight' => 0
'#type' => 'textfield',
'#title' => t('Fedora Solr search URL'),
'#default_value' => variable_get('fedora_solr_search_url', 'http://localhost:8080/solr'), '#description' => t('The URL to use for Solr searching'),
'#required' => TRUE,
'#weight' => 0
);
$form['fedora_namespace'] = array(
// will allow admin user to remove namepsace restrictions if not explicitly disallowed in settings.php
if (variable_get('allow_open_namespace', TRUE)) {
$form['fedora_namespace'] = array(
'#type' => 'fieldset',
);
);
$form['fedora_namespace']['fedora_namespace_restriction_enforced'] = array(
$form['fedora_namespace']['fedora_namespace_restriction_enforced'] = array(
'#weight' => -1,
'#type' => 'radios',
'#title' => t('Enforce namespace restrictions'),
'#options' => array(
TRUE => t('Enabled'),
FALSE => t('Disabled')
TRUE => t('Enabled'),
FALSE => t('Disabled')
),
'#description' => t('Allow administrator to restrict user\'s access to the PID namepaces listed below' ),
'#default_value' => variable_get('fedora_namespace_restriction_enforced',TRUE)
);
'#description' => t('Allow administrator to restrict user\'s access to the PID namepaces listed below'),
'#default_value' => variable_get('fedora_namespace_restriction_enforced', TRUE)
);
$form['fedora_namespace']['fedora_pids_allowed'] = array(
$form['fedora_namespace']['fedora_pids_allowed'] = array(
'#type' => 'textfield',
'#title' => t('PID namespaces allowed in this Drupal install'),
'#default_value' => variable_get('fedora_pids_allowed', 'default: demo: changeme: islandora: ilives: '),
'#description' => t('A space separated list PID namespaces that users are permitted to access from this Drupal installation. <br /> This could be more than a simple namespace ie demo:mydemos.'),
'#weight' => 0
);
/*
$form['fedora_admin_user'] = array(
'#type' => 'textfield',
'#title' => t('A user with the Drupal role administrator'),
'#default_value' => variable_get('fedora_admin_user', 'admin'),
'#description' => t('A user with the administrator role. This is the user the Islandora module will use when admin access is needed for a task, such as creating a collection object for a new user.'),
'#required' => TRUE, '#weight' => 0
);
$form['fedora_searchterms_location'] = array(
'#type' => 'file',
'#title' => 'SearchTerms.xml file location',
}
else {
$form['fedora_pids_allowed'] = array(
'#type' => 'textfield',
'#title' => t('PID namespaces allowed in this Drupal install'),
'#default_value' => variable_get('fedora_pids_allowed', 'default: demo: changeme: islandora: ilives: '),
'#description' => t('A space separated list PID namespaces that users are permitted to access from this Drupal installation. <br /> This could be more than a simple namespace ie demo:mydemos.'),
'#weight' => 0
);
*/
}
$form['fedora_repository_title'] = array(
'#type' => 'textfield',
'#title' => t('Fedora Repository Title'),
'#default_value'=> variable_get('fedora_repository_title', 'Digital Repository'),
'#description' => t('The title displayed when viewing collections and objects in /fedora/repository. Leave blank to display no title. Note that the menus must be rebuilt after changing this variable.'),
'#type' => 'textfield',
'#title' => t('Fedora Repository Title'),
'#default_value' => variable_get('fedora_repository_title', 'Digital Repository'),
'#description' => t('The title displayed when viewing collections and objects in /fedora/repository. Leave blank to display no title. Note that the menus must be rebuilt after changing this variable.'),
);
$form['fedora_object_display_title'] = array(
'#type' => 'select',
'#title' => t('Display Object Title Behaviour'),
'#default_value'=> variable_get('fedora_object_display_title', ObjectHelper::$DISPLAY_ALWAYS),
'#options' => array(ObjectHelper::$DISPLAY_ALWAYS=>t('Always'),ObjectHelper::$DISPLAY_NEVER=>t('Never'),ObjectHelper::$DISPLAY_NO_MODEL_OUTPUT=>t('Only if no Content Model display output.')),
'#description' => t('Determines when to display the object (or collection) title when viewing an object/collection page.'),
'#type' => 'select',
'#title' => t('Display Object Title Behaviour'),
'#default_value' => variable_get('fedora_object_display_title', ObjectHelper::$DISPLAY_ALWAYS),
'#options' => array(ObjectHelper::$DISPLAY_ALWAYS => t('Always'), ObjectHelper::$DISPLAY_NEVER => t('Never'), ObjectHelper::$DISPLAY_NO_MODEL_OUTPUT => t('Only if no Content Model display output.')),
'#description' => t('Determines when to display the object (or collection) title when viewing an object/collection page.'),
);
$form['fedora_object_display_description'] = array(
'#type' => 'select',
'#title' => t('Display Object Description Behaviour'),
'#default_value'=> variable_get('fedora_object_display_description', ObjectHelper::$DISPLAY_ALWAYS),
'#options' => array(ObjectHelper::$DISPLAY_ALWAYS=>t('Always'),ObjectHelper::$DISPLAY_NEVER=>t('Never'),ObjectHelper::$DISPLAY_NO_MODEL_OUTPUT=>t('Only if no Content Model display output.')),
'#default_value' => variable_get('fedora_object_display_description', ObjectHelper::$DISPLAY_ALWAYS),
'#options' => array(ObjectHelper::$DISPLAY_ALWAYS => t('Always'), ObjectHelper::$DISPLAY_NEVER => t('Never'), ObjectHelper::$DISPLAY_NO_MODEL_OUTPUT => t('Only if no Content Model display output.')),
'#description' => t('Determines when to display the default object (or collection) description fieldset when viewing an object/collection page.'),
);
$form['fedora_object_restrict_datastreams'] = array(
'#type' => 'checkbox',
'#title' => t('Restrict Access to Fedora Object Datastreams'),
'#default_value'=> variable_get('fedora_object_restrict_datastreams', FALSE),
'#default_value' => variable_get('fedora_object_restrict_datastreams', FALSE),
'#description' => t('When enabled, restricts access to fedora object datastreams that are not listed in the Islandora Content Model for the object (unless the user is an administrator).'),
);
);
$form['fedora_collection_display_list'] = array(
'#type' => 'select',
'#title' => t('Display Collection List Behaviour'),
'#default_value'=> variable_get('fedora_collection_display_list', ObjectHelper::$DISPLAY_ALWAYS),
'#options' => array(ObjectHelper::$DISPLAY_ALWAYS=>t('Always'),ObjectHelper::$DISPLAY_NEVER=>t('Never'),ObjectHelper::$DISPLAY_NO_MODEL_OUTPUT=>t('Only if no Content Model display output.')),
'#default_value' => variable_get('fedora_collection_display_list', ObjectHelper::$DISPLAY_ALWAYS),
'#options' => array(ObjectHelper::$DISPLAY_ALWAYS => t('Always'), ObjectHelper::$DISPLAY_NEVER => t('Never'), ObjectHelper::$DISPLAY_NO_MODEL_OUTPUT => t('Only if no Content Model display output.')),
'#description' => t('Determines when to display the list of objects when viewing a collection page.'),
);
//Export functionality
$form['module']['export_area'] = array(
'#type' => 'textfield',
'#title' => t('Export area'),
'#default_value' => variable_get('export_area', file_directory_path() . '/fedora_export_area'),
'#description' => t("Path to the export area. It must be accessible by druapl (i.e. apache user)."),
'#required' => TRUE,
'#type' => 'textfield',
'#title' => t('Export area'),
'#default_value' => variable_get('export_area', file_directory_path() . '/fedora_export_area'),
'#description' => t("Path to the export area. It must be accessible by druapl (i.e. apache user)."),
'#required' => TRUE,
);
$form['#attributes'] = array('enctype' => "multipart/form-data");
@ -450,7 +410,7 @@ class formClass {
if (!strcmp(substr($key, 0, 4), 'app_')) {
$key = substr($key, 4);
$previousElement->appendChild($dom->createElement($key, $value));
}
}
else {
$previousElement = $dom->createElement($key, $value);
$oai->appendChild($previousElement);
@ -471,14 +431,14 @@ class formClass {
$pid = $form_values['pid'];
$dsId = $form_values['dsid'];
$params = array(
"pid" => $pid,
"dsID" => $dsId,
"altIDs" => "",
"dsLabel" => "Qualified Dublin Core",
"MIMEType" => "text/xml",
"formatURI" => "URL",
"dsContent" => $dom->saveXML(), "checksumType" => "DISABLED", "checksum" => "none",
"logMessage" => "datastream_modified", "force" => "TRUE");
"pid" => $pid,
"dsID" => $dsId,
"altIDs" => "",
"dsLabel" => "Qualified Dublin Core",
"MIMEType" => "text/xml",
"formatURI" => "URL",
"dsContent" => $dom->saveXML(), "checksumType" => "DISABLED", "checksum" => "none",
"logMessage" => "datastream_modified", "force" => "TRUE");
try {
$object = $client->__soapCall('ModifyDatastreamByValue', array($params));
} catch (exception $e) {
@ -543,17 +503,16 @@ class formClass {
switch ($form_state['storage']['step']) {
case 1:
$form['indicator'] = array(
'#type' => 'fieldset',
'#title' => t('Ingest digital object into collection_pid !collection_label Step #1', array('collection_pid' => $collection_pid, '!collection_label' => $collection_label))
'#type' => 'fieldset',
'#title' => t('Ingest digital object into collection_pid !collection_label Step #1', array('collection_pid' => $collection_pid, '!collection_label' => $collection_label))
);
$form['indicator']['models'] = array(// content models available
'#type' => 'select',
'#title' => t('Content models available'),
'#options' => $modelsForForm,
//'#description' => t('Content models available in this collection. A content model defines what is allowed in a collection and what to do with a file when it is uploaded (An example may creating a thumbnail from an image.).')
'#description' => t('Content models define datastream composition, relationships between this and other content models, and the mandatory behaviors associated with each digital object.<br /> Additional information may be found <a href="https://wiki.duraspace.org/display/FEDORACREATE/Content+Models+Overview">here.</a> ')
'#type' => 'select',
'#title' => t('Content models available'),
'#options' => $modelsForForm,
//'#description' => t('Content models available in this collection. A content model defines what is allowed in a collection and what to do with a file when it is uploaded (An example may creating a thumbnail from an image.).')
'#description' => t('Content models define datastream composition, relationships between this and other content models, and the mandatory behaviors associated with each digital object.<br /> Additional information may be found <a href="https://wiki.duraspace.org/display/FEDORACREATE/Content+Models+Overview">here.</a> ')
);
break;
@ -577,22 +536,22 @@ class formClass {
}
$form['collection_pid'] = array(
'#type' => 'hidden',
'#value' => $collection_pid
'#type' => 'hidden',
'#value' => $collection_pid
);
if ($form_state['storage']['step'] < 2) {
$button_name = t('Next');
}
}
else {
$prefix = t('Please be patient. Once you click next there may be a number of files created. Depending on your content model this could take a few minutes to process.<br />');
$button_name = t('Ingest');
}
$form['submit'] = array(
'#type' => 'submit',
'#submit' => array('fedora_repository_ingest_form_submit'),
'#value' => $button_name
'#type' => 'submit',
'#submit' => array('fedora_repository_ingest_form_submit'),
'#value' => $button_name
);
return $form;
@ -632,13 +591,13 @@ class formClass {
if ($form_state['submitted'] && $form_state['clicked_button']['#value'] != 'OK') {
$form['add_datastream_label'] = array(
'#value' => t('<br /><h3>The datastream has been uploaded.</h3>'),
'#weight' => -10,
'#value' => t('<br /><h3>The datastream has been uploaded.</h3>'),
'#weight' => -10,
);
$form['#redirect'] = "fedora/repository/$pid/";
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('OK')
'#type' => 'submit',
'#value' => t('OK')
);
return $form;
}
@ -650,68 +609,53 @@ class formClass {
}
$form['add_datastream_label'] = array(
'#value' => t('<br /><h3>Add Datastream:</h3>'),
'#weight' => -10,
'#value' => t('<br /><h3>Add Datastream:</h3>'),
'#weight' => -10,
);
$form['pid'] = array(
'#type' => 'hidden',
'#value' => "$pid"
'#type' => 'hidden',
'#value' => "$pid"
);
/*
$form['stream_location'] = array (
'#title' => 'File Location',
'#required' => 'TRUE',
'#description' => 'The path to the file for the new datastream',
//'#prefix' => '<a onclick="window.open(\'?q=imce/browse\', \'_imce_fedora_\', \'width=640, height=600, resizable=1\')" href="#">Upload File</a>',
'#type' => 'hidden'
);
*/
$form['stream_label'] = array(
'#title' => 'Datastream Label',
'#required' => 'TRUE',
'#description' => t('A Human readable label'),
'#type' => 'textfield'
);
// $form['delete_file'] = array (
// '#title' => 'Remove File After Ingest',
// '#description' => 'Remove the file from the drupal file system after ingest into the Digital Repository.',
// '#type' => 'hidden',
// '#default_value' => 'remove_file',
// '#options' => $options
// );
'#title' => 'Datastream Label',
'#required' => 'TRUE',
'#description' => t('A Human readable label'),
'#type' => 'textfield'
);
$form['#attributes']['enctype'] = 'multipart/form-data';
$form['add-stream-file-location'] = array(
'#type' => 'file',
'#title' => t('Upload Document'),
'#size' => 48,
// '#required'=>'TRUE',
'#description' => t('The file to upload.')
'#type' => 'file',
'#title' => t('Upload Document'),
'#size' => 48,
// '#required'=>'TRUE',
'#description' => t('The file to upload.')
);
$form['#redirect'] = "fedora/repository/$pid/";
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Add Datastream')
'#type' => 'submit',
'#value' => t('Add Datastream')
);
if (!empty($unused_dsids)) {
$form['stream_id'] = array(
'#type' => 'select',
'#title' => t('Datastream ID'),
'#default_value' => variable_get('feed_item_length', 'teaser'),
'#weight' => '-1',
'#description' => t('Datastream IDs defined by the content model.'),
'#type' => 'select',
'#title' => t('Datastream ID'),
'#default_value' => variable_get('feed_item_length', 'teaser'),
'#weight' => '-1',
'#description' => t('Datastream IDs defined by the content model.'),
);
$form['stream_id']['#options'] = $unused_dsids;
}
}
else {
$form['stream_id'] = array(
'#title' => 'Datastream ID',
'#required' => 'TRUE',
'#description' => t('An ID for this stream that is unique to this object. Must start with a letter and contain only alphanumeric characters and dashes and underscores.'),
'#type' => 'textfield',
'#weight' => -1,
'#title' => 'Datastream ID',
'#required' => 'TRUE',
'#description' => t('An ID for this stream that is unique to this object. Must start with a letter and contain only alphanumeric characters and dashes and underscores.'),
'#type' => 'textfield',
'#weight' => -1,
);
}
return $form;
@ -748,31 +692,31 @@ class formClass {
$name = $dcItems->item($i)->nodeName;
if ($name == 'dc:description') {
$form["$name" . '-' . "$i"] = array(
'#title' => $name,
'#type' => 'textarea',
'#default_value' => $dcItems->item($i)->nodeValue,
'#description' => 'Dublin Core ' . substr($dcItems->item($i)->nodeName, 3)
'#title' => $name,
'#type' => 'textarea',
'#default_value' => $dcItems->item($i)->nodeValue,
'#description' => 'Dublin Core ' . substr($dcItems->item($i)->nodeName, 3)
);
}
}
elseif ($name == 'dc:title') {
$form["$name" . '-' . "$i"] = array(
'#title' => $name,
'#type' => 'textfield',
'#required' => 'TRUE',
'#default_value' => $dcItems->item($i)->nodeValue,
'#description' => 'Dublin Core ' . substr($dcItems->item($i)->nodeName, 3)
'#title' => $name,
'#type' => 'textfield',
'#required' => 'TRUE',
'#default_value' => $dcItems->item($i)->nodeValue,
'#description' => 'Dublin Core ' . substr($dcItems->item($i)->nodeName, 3)
);
}
}
else {
if ($oai_dc->item(0)->nodeName != $dcItems->item($i)->parentNode->nodeName) {
$description = strstr($name, ':');
$form['app_' . "$name" . '-' . "$i"] = array(
'#title' => $name,
'#type' => 'textfield',
'#default_value' => $dcItems->item($i)->nodeValue,
'#description' => 'Dublin Core ' . substr($description, 1)
'#title' => $name,
'#type' => 'textfield',
'#default_value' => $dcItems->item($i)->nodeValue,
'#description' => 'Dublin Core ' . substr($description, 1)
);
}
}
else {
$field_type = 'textfield';
$value = $dcItems->item($i)->nodeValue;
@ -784,26 +728,26 @@ class formClass {
}
$description = strstr($name, ':');
$form["$name" . '-' . "$i"] = array(
'#title' => $name,
'#type' => $field_type,
'#default_value' => $value,
'#description' => 'Dublin Core ' . substr($description, 1)
'#title' => $name,
'#type' => $field_type,
'#default_value' => $value,
'#description' => 'Dublin Core ' . substr($description, 1)
);
}
}
}
// $form['#redirect'] = "fedora/repository/$pid/";
$form['pid'] = array(
'#type' => 'hidden',
'#value' => "$pid"
'#type' => 'hidden',
'#value' => "$pid"
);
$form['dsid'] = array(
'#type' => 'hidden',
'#value' => "$dsId"
'#type' => 'hidden',
'#value' => "$dsId"
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Update Metadata'),
'#type' => 'submit',
'#value' => t('Update Metadata'),
);
return $form;
@ -817,62 +761,33 @@ class formClass {
$form['#attributes']['enctype'] = 'multipart/form-data';
$form['file'] = array(
'#type' => 'file',
'#title' => t('Upload Document'),
'#description' => t('The file to upload.')
'#type' => 'file',
'#title' => t('Upload Document'),
'#description' => t('The file to upload.')
);
$form['pid'] = array(
'#type' => 'value',
'#value' => $pid,
'#type' => 'value',
'#value' => $pid,
);
$form['dsId'] = array(
'#type' => 'value',
'#value' => $dsId,
'#type' => 'value',
'#value' => $dsId,
);
$form['dsLabel'] = array(
'#type' => 'value',
'#value' => $dsLabel,
'#type' => 'value',
'#value' => $dsLabel,
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Replace Datastream')
'#type' => 'submit',
'#value' => t('Replace Datastream')
);
return $form;
}
/*
function createReplaceDataStreamForm($pid, $dsId, &$form_state) {
$form = array();
$form['#attributes']['enctype'] = 'multipart/form-data';
$form['file'] = array(
'#type' => 'file',
'#title' => t('Upload Document'),
'#description' => t('The file to upload.')
);
$form['pid'] = array(
'#type' => 'value',
'#value' => $pid,
);
$form['dsId'] = array(
'#type' => 'value',
'#value' => $dsId,
);
$form['submit']=array(
'#type' => 'submit',
'#value'=>t('Replace Datastream')
);
return $form;
}
*/
}

Loading…
Cancel
Save