diff --git a/ObjectHelper.inc b/ObjectHelper.inc
index 5928bd10..e84a297e 100644
--- a/ObjectHelper.inc
+++ b/ObjectHelper.inc
@@ -32,7 +32,7 @@ class ObjectHelper {
//$this->fedoraPass = $connectionHelper->getPassword();
}
- /**
+ /**
* Grabs a stream from fedora sets the mimetype and returns it. $dsID is the
* datastream id. If $forceSoap is set, the function will always buffer the datastream from fedora. Otherwise, it will
* try and use a redirect if possible.
@@ -41,7 +41,7 @@ class ObjectHelper {
*/
function makeObject($pid, $dsID, $asAttachment = FALSE, $label = NULL, $filePath=FALSE, $version=NULL, $forceSoap = TRUE) {
global $user;
- module_load_include('inc','fedora_repository','ContentModel');
+ module_load_include('inc', 'fedora_repository', 'ContentModel');
if ($pid == NULL || $dsID == NULL) {
drupal_set_message(t("no pid or dsid given to create an object with"), 'error');
return ' ';
@@ -58,21 +58,21 @@ class ObjectHelper {
drupal_set_message(t("You do not have access Fedora objects within the attempted namespace."), 'error');
drupal_access_denied();
return ' ';
- }
+ }
-
- if (variable_get('fedora_object_restrict_datastreams', FALSE) == TRUE ) {
+
+ if (variable_get('fedora_object_restrict_datastreams', FALSE) == TRUE) {
if (($cm = ContentModel::loadFromObject($pid)) == FALSE) {
- drupal_set_message(t("You do not have access to objects without an Islandora Content Model."), 'error');
- drupal_access_denied();
- return ' ';
+ drupal_set_message(t("You do not have access to objects without an Islandora Content Model."), 'error');
+ drupal_access_denied();
+ return ' ';
}
$cmDatastreams = $cm->listDatastreams();
- if ( !((isset($user) && in_array('administrator',$user->roles)) || in_array($dsID,$cmDatastreams))) {
- drupal_set_message(t("You do not have access to the specified datastream."), 'error');
- drupal_access_denied();
- return ' ';
+ if (!((isset($user) && in_array('administrator', $user->roles)) || in_array($dsID, $cmDatastreams))) {
+ drupal_set_message(t("You do not have access to the specified datastream."), 'error');
+ drupal_access_denied();
+ return ' ';
}
}
@@ -81,9 +81,9 @@ class ObjectHelper {
if (isset($item->datastreams[$dsID])) {
- $mimeType=$item->datastreams[$dsID]['MIMEType'];
- if ($label == NULL) {
- $label = $item->datastreams[$dsID]['label'];
+ $mimeType = $item->datastreams[$dsID]['MIMEType'];
+ if ($label == NULL) {
+ $label = $item->datastreams[$dsID]['label'];
}
} else {
drupal_not_found();
@@ -94,7 +94,7 @@ class ObjectHelper {
if ((!isset($user)) || $user->uid == 0) {
$fedoraUser = 'anonymous';
$fedoraPass = 'anonymous';
- $contentSize= 0;
+ $contentSize = 0;
} else {
$fedoraUser = $user->name;
$fedoraPass = $user->pass;
@@ -102,7 +102,7 @@ class ObjectHelper {
$contentSize = $dataStreamInfo->datastream->size;
}
- if (function_exists("curl_init")) {
+ if (function_exists("curl_init")) {
if (!isset($mimeType)) {
$pid = variable_get('fedora_default_display_pid', 'demo:10');
$dsID = variable_get('fedora_default_display_dsid', 'TN');
@@ -137,10 +137,10 @@ class ObjectHelper {
fclose($fp);
} else {
- header("Content-type: $mimeType");
- if ($contentSize > 0) {
- header("Content-length: $contentSize");
- }
+ header("Content-type: $mimeType");
+ if ($contentSize > 0) {
+ header("Content-length: $contentSize");
+ }
if ($asAttachment) {
$suggestedFileName = "$label";
@@ -165,18 +165,18 @@ class ObjectHelper {
header('Content-Disposition: attachment; filename="' . $suggestedFileName . '"');
}
-
- if ( (isset($user) && $user->uid != 0) || $forceSoap || isset($_SERVER['HTTPS'])) {
- curl_exec($ch);
- } else {
- header('Location: '.$url);
- }
+
+ if ((isset($user) && $user->uid != 0) || $forceSoap || isset($_SERVER['HTTPS'])) {
+ curl_exec($ch);
+ } else {
+ header('Location: ' . $url);
+ }
}
curl_close($ch);
} else {
drupal_set_message(t('No curl support.'), 'error');
}
- }
+ }
//Gets collection objects t
function getCollectionInfo($pid, $query = NULL) {
@@ -258,14 +258,14 @@ class ObjectHelper {
$item = new Fedora_Item($pid);
if (user_access(ObjectHelper :: $PURGE_FEDORA_OBJECTSANDSTREAMS)) {
- $allow=TRUE;
- if (module_exists('fedora_fesl')) {
- $allow= fedora_fesl_check_roles($pid,'write');
+ $allow = TRUE;
+ if (module_exists('fedora_fesl')) {
+ $allow = fedora_fesl_check_roles($pid, 'write');
}
if ($allow) {
- $purgeImage = '';
+ $purgeImage = '';
}
} else {
$purgeImage = ' ';
@@ -274,16 +274,16 @@ class ObjectHelper {
// Add an icon to replace a datastream
// @TODO Note: using l(theme_image(..), ...); for these image links (and other links) may remove the need to have clean urls enabled.
- $replaceImage= ' ';
+ $replaceImage = ' ';
if (user_access(ObjectHelper :: $ADD_FEDORA_STREAMS)) {
- $allow=TRUE;
- if (module_exists('fedora_fesl')) {
- $allow= fedora_fesl_check_roles($pid,'write');
+ $allow = TRUE;
+ if (module_exists('fedora_fesl')) {
+ $allow = fedora_fesl_check_roles($pid, 'write');
}
if ($allow) {
- $replaceImage = 'label . '" href="' . $base_url . '/fedora/repository/replaceStream/' . $pid . '/' . $dataStreamValue->ID . '/' . $dataStreamValue->label . '">';
+ $replaceImage = 'label . '" href="' . $base_url . '/fedora/repository/replaceStream/' . $pid . '/' . $dataStreamValue->ID . '/' . $dataStreamValue->label . '">';
}
- }
+ }
$content = '';
$id = $dataStreamValue->ID;
@@ -292,7 +292,7 @@ class ObjectHelper {
$mimeType = $dataStreamValue->MIMEType;
$view = '' . t('View') . '';
+ '" target="_blank" >' . t('View') . '';
$action = "$base_url/fedora/repository/object_download/" . drupal_urlencode($pid) . '/' . $id . '/' . drupal_urlencode(preg_replace('/\//i', '${1}_', $label)); // Necessary to handle the case of Datastream labels that contain slashes. Ugh.
$downloadVersion = '
';
if (user_access(ObjectHelper :: $EDIT_FEDORA_METADATA)) {
@@ -319,8 +319,10 @@ class ObjectHelper {
$dsid = array_key_exists('QDC', $item->get_datastreams_list_as_array()) ? 'QDC' : 'DC';
$xmlstr = $item->get_datastream_dissemination($dsid);
+
if (empty($xmlstr)) {
return '';
+
}
try {
@@ -365,19 +367,45 @@ class ObjectHelper {
//$baseUrl=substr($baseUrl, 0, (strpos($baseUrl, "/")-1));
if (user_access(ObjectHelper :: $EDIT_FEDORA_METADATA)) {
- $allow=TRUE;
- if (module_exists('fedora_fesl')) {
- $allow= fedora_fesl_check_roles($pid,'write');
+ $allow = TRUE;
+ if (module_exists('fedora_fesl')) {
+ $allow = fedora_fesl_check_roles($pid, 'write');
}
if ($allow) {
- $output .= '
';
+
+ $output .= '
';
+
}
}
return $output;
}
- function getFormattedDatastreamList($object_pid, $contentModels, &$fedoraItem) {
+
+ /**
+ * Gets a list of datastreams from an object using its pid
+ *
+ * We make some assumptions here. We have implemented a policy that
+ * we ingest in our repository will have TN (thumbnail) datastream. Even audio
+ * will have a picture of a speaker or something. This is not critical
+ * but makes searches etc. look better if there is a TN stream.
+ * This diplays all the streams in a collapsed fieldset at the bottom of the object page.
+ * you can implement a content model if you would like certain streams displayed in certain ways.
+ * @param $object_pid String
+ * @return String
+ *
+ */
+ function get_formatted_datastream_list($object_pid, $contentModels, &$fedoraItem) {
+ global $fedoraUser, $fedoraPass, $base_url, $user;
+ module_load_include('inc', 'fedora_repository', 'ConnectionHelper');
+ module_load_include('inc', 'fedora_repository', 'ObjectHelper');
+ module_load_include('inc', 'fedora_repository', 'api/fedora_item');
+ module_load_include('inc', 'fedora_repository', 'ContentModel');
+
+ $path = drupal_get_path('module', 'fedora_repository');
+ $dataStreamBody = '';
+ $fedoraItem = new Fedora_Item($object_pid);
+
if (user_access(ObjectHelper :: $VIEW_DETAILED_CONTENT_LIST)) {
$availableDataStreamsText = 'Detailed List of Content';
//$metaDataText='Description';
@@ -393,15 +421,14 @@ class ObjectHelper {
$cmDatastreams = array();
if (variable_get('fedora_object_restrict_datastreams', FALSE) == TRUE && ($cm = ContentModel::loadFromObject($object_pid)) !== FALSE) {
- $cmDatastreams = $cm->listDatastreams();
+ $cmDatastreams = $cm->listDatastreams();
}
$dataStreamBody .= $this->get_parent_objects_asHTML($object_pid);
$dataStreamBody .= '' . t("!text", array('!text' => $availableDataStreamsText)) . ' |
';
foreach ($object as $datastream) {
foreach ($datastream as $datastreamValue) {
-
- if (variable_get('fedora_object_restrict_datastreams', FALSE) == FALSE || ((isset($user) && in_array('administrator',$user->roles)) || in_array($datastreamValue->ID,$cmDatastreams))) {
+ if (variable_get('fedora_object_restrict_datastreams', FALSE) == FALSE || ((isset($user) && in_array('administrator', $user->roles)) || in_array($datastreamValue->ID, $cmDatastreams))) {
if ($datastreamValue->ID == 'OBJ') {
$hasOBJStream = '1';
$mainStreamLabel = $datastreamValue->label;
@@ -418,91 +445,27 @@ class ObjectHelper {
$dataStreamBody .= "\n";
//if they have access let them add a datastream
if (user_access(ObjectHelper :: $ADD_FEDORA_STREAMS)) {
- $allow=TRUE;
- if (module_exists('fedora_fesl')) {
- $allow= fedora_fesl_check_roles($object_pid,'write');
+ $allow = TRUE;
+ if (module_exists('fedora_fesl')) {
+ $allow = fedora_fesl_check_roles($object_pid, 'write');
}
if ($allow) {
$dataStreamBody .= drupal_get_form('add_stream_form', $object_pid);
}
}
+ $fieldset = array(
+ '#title' => t("!text", array('!text' => $availableDataStreamsText)),
+ '#collapsible' => TRUE,
+ '#collapsed' => TRUE,
+ '#value' => $dataStreamBody
+ );
+ $dataStreamBody = '' . theme('fieldset', $fieldset) . '
';
- $dataStreamBody = '' . $dataStreamBody . '
';
return $dataStreamBody;
}
return '';
}
- /**
- * Gets a list of datastreams from an object using its pid
- *
- * We make some assumptions here. We have implemented a policy that
- * we ingest in our repository will have TN (thumbnail) datastream. Even audio
- * will have a picture of a speaker or something. This is not critical
- * but makes searches etc. look better if there is a TN stream.
- * This diplays all the streams in a collapsed fieldset at the bottom of the object page.
- * you can implement a content model if you would like certain streams displayed in certain ways.
- * @param $object_pid String
- * @return String
- *
- */
- function get_formatted_datastream_list($object_pid, $contentModels, &$fedoraItem) {
- global $fedoraUser, $fedoraPass, $base_url, $user;
- module_load_include('inc', 'fedora_repository', 'ConnectionHelper');
- module_load_include('inc', 'fedora_repository', 'ObjectHelper');
- module_load_include('inc', 'fedora_repository', 'api/fedora_item');
- module_load_include('inc', 'fedora_repository', 'ContentModel');
-
- $path = drupal_get_path('module', 'fedora_repository');
- $dataStreamBody = '';
- $fedoraItem = new Fedora_Item($object_pid);
-
-
- $dataStreamBody = $this->getFormattedDatastreamList($object_pid, $contentModels, $fedoraItem);
- $content = '';
-
- if (empty($contentModels)) {
- //only show this stuff if there are no contentmodels
- if (isset($hasOBJStream)) {
- $content .= '';
- $content .= '';
- $content .= '';
- } else {
- //don't use thumbnail as link, we don't know which datastream to link to
- $content .= '';
- }
- }
-
- foreach ($contentModels as $contentModel) {
- $content .= $this->createExtraFieldsets($object_pid, $contentModel);
- }
-
- $content .= $dataStreamBody;
-
- if (user_access(ObjectHelper :: $PURGE_FEDORA_OBJECTSANDSTREAMS)) {
- $allow=TRUE;
- if (module_exists('fedora_fesl')) {
- $allow= fedora_fesl_check_roles($object_pid,'write');
- }
- if ($allow) {
- //$purgeObject = '' . t('Purge Object') . '';
- $purgeObject = drupal_get_form('fedora_repository_purge_object_form', $object_pid, check_plain(substr(request_uri(), strlen(base_path()))));
- }
- } else {
- $purgeObject = ' ';
- }
- $content .= $purgeObject;
-
- $addObject = " ";
- if (user_access(ObjectHelper :: $OBJECT_HELPER_VIEW_FEDORA)) {
- $addObject = theme('add_to_basket_link', $object_pid);
- }
- $content .= $addObject;
-
- return '' . $content . '
';
- }
-
/**
@@ -515,9 +478,9 @@ class ObjectHelper {
try {
$client = $soapHelper->getSoapClient(variable_get('fedora_soap_url', 'http://localhost:8080/fedora/services/access?wsdl'));
$params = array(
- 'pid' => "$pid",
- 'dsID' => "$dsid",
- 'asOfDateTime' => ""
+ 'pid' => "$pid",
+ 'dsID' => "$dsid",
+ 'asOfDateTime' => ""
);
if (!isset($client)) {
@@ -581,23 +544,29 @@ class ObjectHelper {
/*
* determines whether we can see the object or not
+ * checks PID namespace permissions, and user permissions
*/
function fedora_repository_access($op, $pid) {
global $user;
+
$returnValue = FALSE;
+ $isRestricted = variable_get('fedora_namespace_restriction_enforced', TRUE);
+ if (!$isRestricted) {
+ $namespaceAccess = TRUE;
+ }
if ($pid == NULL) {
$pid = variable_get('fedora_repository_pid', 'islandora:top');
}
- $nameSpaceAllowed = explode(" ", variable_get('fedora_pids_allowed', 'default: demo: changeme: Islandora: ilives: '));
+ $nameSpaceAllowed = explode(" ", variable_get('fedora_pids_allowed', 'default: demo: changeme: islandora: ilives: '));
$pos = NULL;
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;
@@ -653,21 +622,21 @@ class ObjectHelper {
$collectionPolicyExists = $objectHelper->getMimeType($pid, CollectionPolicy::getDefaultDSID());
if (user_access(ObjectHelper :: $INGEST_FEDORA_OBJECTS) && $collectionPolicyExists) {
if (!empty($collectionPolicyExists)) {
- $allow=TRUE;
- if (module_exists('fedora_fesl')) {
- $allow= fedora_fesl_check_roles($pid,'write');
- }
- if ($allow) {
- // $ingestObject = ' $collectionName, '!collection_pid' => $collection_pid)) . '" href="' . base_path() .
- 'fedora/ingestObject/' . $collection_pid . '/' . $collectionName . '">' . t(' Add to this Collection');
- }
- }
- }
- else {
+ $allow = TRUE;
+ if (module_exists('fedora_fesl')) {
+ $allow = fedora_fesl_check_roles($pid, 'write');
+ }
+ if ($allow) {
+ // $ingestObject = ' $collectionName, '!collection_pid' => $collection_pid)) . '" href="' . base_path() .
+ 'fedora/ingestObject/' . $collection_pid . '/' . $collectionName . '">' . t(' Add to this Collection');
+ }
+ }
+ } else {
$ingestObject = ' ';
}
+
}
$datastreams .= $ingestObject;
@@ -694,10 +663,10 @@ class ObjectHelper {
$metaDataText = t('Description');
$body = $this->getQDC($pid);
$fieldset = array(
- '#title' => t("!metaDataText", array('!metaDataText' => $metaDataText)),
- '#collapsible' => TRUE,
- '#collapsed' => TRUE,
- '#value' => $body
+ '#title' => t("!metaDataText", array('!metaDataText' => $metaDataText)),
+ '#collapsible' => TRUE,
+ '#collapsed' => TRUE,
+ '#value' => $body
);
$output .= theme('fieldset', $fieldset);
}
@@ -825,10 +794,10 @@ class ObjectHelper {
// Get pid, title and description for children of object $pid
$query_string = 'select $o $title from <#ri> ' .
// $query_string = 'select $o $title $desc from <#ri> '.
- 'where $s $o ' .
- 'and $o $title ' .
+ 'where $s $o ' .
+ 'and $o $title ' .
// 'and $o $desc '.
- 'and ( ';
+ 'and ( ';
foreach ($pids as $pid) {
$query_string .= '$s or ';
@@ -894,11 +863,13 @@ class ObjectHelper {
$url = variable_get('fedora_repository_url', 'http://localhost:8080/fedora/risearch');
$url .= "?type=tuples&flush=TRUE&format=CSV&limit=1&offset=0&lang=itql&stream=on&query=" . $query_string;
+
$result = preg_split('/[\r\n]+/',do_curl($url));
array_shift($result); // throw away first line
$matches =str_getcsv(join("\n",$result));
if ($matches !== FALSE) {
$parent = preg_replace('/^info:fedora\//','',$matches[0]);
+
$breadcrumbs[] = l($matches[1], 'fedora/repository/' . $pid);
if ($parent == variable_get('fedora_repository_pid', 'islandora:top')) {
$breadcrumbs[] = l(t('Digital repository'), 'fedora/repository');
@@ -913,9 +884,9 @@ class ObjectHelper {
public static function warnIfMisconfigured($app) {
$messMap = array(
- 'Kakadu' => 'Full installation instructions for Kakadu can be found
+ 'Kakadu' => 'Full installation instructions for Kakadu can be found
Here',
- 'ImageMagick' => 'Check the path settings in the configuration of your imageapi module.
+ 'ImageMagick' => 'Check the path settings in the configuration of your imageapi module.
Further details can be found Here',
);
diff --git a/SearchClass.inc b/SearchClass.inc
index 21fa114e..85a91968 100644
--- a/SearchClass.inc
+++ b/SearchClass.inc
@@ -208,42 +208,7 @@ class SearchClass {
}
- /*
- function custom_search($query,$pathToXslt=NULL){
- module_load_include('php', 'Fedora_Repository', 'ObjectHelper');
- module_load_include('inc', 'Fedora_Repository', 'api/fedora_utils');
- if (user_access('view fedora collection')) {
- $numberOfHistPerPage = '1000';//hack for IR they do not want next button
- $luceneQuery = NULL;
- //demo search string ?operation=gfindObjects&indexName=DemoOnLucene&query=fgs.DS.first.text%3Achristmas&hitPageStart=11&hitPageSize=10
-
-
- $indexName = variable_get('fedora_index_name', 'DemoOnLucene');
- $query=htmlentities(urlencode($query));
-
- $searchUrl = variable_get('fedora_fgsearch_url', 'http://localhost:8080/fedoragsearch/rest');
- $searchString = '?operation=gfindObjects&indexName=' . $indexName . '&restXslt=copyXml&query=' . $query;
- $searchString .= '&hitPageSize='.$numberOfHistPerPage.'&hitPageStart=1';
- //$searchString = htmlentities($searchString);
- $searchUrl .= $searchString;
-
- $objectHelper = new ObjectHelper();
-
- $resultData = do_curl($searchUrl,1);
- //var_dump($resultData);exit(0);
- // $doc = new DOMDocument();
- // $doc->loadXML($resultData);
- if($pathToXslt==NULL) {
- $output.=$this->applyLuceneXSLT($resultData,$query);
- }else{
- $output.=$this->applySpecifiedXSLT($resultData,$pathToXslt);
- }
-
- return $output;
-
- }
- }
- */
+
function custom_search($query, $startPage=1, $xslt= '/xsl/advanced_search_results.xsl', $numberOfHistPerPage = 50) {
module_load_include('inc', 'fedora_repository', 'ObjectHelper');
@@ -327,53 +292,7 @@ class SearchClass {
}
}
//default function for lucene results
- /*
- function applyLuceneXSLT($resultData, $query = NULL){
- $path = drupal_get_path('module', 'Fedora_Repository');
- $proc = NULL;
- if (!$resultData) {
- drupal_set_message(t('No Results!'));
- return ' '; //no results
- }
- try {
- $proc = new XsltProcessor();
- }
- catch (Exception $e) {
- drupal_set_message(t('Error loading results xslt! ') . $e->getMessage()) ;
- return ' ';
- }
-
- //inject into xsl stylesheet
- if(isset($query)){
- $proc->setParameter('', 'fullQuery', $query);
- }
- $proc->setParameter('', 'searchToken', drupal_get_token('fedora_repository_advanced_search')); //token generated by Drupal, keeps tack of what tab etc we are on
- $proc->setParameter('', 'searchUrl', url('search') . '/fedora_repository'); //needed in our xsl
- $proc->setParameter('', 'objectsPage', base_path());
- $proc->setParameter('', 'allowedPidNameSpaces', variable_get('fedora_pids_allowed', 'demo: changeme:'));
- $proc->registerPHPFunctions();
- $xsl = new DomDocument();
-
- $test= $xsl->load($path . '/xsl/results.xsl');
- if (!isset($test)) {
- drupal_set_message(t('Error loading search results XSLT!'));
- return t('Error loading search results XSLT.');
- }
-
- $input = new DomDocument();
- $didLoadOk = $input->loadXML($resultData);
-
- if (!isset($didLoadOk)) {
- drupal_set_message(t('Error loading search results!'));
- return t('Error loading search results.');
- }
- else {
- $proc->importStylesheet($xsl);
- $newdom = $proc->transformToDoc($input);
- return $newdom->saveXML();
- }
- }
- */
+
/**
* apply an xslt to lucene gsearch search results
@@ -385,6 +304,11 @@ class SearchClass {
*/
function applyLuceneXSLT($resultData, $startPage = 1, $xslt_file = '/xsl/results.xsl', $query=NULL) {
$path = drupal_get_path('module', 'Fedora_Repository');
+ $test = $xslt_file;
+ $isRestricted = variable_get('fedora_namespace_restriction_enforced',TRUE);
+ if(!isRestricted && $xslt_file == null){
+ $xslt_file = '/xsl/unfilteredresults.xsl';
+ }
$proc = NULL;
if (!$resultData) {
//drupal_set_message(t('No Results!'));
@@ -405,7 +329,7 @@ class SearchClass {
$proc->setParameter('', 'searchToken', drupal_get_token('fedora_repository_advanced_search')); //token generated by Drupal, keeps tack of what tab etc we are on
$proc->setParameter('', 'searchUrl', url('search') . '/fedora_repository'); //needed in our xsl
$proc->setParameter('', 'objectsPage', base_path());
- $proc->setParameter('', 'allowedPidNameSpaces', variable_get('fedora_pids_allowed', 'default: demo: changeme: Islandora: ilives: '));
+ $proc->setParameter('', 'allowedPidNameSpaces', variable_get('fedora_pids_allowed', 'default: demo: changeme: islandora: ilives: '));
$proc->setParameter('', 'hitPageStart', $startPage);
$proc->registerPHPFunctions();
$xsl = new DomDocument();
@@ -450,7 +374,7 @@ class SearchClass {
$proc->setParameter('', 'userID', $user->uid);
$proc->setParameter('', 'searchUrl', url('search') . '/fedora_repository'); //needed in our xsl
$proc->setParameter('', 'objectsPage', base_path());
- $proc->setParameter('', 'allowedPidNameSpaces', variable_get('fedora_pids_allowed', 'default: demo: changeme: Islandora: ilives: '));
+ $proc->setParameter('', 'allowedPidNameSpaces', variable_get('fedora_pids_allowed', 'default: demo: changeme: islandora: ilives: '));
$proc->setParameter('', 'orderBy', $orderBy);
$xsl = new DomDocument();
diff --git a/api/fedora_item.inc b/api/fedora_item.inc
index 5eb609bb..aabe5d32 100644
--- a/api/fedora_item.inc
+++ b/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,21 @@ 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 );
+
}
- 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 +121,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('
-
+
', 'RELS-EXT', 'Fedora object-to-object relationship metadata', 'text/xml', 'X');
}
@@ -133,32 +136,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 +208,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 +234,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 +251,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 +269,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 +314,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 +368,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 +430,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 +457,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 +475,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 +512,12 @@ class Fedora_Item {
// Verify the array format and that it isn't empty.
if (!empty($relationships)) {
$relsextxml = ''
- . '';
+ . '';
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,27 +541,28 @@ 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: '));
+ $allowed_namespaces = explode(" ", variable_get('fedora_pids_allowed', 'default: demo: changeme: islandora: ilives: '));
$pid_namespace = $allowed_namespaces[0];
if (!empty($pid_namespace)) {
$pid_namespace = substr($pid_namespace, 0, strpos($pid_namespace, ":"));
@@ -568,7 +571,7 @@ class Fedora_Item {
$pid_namespace = 'default';
}
}
-
+
$params = array(
'numPIDs' => '',
'pidNamespace' => $pid_namespace,
@@ -586,7 +589,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);
}
@@ -600,9 +603,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
@@ -610,20 +613,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,
@@ -636,11 +639,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,
@@ -653,10 +656,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();
@@ -684,25 +687,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));
}
@@ -710,19 +713,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.
@@ -766,7 +767,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);
@@ -778,7 +779,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) {
@@ -786,9 +787,9 @@ class Fedora_Item {
return $item->exists();
}
- /********************************************************
+ /* * ******************************************************
* Relationship Functions
- ********************************************************/
+ * ****************************************************** */
/**
* Returns an associative array of relationships that this item has
diff --git a/api/fedora_utils.inc b/api/fedora_utils.inc
index d884db2c..06fa0a8e 100644
--- a/api/fedora_utils.inc
+++ b/api/fedora_utils.inc
@@ -66,8 +66,10 @@ function do_curl($url, $return_to_variable = 1, $number_of_post_vars = 0, $post
}
function fedora_available() {
+
$response = do_curl(variable_get('fedora_base_url', 'http://localhost:8080/fedora').'/describe');
return strstr($response, 'Repository Information HTML Presentation') !== FALSE;
+
}
diff --git a/fedora_repository.install b/fedora_repository.install
index de8f31e8..84016939 100644
--- a/fedora_repository.install
+++ b/fedora_repository.install
@@ -36,9 +36,9 @@ function fedora_collections_enable() {
*/
function fedora_repository_requirements($phase) {
global $base_url;
-
+
$requirements = array();
-
+
if ($phase == 'install') {
$requirements['fedora-soap']['title'] = t("PHP SOAP extension library");
if (!class_exists('SoapClient')) {
@@ -53,23 +53,23 @@ function fedora_repository_requirements($phase) {
}
elseif ($phase == 'runtime') {
module_load_include('inc', 'fedora_repository', 'api/fedora_utils');
-
+
$requirements['fedora-repository']['title'] = t("Fedora server");
if (!fedora_available()) {
$requirements['fedora-repository']['value'] = t("Not available");
$requirements['fedora-repository']['severity'] = REQUIREMENT_ERROR;
- $requirements['fedora-repository']['description'] = t('Ensure that Fedora is running and that the collection settings are correct.',
+ $requirements['fedora-repository']['description'] = t('Ensure that Fedora is running and that the collection settings are correct.',
array('@collection-settings' => $base_url.'/admin/settings/fedora_repository'));
}
else {
$requirements['fedora-repository']['value'] = t("Available");
$requirements['fedora-repository']['severity'] = REQUIREMENT_OK;
}
-
+
// Check for ImageMagick
$requirements['fedora-imagemagick']['title'] = t("ImageMagick convert in \$PATH");
- system('which convert', $res);
- if ($res != 0) {
+ $result = exec('convert');
+ if (!$result) {
$requirements['fedora-imagemagick']['value'] = t('Not in $PATH');
$requirements['fedora-imagemagick']['description'] = t('Islandora will not be able to create thumbnails. Ensure that ImageMagick is installed and the convert command is executable by the web server user.');
$requirements['fedora-imagemagick']['severity'] = REQUIREMENT_WARNING;
@@ -78,10 +78,10 @@ function fedora_repository_requirements($phase) {
$requirements['fedora-imagemagick']['value'] = t("Available");
$requirements['fedora-imagemagick']['severity'] = REQUIREMENT_OK;
}
-
+
$requirements['fedora-kakadu']['title'] = 'Kakadu kdu_compress in $PATH';
- system('which kdu_compress', $kdu_res);
- if ($kdu_res != 0) {
+ $kdu_res = exec('kdu_compress -v');
+ if (!$kdu_res) {
$requirements['fedora-kakadu']['value'] = ('Not in $PATH');
$requirements['fedora-kakadu']['description'] = t('Islandora cannot convert TIFF image files to JPEG2000 format. Ensure Kakadu is installed and the kdu_compress command is executable by the web server user.');
$requirements['fedora-kakadu']['severity'] = REQUIREMENT_WARNING;
@@ -91,6 +91,6 @@ function fedora_repository_requirements($phase) {
$requirements['fedora-kakadu']['severity'] = REQUIREMENT_OK;
}
}
-
+
return $requirements;
}
\ No newline at end of file
diff --git a/fedora_repository.module b/fedora_repository.module
index 1388ed29..22914676 100644
--- a/fedora_repository.module
+++ b/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!
This cannot be undone
',
- array(
- '%name' => $name,
- '%pid' => $pid)
+ array(
+ '%name' => $name,
+ '%pid' => $pid)
);
$output .= drupal_get_form('fedora_repository_purge_object_form', $pid);
@@ -101,11 +101,11 @@ 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 ' ';
}
-
}
if ($collection_pid == NULL) {
@@ -145,7 +145,7 @@ function fedora_repository_ingest_form_submit($form, &$form_state) {
$form_state['values']['content_model_pid'] = $contentModelPid;
$form_state['values']['relationship'] = $relationship;
- $err = (!$cm->execFormHandler($form_state['values'],$form_state));
+ $err = (!$cm->execFormHandler($form_state['values'], $form_state));
$_SESSION['fedora_ingest_files'] = ''; //empty this variable
@@ -203,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');
@@ -242,32 +243,32 @@ function fedora_repository_purge_object_form(&$form_state, $pid, $referrer = NUL
return NULL;
}
$form['pid'] = array(
- '#type' => 'hidden',
- '#value' => "$pid"
+ '#type' => 'hidden',
+ '#value' => "$pid"
);
- if (!strstr( drupal_get_destination(), urlencode('fedora/repository'))) {
+ 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'])) {
+ if (!isset($form_state['storage']['confirm'])) {
// do your normal $form definition here
$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 (!empty($collectionPid)) {
$collectionPid = $_SESSION['fedora_collection'];
}
//$form['#redirect'] = $referrer;
-
+
return $form;
- }
+ }
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
@@ -369,9 +370,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);
@@ -396,8 +397,8 @@ function fedora_repository_purge_stream($pid = NULL, $dsId = NULL, $name = NULL)
}
$output = t('Are you sure you wish to purge this datastream %name
',
- array(
- '%name' => $name)
+ array(
+ '%name' => $name)
);
$output .= drupal_get_form('fedora_repository_purge_stream_form', $pid, $dsId);
return $output;
@@ -409,13 +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 {
// 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();
@@ -425,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;
@@ -446,16 +448,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;
@@ -544,11 +546,13 @@ function fedora_repository_replace_stream_form_submit($form, &$form_state) {
*/
$mimetype = new MimeClass();
$dformat = $mimetype->getType($file->filepath);
+
$item = new Fedora_Item($pid);
$item->modify_datastream_by_reference($streamUrl, $dsid, $dsLabel, $dformat);
$form_state['redirect'] = 'fedora/repository/' . $pid;
+
}
function fedora_repository_edit_qdc_page($pid = NULL, $dsId = NULL) {
@@ -651,13 +655,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,
);
}
@@ -719,22 +723,30 @@ function fedora_repository_get_items($pid = NULL, $dsId = NULL, $collection = NU
module_load_include('inc', 'fedora_repository', 'api/fedora_utils');
global $user;
+
if (!fedora_available()) {
drupal_set_message('The Fedora repository server is currently unavailable. Please contact the site administrator.', 'warning', FALSE);
return '';
}
if ($pid &!validPid($pid)) {
+
drupal_set_message(t("Invalid PID!"), 'error');
return ' ';
}
- if ($dsId &!validDsid($dsId)) {
+ if ($dsId & !validDsid($dsId)) {
drupal_set_message(t("Invalid dsID!"), 'error');
return ' ';
}
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');
+ //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;
return ' ';
}
@@ -835,11 +847,16 @@ function repository_page($pid = NULL, $dsId = NULL, $collection = NULL, $pageNum
}
function repository_service($pid = NULL, $servicePid = NULL, $serviceMethod = NULL) {
- module_load_include('inc','fedora_repository', 'api/fedora_item');
- module_load_include('inc','fedora_repository', 'ObjectHelper');
+ module_load_include('inc', 'fedora_repository', 'api/fedora_item');
+ module_load_include('inc', 'fedora_repository', 'ObjectHelper');
global $user;
+
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');
+ //drupal_set_message(t("You do not have access to Fedora objects within the attempted namespace or access to Fedora denied"), 'error');
+ drupal_access_denied();
+ 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'))), 'error');
+ }
return ' ';
}
if ($pid == NULL) {
@@ -852,15 +869,13 @@ function repository_service($pid = NULL, $servicePid = NULL, $serviceMethod = NU
return ' ';
}
-
- $item = new Fedora_Item($pid);
- if ($item !== false)
- {
- echo $item->get_dissemination($servicePid,$serviceMethod);
+
+ $item = new Fedora_Item($pid);
+ if ($item !== false) {
+ echo $item->get_dissemination($servicePid, $serviceMethod);
}
exit();
-
}
//Search Stuff ********************************************************************
@@ -925,7 +940,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)";
@@ -939,10 +955,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;
}
@@ -955,6 +971,7 @@ function fedora_repository_search($op = 'search', $keys = NULL) {
*/
function fedora_repository_search_page($resultData) {
$path = drupal_get_path('module', 'fedora_repository');
+ $isRestricted = variable_get('fedora_namespace_restriction_enforced', TRUE);
$proc = NULL;
if (!$resultData[0][0]['data']) {
return ''; //no results
@@ -965,10 +982,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;
}
@@ -980,36 +997,42 @@ function fedora_repository_search_page($resultData) {
$proc->setParameter('', 'allowedPidNameSpaces', variable_get('fedora_pids_allowed', 'default: demo: changeme: Islandora: ilives: '));
$proc->registerPHPFunctions();
$xsl = new DomDocument();
- $xsl->load($path . '/xsl/results.xsl');
- $quimby = $xsl;
+ if ($isRestricted) {
+ $xsl->load($path . '/xsl/results.xsl');
+ }
+ else {
+ $xsl->load($path . '/xsl/unfilteredresults.xsl');
+ }
+
$input = new DomDocument();
$didLoadOk = $input->loadXML(utf8_encode($resultData[0][0]['data']));
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);
@@ -1037,17 +1060,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' => '',
- '#suffix' => '
',
+ '#prefix' => '',
+ '#suffix' => '
',
);
$xmlDoc = new DomDocument();
$xmlDoc->load($path . '/searchTerms.xml');
@@ -1056,15 +1079,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' => '', '#suffix' => '
', '#options' => $types,
- '#default_value' => $type,
+ '#type' => 'select',
+ '#title' => t('Choose a field to search'),
+ '#prefix' => '', '#suffix' => '
', '#options' => $types,
+ '#default_value' => $type,
);
$form['advanced']['submit'] = array(
- '#type' => 'submit',
- '#value' => t('Advanced search'),
- '#prefix' => '', '#suffix' => '
',
+ '#type' => 'submit',
+ '#value' => t('Advanced search'),
+ '#prefix' => '', '#suffix' => '
',
);
$form['#validate'][] = 'fedora_repository_search_validate';
}
@@ -1098,7 +1121,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':
@@ -1112,11 +1135,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;
}
@@ -1150,21 +1173,22 @@ 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
),
+
'fedora_repository_solution_packs_list' => array(
'arguments' => array(
'solution_packs' => NULL,
),
),
+ ),
);
}
@@ -1192,6 +1216,7 @@ function theme_fedora_repository_mnpl_advanced_search_form($form) {
function fedora_repository_mnpl_advanced_search($query, $startPage = 1) {
module_load_include('inc', 'fedora_repository', 'SearchClass');
$searchClass = new SearchClass();
+ $retVal = $searchClass->custom_search($query, $startPage);
return $searchClass->custom_search($query, $startPage);
}
@@ -1225,18 +1250,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(
@@ -1255,7 +1280,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]);
}
}
@@ -1267,34 +1293,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' => 'If you install the '.l('fedora demo objects', 'https://wiki.duraspace.org/display/FCR30/Demonstration+Objects').' Islandora can display them as a collection.
'
+ '#value' => 'If you install the ' . l('fedora demo objects', 'https://wiki.duraspace.org/display/FCR30/Demonstration+Objects') . ' Islandora can display them as a collection.
'
);
}
$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' => 'Demo collections already installed in this repository:
',
+ '#prefix' => 'Demo collections already installed in this repository:
',
);
-
+
if (!empty($existing_demos)) {
foreach ($existing_demos as $pid => $demo_object) {
-
- $form['existing_demos'][$demo_object->pid] = array (
- '#prefix' => '',
- '#value' => l($demo_object->pid, $demo_object->url()),
- '#suffix' => '',
+
+ $form['existing_demos'][$demo_object->pid] = array(
+ '#prefix' => '',
+ '#value' => l($demo_object->pid, $demo_object->url()),
+ '#suffix' => '',
);
}
}
@@ -1406,7 +1434,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) {
@@ -1601,8 +1629,8 @@ function fedora_repository_required_fedora_objects() {
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;
@@ -1613,8 +1641,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')),
);
}
@@ -1637,9 +1665,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,
);
}
@@ -1693,7 +1721,8 @@ function fedora_repository_basket_form($form_state, $pids) {
$form['pid'] = array();
$form['title'] = array();
$form['desc'] = array();
- } else {
+ }
+ else {
return;
}
@@ -1707,28 +1736,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;
@@ -1736,22 +1765,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'));
}
@@ -1789,7 +1819,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']);
}
@@ -1824,7 +1855,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');
}
@@ -1874,7 +1906,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;
}
@@ -1908,9 +1941,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)
);
}
@@ -1926,7 +1959,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;
diff --git a/formClass.inc b/formClass.inc
index 4070ab23..36610cad 100644
--- a/formClass.inc
+++ b/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,21 +21,19 @@ 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(
@@ -51,175 +46,151 @@ class formClass {
);
$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;
}
@@ -229,194 +200,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' => ''. (fedora_available() ? ''. t('Successfully connected to Fedora server at ') : ' '. t('Unable to connect to Fedora server at ')) . variable_get('fedora_soap_url', '') . '
',
- '#suffix' => '' . (fedora_available() ? '' . t('Successfully connected to Fedora server at !fedora_soap_url', array('!fedora_soap_url' => variable_get('fedora_soap_url', ''))) : ' ' . t('Unable to connect to Fedora server at !fedora_soap_url
', 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' => '' . (fedora_available() ? '' . t('Successfully connected to Fedora server at !fedora_soap_url', array('!fedora_soap_url' => variable_get('fedora_soap_url', ''))) : ' ' . t('Unable to connect to Fedora server at !fedora_soap_url
', 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
- );
-
- /*
- $form['fedora_default_display_pid'] = array(
'#type' => 'textfield',
- '#title' => t('Fedora Default Display Object Pid' ),
- '#default_value' => variable_get('fedora_default_display_pid', 'demo:10'),
- '#description' => t('Object Pid of an Image to show if the requested pid/datastream cannot be found'),
+ '#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
+ );
+
+// 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_default_display_dsid'] = array(
- '#type' => 'textfield',
- '#title' => t('Fedora Default Display Datastream ID' ),
- '#default_value' => variable_get('fedora_default_display_dsid', 'TN'),
- '#description' => t('Object Datastream id of an Image to show if the requested pid/datastream cannot be found'),
- '#required' => TRUE,
- '#weight' => 0
+
+ $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')
+ ),
+ '#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_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('The PID namespaces that you are allowed to see from this Drupal install. In reality this can be more than a namespace as it could include demo:mydemos etc. Can be a space seperated list to include more than one PID namespace.'),
- '#required' => TRUE,
+ '#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.
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.
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");
@@ -452,7 +411,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);
@@ -473,14 +432,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) {
@@ -545,17 +504,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.
Additional information may be found here. ')
-
+ '#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.
Additional information may be found here. ')
);
break;
@@ -579,22 +537,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.
');
$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;
@@ -634,13 +592,13 @@ class formClass {
if ($form_state['submitted'] && $form_state['clicked_button']['#value'] != 'OK') {
$form['add_datastream_label'] = array(
- '#value' => t('
The datastream has been uploaded.
'),
- '#weight' => -10,
+ '#value' => t('
The datastream has been uploaded.
'),
+ '#weight' => -10,
);
$form['#redirect'] = "fedora/repository/$pid/";
$form['submit'] = array(
- '#type' => 'submit',
- '#value' => t('OK')
+ '#type' => 'submit',
+ '#value' => t('OK')
);
return $form;
}
@@ -652,49 +610,34 @@ class formClass {
}
$form['add_datastream_label'] = array(
- '#value' => t('
Add Datastream:
'),
- '#weight' => -10,
+ '#value' => t('
Add Datastream:
'),
+ '#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' => 'Upload File',
- '#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)) {
@@ -703,23 +646,21 @@ class formClass {
$dsidsForForm[$dsid]=$dsid;
}
$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'] = array_combine($unused_dsids, $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;
@@ -756,31 +697,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;
@@ -792,26 +733,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;
@@ -825,32 +766,32 @@ 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;
}
-}
+}
\ No newline at end of file
diff --git a/ilives/fedora_ilives.module b/ilives/fedora_ilives.module
index 46022943..55a9953d 100644
--- a/ilives/fedora_ilives.module
+++ b/ilives/fedora_ilives.module
@@ -548,6 +548,7 @@ function install_book_content_model_objects() {
module_load_include('inc', 'fedora_repository', 'api/fedora_item');
$allowed_pids_str = variable_get('fedora_pids_allowed', 'default: demo: changeme: Islandora: ilives: ');
$allowed_pids = explode(' ', $allowed_pids_str);
+
if (!in_array('ilives:', $allowed_pids)) {
variable_set('fedora_pids_allowed', $allowed_pids_str . ' ilives:');
diff --git a/plugins/fedoraObject.inc b/plugins/fedoraObject.inc
index d0f7cdbe..198698e9 100644
--- a/plugins/fedoraObject.inc
+++ b/plugins/fedoraObject.inc
@@ -27,7 +27,7 @@ class FedoraObject {
);
$dc_html = $objectHelper->getFormattedDC($this->item);
- $ds_list = $objectHelper->getFormattedDatastreamList($this->pid, NULL, $this->item);
+ $ds_list = $objectHelper->get_formatted_datastream_list($this->pid, NULL, $this->item);
$tabset['fedora_object_details']['tabset']['view'] = array(
diff --git a/plugins/fedora_attach/fedora_attach.admin.inc b/plugins/fedora_attach/fedora_attach.admin.inc
index 655dee51..30c378af 100644
--- a/plugins/fedora_attach/fedora_attach.admin.inc
+++ b/plugins/fedora_attach/fedora_attach.admin.inc
@@ -14,10 +14,12 @@
* @see system_settings_form().
*/
function fedora_attach_admin() {
- $options = drupal_map_assoc(explode(" ", variable_get('fedora_pids_allowed', 'default: demo: changeme: Islandora: ilives: ')));
+ $options = drupal_map_assoc(explode(" ", variable_get('fedora_pids_allowed', 'default: demo: changeme: islandora: ilives: ')));
$default_value = variable_get('fedora_attach_pid_namespace', 'default:');
+ $isRestricted = variable_get('fedora_namespace_restriction_enforced',TRUE);
- if (!in_array($default_value, $options)) {
+
+ if (!in_array($default_value, $options) && $isRestricted) {
drupal_set_message( "The value last set here ($default_value) is not in the list of available PID namespaces (perhaps it has changed?). Please choose a valid option from the list.", 'warning' );
}
diff --git a/tests/fedora_repository.test b/tests/fedora_repository.test
index f7801e14..913683c4 100644
--- a/tests/fedora_repository.test
+++ b/tests/fedora_repository.test
@@ -1,39 +1,15 @@
'Fedora Repository',
- 'description' => t('The Fedora repository content models.'),
- 'group' => t('fedora repository'),
- );
- }
-
- function setUp() {
- parent::setUp('fedora_repository', 'tabs');
-
- module_load_include('inc', 'fedora_repository', 'api/fedora_item');
-
- // Create and login user.
- $repository_user = $this->drupalCreateFedoraUser(array('add fedora datastreams',
- 'edit fedora meta data',
- 'edit tags datastream',
- 'ingest new fedora objects',
- 'purge objects and datastreams',
- 'view fedora collection',
- 'view detailed list of content'));
- $this->drupalLogin($repository_user);
-
- }
-
public function testDatastreams() {
module_load_include('inc', 'fedora_repository', 'api/fedora_item');
$pid_list = array();
@@ -195,4 +171,179 @@ class FedoraRepositoryTestCase extends DrupalWebTestCase {
$account->pass_raw = $edit['pass'];
return $account;
}
+
+ public static function getInfo() {
+ return array(
+ 'name' => 'Fedora Repository',
+ 'description' => t('The Fedora repository content models.'),
+ 'group' => t('fedora repository'),
+ );
+ }
+
+ function setUp() {
+ parent::setUp('fedora_repository');
+
+ module_load_include('inc', 'fedora_repository', 'api/fedora_item');
+
+ // Create and login user.
+ $repository_user = $this->drupalCreateFedoraUser(array('add fedora datastreams',
+ 'edit fedora meta data',
+ 'edit tags datastream',
+ 'ingest new fedora objects',
+ 'purge objects and datastreams',
+ 'view fedora collection'));
+
+ $this->repository_user = $repository_user;
+ $this->drupalLogin($repository_user);
+ }
+
+ /**
+ * Add an item based on a content model. Initially we will assume that the repository
+ * will be populated with the default content models and collections that are
+ * created from the admin settings -> Install Demos page.
+ *
+ */
+ public function testIngest() {
+ // Check that the 'Strict PDF' content model exists in the repository.
+ //$pdf_cm = new Fedora_Item('islandora:strict_pdf');
+
+ $pid_list = array();
+ // Create a collection for ingesting PDF content model objects.
+ //$this->drupalGet('fedora/ingestObject/islandora:top/Islandora%20Top-Level%20Collection');
+ $ingest_form = array();
+ $ingest_form['models'] = 'islandora:collectionCModel/ISLANDORACM';
+
+ $this->drupalPost('fedora/ingestObject/islandora:top/Islandora%20Top-Level%20Collection', $ingest_form, 'Next');
+
+ // Add a sample PDF object via the web ingest form.
+ // Required fields are file location, dc:title and dc:description
+ $ingest_form_step_2 = array();
+ $ingest_form_step_2['dc:title'] = $this->randomName(32);
+ $ingest_form_step_2['dc:description'] = $this->randomName(256);
+
+ $ingest_form_step_2['files[ingest-file-location]'] = realpath(drupal_get_path('module', 'fedora_repository') . '/tests/test_files/lorem_ipsum.pdf');
+ $this->drupalPost(NULL, $ingest_form_step_2, 'Ingest');
+ $this->assertText('mimetype (application/pdf) is not associated with this Content Model', 'PDF mime type not accepted in collection content model.', 'message');
+
+ $this->outputScreenContents('Initial ingest form submit step 2', 'fedora_repository');
+
+ // Now try ingesting a proper collection policy.
+ $ingest_form = array();
+ $ingest_form['models'] = 'islandora:collectionCModel/ISLANDORACM';
+
+ $this->drupalPost('fedora/ingestObject/islandora:top/Islandora%20Top-Level%20Collection', $ingest_form, 'Next');
+ // Required fields are file location, dc:title and dc:description
+ $ingest_form_step_2 = array();
+ $ingest_form_step_2['dc:title'] = $this->randomName(32);
+ $ingest_form_step_2['dc:description'] = $this->randomName(256);
+ $ingest_form_step_2['files[ingest-file-location]'] = realpath(drupal_get_path('module', 'fedora_repository') . '/collection_policies/PDF-COLLECTION POLICY.xml');
+ $this->drupalPost(NULL, $ingest_form_step_2, 'Ingest');
+ //$this->outputScreenContents('Initial ingest form submit step 2 - PDF collection', 'fedora_repository');
+ $this->assertPattern('/Item .* created successfully./', "Verified item created.");
+
+ $pid = $this->getIngestedPid();
+ $pid_list[] = $pid;
+ $this->pass('Now attempting to ingest a PDF into the new collection.');
+ // Now try ingesting a PDF
+ $ingest_form = array();
+ $ingest_form['models'] = 'islandora:strict_pdf/ISLANDORACM';
+ $this->drupalPost("fedora/ingestObject/$pid/", $ingest_form, 'Next');
+ // Required fields are file location, dc:title and dc:description
+ $ingest_form_step_2 = array();
+ $ingest_form_step_2['dc:title'] = "Lorem Ipsum";
+ $ingest_form_step_2['dc:description'] = $this->randomName(256);
+ $ingest_form_step_2['files[ingest-file-location]'] = realpath(drupal_get_path('module', 'fedora_repository') . '/tests/test_files/lorem_ipsum.pdf');
+ $this->drupalPost(NULL, $ingest_form_step_2, 'Ingest');
+ $pid = $this->getIngestedPid();
+ $pid_list[] = $pid;
+ if (!empty($pid)) {
+ $this->pass("Successfully ingested PDF object $pid.");
+ }
+ $this->cleanUpRepository($pid_list);
+ }
+
+ public function testPidSpaceRestriction() {
+
+ // give user full permissions
+
+ $admin_tester = $this->drupalCreateUser(array('administer site configuration', 'view fedora collection'));
+ $this->drupalLogin($admin_tester);
+ $pageContent = $this->drupalGet('admin/settings/fedora_repository');
+ $hasOption = preg_match('/Enforce namespace restrictions/', $pageContent);
+
+
+ if (!$hasOption) {
+ $this->pass('Removal of namespace restrictions is disabled');
+ }
+ else {
+ $this->pass('Removal of namespace restrictions is enabled');
+ $inVal['fedora_namespace_restriction_enforced'] = TRUE;
+ $inVal['fedora_pids_allowed'] = 'simpletest:';
+ $this->drupalPost('admin/settings/fedora_repository', $inVal, 'Save configuration');
+ $this->assertPattern('/The configuration options have been saved./', 'The configuration options have been saved.');
+
+ $this->drupalGet('fedora/repository/islandora:largeimages/');
+ $this->assertPattern('/Access denied/', 'No access to Large image Collection Collection');
+ $inVal['fedora_namespace_restriction_enforced'] = 0;
+ $this->drupalPost('admin/settings/fedora_repository', $inVal, 'Save configuration');
+ $this->assertPattern('/The configuration options have been saved./', 'The configuration options have been saved.');
+ $this->drupalLogin($this->repository_user);
+ $this->drupalGet('fedora/repository/islandora:largeimages/');
+ $this->assertPattern('/Large Images Collection/', 'Access to Large Images Collection');
+ }
+ }
+
+ private function cleanUpRepository($pid_list = array()) {
+ $this->pass("This is the PID list to purge: " . implode(", ", $pid_list));
+ foreach ($pid_list as $pid) {
+ $this->drupalPost("fedora/repository/purgeObject/$pid", array(), 'Purge');
+ }
+ }
+
+ private function getIngestedPid() {
+ $subject = $this->drupalGetContent();
+ $pattern = '/">(.*)<\/a> created successfully./';
+ $matches = array();
+ $res = preg_match($pattern, $subject, $matches);
+ return $matches[1];
+ }
+
+ private function outputScreenContents($description, $basename) {
+ // This is a hack to get a directory that won't be cleaned up by SimpleTest.
+ $file_dir = file_directory_path() . '../simpletest_output_pages';
+ if (!is_dir($file_dir)) {
+ mkdir($file_dir, 0777, TRUE);
+ }
+ $output_path = "$file_dir/$basename." . $this->randomName(10) . '.html';
+ $rv = file_put_contents($output_path, $this->drupalGetContent());
+ $this->pass("$description: Contents of result page are " . l('here', $output_path));
+ }
+
+ protected function drupalCreateFedoraUser($permissions = array('access comments', 'access content', 'post comments', 'post comments without approval')) {
+ // Create a role with the given permission set.
+ if (!($rid = $this->drupalCreateRole($permissions))) {
+ return FALSE;
+ }
+
+ // Create a user assigned to that role.
+ $edit = array();
+ $edit['name'] = 'simpletestuser';
+ $edit['mail'] = $edit['name'] . '@example.com';
+ $edit['roles'] = array($rid => $rid);
+ $edit['pass'] = 'simpletestpass';
+ $edit['status'] = 1;
+
+ $account = user_save('', $edit);
+
+ $this->assertTrue(!empty($account->uid), t('User created with name %name and pass %pass', array('%name' => $edit['name'], '%pass' => $edit['pass'])), t('User login'));
+ if (empty($account->uid)) {
+ return FALSE;
+ }
+
+ // Add the raw password so that we can log in as this user.
+ $account->pass_raw = $edit['pass'];
+ return $account;
+ }
+
}
+
diff --git a/xsl/unfilteredresults.xsl b/xsl/unfilteredresults.xsl
new file mode 100644
index 00000000..110f5ea5
--- /dev/null
+++ b/xsl/unfilteredresults.xsl
@@ -0,0 +1,269 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Total Hits =
+
+ ,
+
+ Number of Hits/page =
+
+
+
+
+
+
+
+
+
+
+
+
+
Your search yielded no results
+
+
+
+ - Check if your spelling is correct.
+
+ - Remove quotes around phrases to match each word individually:
+ "blue smurf" will match less than
+ blue smurf.
+
+ - Consider loosening your query with
+ OR:
+ blue smurf will match less than
+ blue OR smurf.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ fedora/repository/
+ /-/
+
+
+
+
+
+ fedora/repository/
+ /TN
+
+
+
+
+ |
+
+
+
+
+ |
+
+
+
+