Browse Source

Merge branch '6.x' of git://github.com/Islandora/islandora into 6.x

pull/141/head
Adam Vessey 13 years ago
parent
commit
1f30a3ded1
  1. 1
      .gitignore
  2. 82
      CollectionClass.inc
  3. 143
      ContentModel.inc
  4. 105
      ObjectHelper.inc
  5. 5
      api/fedora_item.inc
  6. 126
      fedora_repository.module
  7. 30
      formClass.inc

1
.gitignore vendored

@ -0,0 +1 @@
nbproject

82
CollectionClass.inc

@ -2,10 +2,10 @@
/** /**
* @file * @file
* *
* Collection Class Class * Collection Class Class
*/ */
/** /**
* This CLASS caches the streams so once you call a getstream once it will always return * This CLASS caches the streams so once you call a getstream once it will always return
* the same stream as long as you are using the instance of this class. Cached to * the same stream as long as you are using the instance of this class. Cached to
@ -34,12 +34,12 @@ class CollectionClass {
} }
public static function getCollectionQuery($pid) { public static function getCollectionQuery($pid) {
if ($query = self::getCollectionQueryFromStream($pid)) { $query = self::getCollectionQueryFromStream($pid);
return $query; if (!$query) {
} $query = self::getDefaultCollectionQuery($pid);
else {
return self::getDefaultCollectionQuery($pid);
} }
drupal_alter("islandora_collection_query", $query, $pid);
return $query;
} }
protected static function getCollectionQueryFromStream($pid) { protected static function getCollectionQueryFromStream($pid) {
@ -684,17 +684,17 @@ class CollectionClass {
* An array to be passed to drupal_render, containing a pager, an unordered * An array to be passed to drupal_render, containing a pager, an unordered
* list of items, and another pager. * list of items, and another pager.
*/ */
public static function assembleCollectionView($sparql_results) { public static function assembleCollectionView($sparql_results) {
$per_page = 20; //XXX: Make this configurable. $per_page = 20; //XXX: Make this configurable.
$pager_name = 0; $pager_name = 0;
$total = count($sparql_results); $total = count($sparql_results);
$pager_page = self::hackPager($pager_name, $per_page, $total); $pager_page = self::hackPager($pager_name, $per_page, $total);
$max_title_length = 60; $max_title_length = 60;
$results = array(); $results = array();
foreach (array_slice($sparql_results, $per_page * $pager_page, $per_page) as $result) { foreach (array_slice($sparql_results, $per_page * $pager_page, $per_page) as $result) {
$title = $result['title']; $title = $result['title'];
$truncated_title = truncate_utf8($title, $max_title_length, TRUE, TRUE, 5); $truncated_title = truncate_utf8($title, $max_title_length, TRUE, TRUE, 5);
$obj_path = "fedora/repository/{$result['object']}"; $obj_path = "fedora/repository/{$result['object']}";
//Get a thumbnail //Get a thumbnail
@ -703,28 +703,28 @@ class CollectionClass {
"$obj_path/TN"); "$obj_path/TN");
$thumbnail = _fedora_repository_render_image($tn_path); $thumbnail = _fedora_repository_render_image($tn_path);
$results[] = array( $results[] = array(
'data' => l($thumbnail, $obj_path, array( 'data' => l($thumbnail, $obj_path, array(
'html' => TRUE, 'html' => TRUE,
'attributes' => array( 'attributes' => array(
'class' => 'results-image', 'class' => 'results-image',
), ),
)) . l($truncated_title, $obj_path, array('attributes' => array('class' => 'results-text'))), )) . l($truncated_title, $obj_path, array('attributes' => array('class' => 'results-text'))),
); );
} }
if (!$results) { if (!$results) {
drupal_set_message(t("No objects in this collection (or bad query).")); drupal_set_message(t("No objects in this collection (or bad query)."));
} }
else { else {
$first = $per_page * $pager_page; $first = $per_page * $pager_page;
$last = (($total - $first) > $per_page)? $last = (($total - $first) > $per_page)?
($first + $per_page): ($first + $per_page):
$total; $total;
$results_range_text = t('Results @first to @last of @total', array( $results_range_text = t('Results @first to @last of @total', array(
'@first' => $first + 1, '@first' => $first + 1,
'@last' => $last, '@last' => $last,
'@total' => $total, '@total' => $total,
)); ));
return array( return array(
@ -734,15 +734,15 @@ class CollectionClass {
), ),
array( array(
'#type' => 'markup', '#type' => 'markup',
'#value' => theme('item_list', $results, $result_range_text, 'ul', array( '#value' => theme('item_list', $results, $result_range_text, 'ul', array(
'class' => 'islandora-collection-results-list', 'class' => 'islandora-collection-results-list',
)) ))
), ),
array( array(
'#type' => 'markup', '#type' => 'markup',
'#value' => theme('pager', array(), $per_page, $pager_name) '#value' => theme('pager', array(), $per_page, $pager_name)
), ),
); );
} }
} }

143
ContentModel.inc

@ -1,11 +1,11 @@
<?php <?php
/** /**
* @file * @file
* *
*/ */
/** /**
* @file * @file
* Content Model Class * Content Model Class
*/ */
module_load_include('inc', 'fedora_repository', 'XMLDatastream'); module_load_include('inc', 'fedora_repository', 'XMLDatastream');
@ -56,7 +56,7 @@ class ContentModel extends XMLDatastream {
} }
/** /**
* Ingests a Content Model from a file to the specified pid/dsid . * Ingests a Content Model from a file to the specified pid/dsid .
* Returns FALSE on failure. * Returns FALSE on failure.
* *
* @param string $pid * @param string $pid
@ -83,7 +83,7 @@ class ContentModel extends XMLDatastream {
} }
/** /**
* Ingests a Content Model from an existing model to the specified pid/dsid . * Ingests a Content Model from an existing model to the specified pid/dsid .
* Returns FALSE on failure. * Returns FALSE on failure.
* *
* @param string $pid * @param string $pid
@ -112,7 +112,7 @@ class ContentModel extends XMLDatastream {
} }
/** /**
* Ingests a minimum Content Model to the specified pid/dsid. * Ingests a minimum Content Model to the specified pid/dsid.
* Returns FALSE on failure. * Returns FALSE on failure.
* *
* @param string $pid * @param string $pid
@ -515,7 +515,7 @@ class ContentModel extends XMLDatastream {
* in the form builder if more complex forms or behaviour is required. * in the form builder if more complex forms or behaviour is required.
* Each element has the following keys: 'label', 'type', 'required', 'description', and if defined, 'authoritative_list' and/or 'parameters' * Each element has the following keys: 'label', 'type', 'required', 'description', and if defined, 'authoritative_list' and/or 'parameters'
* *
* @return string[] $elements * @return string[] $elements
*/ */
public function getIngestFormElements() { public function getIngestFormElements() {
$ret = FALSE; $ret = FALSE;
@ -575,14 +575,14 @@ class ContentModel extends XMLDatastream {
} }
/** /**
* Decrements an ingest form element in the list of elements. * Decrements an ingest form element in the list of elements.
* Updates the "order". This method is simply an overload to the incIngestFormElement * Updates the "order". This method is simply an overload to the incIngestFormElement
* which has a direction parameter. * which has a direction parameter.
* *
* TODO: Might be useful to move multiple places at once, or define * TODO: Might be useful to move multiple places at once, or define
* a method to move to an absolute position. * a method to move to an absolute position.
* *
* @param String $name * @param String $name
* @return boolean $success * @return boolean $success
*/ */
public function decIngestFormElement($name) { public function decIngestFormElement($name) {
@ -590,14 +590,14 @@ class ContentModel extends XMLDatastream {
} }
/** /**
* Increments (or decrements) ingest form element in the list of elements. * Increments (or decrements) ingest form element in the list of elements.
* Updates the "order". The $reorder parameter accepts 'inc' or 'dec' to * Updates the "order". The $reorder parameter accepts 'inc' or 'dec' to
* specify the direction to move (defaults to increment.) * specify the direction to move (defaults to increment.)
* *
* TODO: Might be useful to move multiple places at once, or define * TODO: Might be useful to move multiple places at once, or define
* a method to move to an absolute position. * a method to move to an absolute position.
* *
* @param String $name * @param String $name
* @param String $reorder * @param String $reorder
* @return boolean $success * @return boolean $success
*/ */
@ -658,7 +658,7 @@ class ContentModel extends XMLDatastream {
/** /**
* Sets a parameter of an ingest form element. If the value of the element is FALSE the parameter * Sets a parameter of an ingest form element. If the value of the element is FALSE the parameter
* will be removed entirely (if you want to store FALSE as a value, then send the String "FALSE"). * will be removed entirely (if you want to store FALSE as a value, then send the String "FALSE").
* *
* @param String $elementName * @param String $elementName
* @param String $paramName * @param String $paramName
* @param String $paramValue * @param String $paramValue
@ -729,7 +729,7 @@ class ContentModel extends XMLDatastream {
/** /**
* Gets a list of all parameters that belong to the specified ingest form element. * Gets a list of all parameters that belong to the specified ingest form element.
* *
* @param String $elementName * @param String $elementName
* @return boolean success * @return boolean success
*/ */
@ -762,7 +762,7 @@ class ContentModel extends XMLDatastream {
} }
/** /**
* Edits the ingest form element specified. * Edits the ingest form element specified.
* NOTE: The element name can not be changed. To update an elements name * NOTE: The element name can not be changed. To update an elements name
* it must be deleted and added with the new name. * it must be deleted and added with the new name.
* *
@ -854,12 +854,12 @@ class ContentModel extends XMLDatastream {
} }
/** /**
* Decrements an authority list item from a form element in the list of elements. * Decrements an authority list item from a form element in the list of elements.
* Updates the "order". This method is simply an overload to the incAuthListItem * Updates the "order". This method is simply an overload to the incAuthListItem
* which has a direction parameter. * which has a direction parameter.
* *
* @param String $elementName * @param String $elementName
* @param String $value * @param String $value
* @return boolean $success * @return boolean $success
*/ */
@ -868,10 +868,10 @@ class ContentModel extends XMLDatastream {
} }
/** /**
* Increments (or decrements) an authority list item from a form element in the list of elements. * Increments (or decrements) an authority list item from a form element in the list of elements.
* Updates the "order". * Updates the "order".
* *
* @param String $elementName * @param String $elementName
* @param String $value * @param String $value
* @param String $direction * @param String $direction
* @return boolean $success * @return boolean $success
@ -921,7 +921,7 @@ class ContentModel extends XMLDatastream {
} }
/** /**
* Removes an authority list item from a form element. * Removes an authority list item from a form element.
* @param String $elementName * @param String $elementName
* @param String $value * @param String $value
* @return boolean $success * @return boolean $success
@ -966,7 +966,7 @@ class ContentModel extends XMLDatastream {
} }
/** /**
* Adds an authority list item to a form element. * Adds an authority list item to a form element.
* @param String $elementName * @param String $elementName
* @param String $value * @param String $value
* @param String $label (optional) * @param String $label (optional)
@ -1310,9 +1310,9 @@ class ContentModel extends XMLDatastream {
/** /**
* Executes the ingest rules that apply to the specified file/mimetype. * Executes the ingest rules that apply to the specified file/mimetype.
* Returns FALSE on failure. * Returns FALSE on failure.
* *
* If $preview is TRUE, then only execute rules with * If $preview is TRUE, then only execute rules with
* a parameter 'preview'. Used to generate previews for the file chooser. * a parameter 'preview'. Used to generate previews for the file chooser.
* *
* @param string $file * @param string $file
@ -1475,19 +1475,30 @@ class ContentModel extends XMLDatastream {
self::$errors[] = 'Execute Form Handler: file \'' . $path . '\' does not exist.'; self::$errors[] = 'Execute Form Handler: file \'' . $path . '\' does not exist.';
} }
else { else {
require_once($path);
$className = $method->getAttribute('class'); $file_extension = pathinfo($method->getAttribute('file'), PATHINFO_EXTENSION);
$methodName = ($method->getAttribute('method')); $file_path_without_extension = $method->getAttribute('file');
if (!class_exists($className)) { /* Only in PHP. This is meant to avoid file path
self::$errors[] = 'Execute Form Handler: class \'' . $className . '\' does not exist.'; * concatenation issues.*/
} $file_path_without_extension = substr($file_path_without_extension, 0, strlen($file_path_without_extension) - (strlen($file_extension) + 1));
else { /* Only try to execute if the module is present, this is
$class = new $className($pid); * necessarybecause we go outside of the expected
if (!method_exists($class, $methodName)) { * 'Drupal Way' and have dynamic dependencies.*/
self::$errors[] = 'Execute Form Handler: method \'' . $className . '->' . $methodName . '\' does not exist.'; if (module_exists(!empty($module) ? $module : 'fedora_repository')) {
module_load_include($file_extension, !empty($module) ? $module : 'fedora_repository', $file_path_without_extension);
$className = $method->getAttribute('class');
$methodName = ($method->getAttribute('method'));
if (!class_exists($className)) {
self::$errors[] = 'Execute Form Handler: class \'' . $className . '\' does not exist.';
} }
else { else {
$output = $class->$methodName($page_number); $class = new $className($pid);
if (!method_exists($class, $methodName)) {
self::$errors[] = 'Execute Form Handler: method \'' . $className . '->' . $methodName . '\' does not exist.';
}
else {
$output = $class->$methodName($page_number);
}
} }
} }
} }
@ -1527,8 +1538,8 @@ class ContentModel extends XMLDatastream {
} }
/** /**
* Adds an allowed mimetype to the model. * Adds an allowed mimetype to the model.
* *
* @param String $type * @param String $type
* @return boolean $success * @return boolean $success
*/ */
@ -1581,7 +1592,7 @@ class ContentModel extends XMLDatastream {
/** /**
* getDisplayMethods ?? * getDisplayMethods ??
* @param type $ds * @param type $ds
* @return type * @return type
*/ */
public function getDisplayMethods($ds) { public function getDisplayMethods($ds) {
$ret = FALSE; $ret = FALSE;
@ -1603,7 +1614,7 @@ class ContentModel extends XMLDatastream {
* addDs ?? * addDs ??
* @param type $dsid * @param type $dsid
* @param type $display_in_fieldset * @param type $display_in_fieldset
* @return boolean * @return boolean
*/ */
public function addDs($dsid, $display_in_fieldset = FALSE) { public function addDs($dsid, $display_in_fieldset = FALSE) {
$ret = FALSE; $ret = FALSE;
@ -1632,7 +1643,7 @@ class ContentModel extends XMLDatastream {
/** /**
* removeDs ?? * removeDs ??
* @param type $dsid * @param type $dsid
* @return boolean * @return boolean
*/ */
public function removeDs($dsid) { public function removeDs($dsid) {
$ret = FALSE; $ret = FALSE;
@ -1648,7 +1659,7 @@ class ContentModel extends XMLDatastream {
/** /**
* displayInFieldset ?? * displayInFieldset ??
* @param type $dsid * @param type $dsid
* @return type * @return type
*/ */
public function displayInFieldset($dsid) { public function displayInFieldset($dsid) {
$ret = FALSE; $ret = FALSE;
@ -1662,7 +1673,7 @@ class ContentModel extends XMLDatastream {
* setDisplayInFieldset ?? * setDisplayInFieldset ??
* @param type $dsid * @param type $dsid
* @param type $value * @param type $value
* @return boolean * @return boolean
*/ */
public function setDisplayInFieldset($dsid, $value = TRUE) { public function setDisplayInFieldset($dsid, $value = TRUE) {
$ret = FALSE; $ret = FALSE;
@ -1686,7 +1697,7 @@ class ContentModel extends XMLDatastream {
* @param type $file * @param type $file
* @param type $class * @param type $class
* @param type $method * @param type $method
* @return boolean * @return boolean
*/ */
public function setDefaultDispMeth($dsid, $module, $file, $class, $method) { public function setDefaultDispMeth($dsid, $module, $file, $class, $method) {
$ret = FALSE; $ret = FALSE;
@ -1725,7 +1736,7 @@ class ContentModel extends XMLDatastream {
* @param type $file * @param type $file
* @param type $class * @param type $class
* @param type $method * @param type $method
* @return boolean * @return boolean
*/ */
public function removeDispMeth($dsid, $module, $file, $class, $method) { public function removeDispMeth($dsid, $module, $file, $class, $method) {
$ret = FALSE; $ret = FALSE;
@ -1757,7 +1768,7 @@ class ContentModel extends XMLDatastream {
* @param type $class * @param type $class
* @param type $method * @param type $method
* @param type $default * @param type $default
* @return boolean * @return boolean
*/ */
public function addDispMeth($dsid, $module, $file, $class, $method, $default = FALSE) { public function addDispMeth($dsid, $module, $file, $class, $method, $default = FALSE) {
$ret = FALSE; $ret = FALSE;
@ -1779,7 +1790,7 @@ class ContentModel extends XMLDatastream {
/** /**
* getAddDsMethod ?? * getAddDsMethod ??
* @param type $ds * @param type $ds
* @return type * @return type
*/ */
public function getAddDsMethod($ds) { public function getAddDsMethod($ds) {
$ret = FALSE; $ret = FALSE;
@ -1801,7 +1812,7 @@ class ContentModel extends XMLDatastream {
/** /**
* getIngestRule ?? * getIngestRule ??
* @param type $rule_id * @param type $rule_id
* @return type * @return type
*/ */
public function getIngestRule($rule_id) { public function getIngestRule($rule_id) {
$ret = FALSE; $ret = FALSE;
@ -1817,7 +1828,7 @@ class ContentModel extends XMLDatastream {
* removeAppliesTo ?? * removeAppliesTo ??
* @param type $rule_id * @param type $rule_id
* @param type $type * @param type $type
* @return boolean * @return boolean
*/ */
public function removeAppliesTo($rule_id, $type) { public function removeAppliesTo($rule_id, $type) {
$ret = FALSE; $ret = FALSE;
@ -1842,7 +1853,7 @@ class ContentModel extends XMLDatastream {
* addAppliesTo ?? * addAppliesTo ??
* @param type $rule_id * @param type $rule_id
* @param type $type * @param type $type
* @return boolean * @return boolean
*/ */
public function addAppliesTo($rule_id, $type) { public function addAppliesTo($rule_id, $type) {
$ret = FALSE; $ret = FALSE;
@ -1871,7 +1882,7 @@ class ContentModel extends XMLDatastream {
* @param type $method * @param type $method
* @param type $dsid * @param type $dsid
* @param type $modified_files_ext * @param type $modified_files_ext
* @return boolean * @return boolean
*/ */
public function addIngestMethod($rule_id, $module, $file, $class, $method, $dsid, $modified_files_ext) { public function addIngestMethod($rule_id, $module, $file, $class, $method, $dsid, $modified_files_ext) {
$ret = FALSE; $ret = FALSE;
@ -1898,7 +1909,7 @@ class ContentModel extends XMLDatastream {
* @param type $file * @param type $file
* @param type $class * @param type $class
* @param type $method * @param type $method
* @return boolean * @return boolean
*/ */
public function removeIngestMethod($rule_id, $module, $file, $class, $method) { public function removeIngestMethod($rule_id, $module, $file, $class, $method) {
$ret = FALSE; $ret = FALSE;
@ -1929,7 +1940,7 @@ class ContentModel extends XMLDatastream {
* @param type $method * @param type $method
* @param type $name * @param type $name
* @param type $value * @param type $value
* @return boolean * @return boolean
*/ */
public function addIngestMethodParam($rule_id, $module, $file, $class, $method, $name, $value) { public function addIngestMethodParam($rule_id, $module, $file, $class, $method, $name, $value) {
$ret = FALSE; $ret = FALSE;
@ -1981,7 +1992,7 @@ class ContentModel extends XMLDatastream {
* @param type $class * @param type $class
* @param type $method * @param type $method
* @param type $name * @param type $name
* @return boolean * @return boolean
*/ */
public function removeIngestMethodParam($rule_id, $module, $file, $class, $method, $name) { public function removeIngestMethodParam($rule_id, $module, $file, $class, $method, $name) {
$ret = FALSE; $ret = FALSE;
@ -2024,7 +2035,7 @@ class ContentModel extends XMLDatastream {
/** /**
* removeIngestRule ?? * removeIngestRule ??
* @param type $rule_id * @param type $rule_id
* @return type * @return type
*/ */
public function removeIngestRule($rule_id) { public function removeIngestRule($rule_id) {
$ret = FALSE; $ret = FALSE;
@ -2043,7 +2054,7 @@ class ContentModel extends XMLDatastream {
* @param type $method * @param type $method
* @param type $dsid * @param type $dsid
* @param type $modified_files_ext * @param type $modified_files_ext
* @return type * @return type
*/ */
public function addIngestRule($applies_to, $module, $file, $class, $method, $dsid, $modified_files_ext) { public function addIngestRule($applies_to, $module, $file, $class, $method, $dsid, $modified_files_ext) {
$ret = FALSE; $ret = FALSE;
@ -2061,7 +2072,7 @@ class ContentModel extends XMLDatastream {
/** /**
* getIngestRules ?? * getIngestRules ??
* @return type * @return type
*/ */
public function getIngestRules() { public function getIngestRules() {
$ret = FALSE; $ret = FALSE;
@ -2105,7 +2116,7 @@ class ContentModel extends XMLDatastream {
/** /**
* getIngestFormAttributes ?? * getIngestFormAttributes ??
* @return type * @return type
*/ */
public function getIngestFormAttributes() { public function getIngestFormAttributes() {
$ret = FALSE; $ret = FALSE;
@ -2125,7 +2136,7 @@ class ContentModel extends XMLDatastream {
* @param type $page * @param type $page
* @param type $hide_file_chooser * @param type $hide_file_chooser
* @param type $redirect * @param type $redirect
* @return boolean * @return boolean
*/ */
public function editIngestFormAttributes($dsid, $page, $hide_file_chooser = FALSE, $redirect = TRUE) { public function editIngestFormAttributes($dsid, $page, $hide_file_chooser = FALSE, $redirect = TRUE) {
$ret = FALSE; $ret = FALSE;
@ -2152,7 +2163,7 @@ class ContentModel extends XMLDatastream {
/** /**
* getIngestFormBuilderMethod * getIngestFormBuilderMethod
* @return type * @return type
*/ */
public function getIngestFormBuilderMethod() { public function getIngestFormBuilderMethod() {
$ret = FALSE; $ret = FALSE;
@ -2174,7 +2185,7 @@ class ContentModel extends XMLDatastream {
* @param type $class * @param type $class
* @param type $method * @param type $method
* @param type $handler * @param type $handler
* @return boolean * @return boolean
*/ */
public function editIngestFormBuilderMethod($module, $file, $class, $method, $handler) { public function editIngestFormBuilderMethod($module, $file, $class, $method, $handler) {
$ret = FALSE; $ret = FALSE;
@ -2192,7 +2203,7 @@ class ContentModel extends XMLDatastream {
/** /**
* Find the form element with name $name. * Find the form element with name $name.
* *
* @param string $name * @param string $name
* The name of the form element to find. * The name of the form element to find.
* @return DOMElement * @return DOMElement
@ -2263,7 +2274,7 @@ class ContentModel extends XMLDatastream {
* *
* @param string $name * @param string $name
* Name of the form to remove. * Name of the form to remove.
* *
* @return boolean * @return boolean
* TRUE on success, FALSE otherwise. * TRUE on success, FALSE otherwise.
*/ */

105
ObjectHelper.inc

@ -19,9 +19,7 @@ class ObjectHelper {
public static $INGEST_FEDORA_OBJECTS = 'ingest new fedora objects'; public static $INGEST_FEDORA_OBJECTS = 'ingest new fedora objects';
public static $EDIT_TAGS_DATASTREAM = 'edit tags datastream'; public static $EDIT_TAGS_DATASTREAM = 'edit tags datastream';
public static $VIEW_DETAILED_CONTENT_LIST = 'view detailed list of content'; public static $VIEW_DETAILED_CONTENT_LIST = 'view detailed list of content';
public static $DISPLAY_ALWAYS = 0;
public static $DISPLAY_NEVER = 1;
public static $DISPLAY_NO_MODEL_OUTPUT = 2;
// TODO: Make this into a static member constant // TODO: Make this into a static member constant
public $availableDataStreamsText = 'Detailed list of content'; public $availableDataStreamsText = 'Detailed list of content';
@ -705,107 +703,6 @@ class ObjectHelper {
return ($namespace_access && user_access($op, $as_user)); return ($namespace_access && user_access($op, $as_user));
} }
/**
* internal function
* uses an xsl to parse the sparql xml returned from the ITQL query
* @deprecated
* This is only used in the fedora/repository/collection path,
* which should probably be nuked.
* @param $content String
*/
function parseContent($content, $pid, $dsId, $collection, $pageNumber = NULL) {
$path = drupal_get_path('module', 'fedora_repository');
global $base_url;
$collection_pid = $pid; //we will be changing the pid later maybe
$objectHelper = $this;
$parsedContent = NULL;
$contentModels = $this->get_content_models_list($pid);
$isCollection = FALSE;
$fedoraItem = NULL;
$datastreams = $this->get_formatted_datastream_list($pid, $contentModels, $fedoraItem);
if (!empty($contentModels)) {
foreach ($contentModels as $contentModel) {
if ($contentModel == variable_get('fedora_collection_model_pid', 'islandora:collectionCModel')) {
//if this is a collection object store the $pid in the session as it will come in handy
//after a purge or ingest to return to the correct collection.
$_SESSION['fedora_collection'] = $pid;
$isCollection = TRUE;
}
}
}
if ($fedoraItem !== NULL) {
$dslist = $fedoraItem->get_datastreams_list_as_array();
if (isset($dslist['COLLECTION_POLICY'])) {
$isCollection = TRUE;
}
}
//--------------------------------------------------------------------------------
//show the collections datastreams
if ($results->length > 0 || $isCollection == TRUE) {
// if(strlen($objectList)>22||$contentModel=='Collection'||$contentModel=='Community')//length of empty dom still equals 22 because of <table/> etc
module_load_include('inc', 'fedora_repository', 'CollectionPolicy');
$collectionPolicyExists = $this->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 = '<a title="'. t('Ingest a New object into ') . $collectionName . ' '. $collection_pid . '" href="'. base_path() .
$ingest_text = t('Ingest a new object into @collection_name PID @collection_pid', array('@collection_name' => $collectionName, '@collection_pid' => $collection_pid));
$ingestObject = l(theme('image', "$path/images/ingest.png", $ingest_text), "fedora/ingestObject/$collection_pid/$collectionName", array('attributes' => array(
'class' => 'icon',
'title' => $ingest_text,
))) . t('Add to this Collection');
}
}
}
else {
$ingestObject = '&nbsp;';
}
}
$datastreams .= $ingestObject;
$output .= $datastreams;
$showDesc = FALSE;
switch (variable_get('fedora_object_display_description', ObjectHelper :: $DISPLAY_NO_MODEL_OUTPUT)) {
case ObjectHelper :: $DISPLAY_NEVER: break;
case ObjectHelper :: $DISPLAY_NO_MODEL_OUTPUT:
if (trim($datastreams) == '') {
$showDesc = TRUE;
}
break;
case ObjectHelper :: $DISPLAY_ALWAYS:
default:
$showDesc = TRUE;
break;
}
if ($showDesc) {
//just show default dc or qdc as we could not find a content model
$metaDataText = t('Description');
$body = $this->getQDC($pid);
$fieldset = array(
'#title' => t("!metaDataText", array('!metaDataText' => $metaDataText)),
'#collapsible' => TRUE,
'#collapsed' => TRUE,
'#value' => $body
);
$output .= theme('fieldset', $fieldset);
}
return $output;
}
/** /**
* Get the query to find parent objects. * Get the query to find parent objects.
* *

5
api/fedora_item.inc

@ -347,7 +347,10 @@ RDF;
$modified = FALSE; $modified = FALSE;
$rels = $relsextxml->getElementsByTagNameNS($namespaceURI, $relationship); $rels = $relsextxml->getElementsByTagNameNS($namespaceURI, $relationship);
if (!empty($rels)) { if (!empty($rels)) {
foreach ($rels as $rel) { // iterate backwards so if we delete something our pointer doesn't get out of sync
for ($i = $rels->length; $i>0; $i--) {
$rel = $rels->item($i-1);
// foreach ($rels as $rel) { // moving forward like this caused iteration errors when something was deleted
if ( //If either no object is specified, or the object matches (in either the literal or URI case), remove this node from it's parent, and mark as changed. if ( //If either no object is specified, or the object matches (in either the literal or URI case), remove this node from it's parent, and mark as changed.
empty($object) || empty($object) ||
(($literal_value == RELS_TYPE_URI) && $rel->getAttributeNS('http://www.w3.org/1999/02/22-rdf-syntax-ns#', 'resource') == $object) || (($literal_value == RELS_TYPE_URI) && $rel->getAttributeNS('http://www.w3.org/1999/02/22-rdf-syntax-ns#', 'resource') == $object) ||

126
fedora_repository.module

@ -62,37 +62,6 @@ function fedora_repository_purge_object($pid = NULL, $name = NULL) {
return $output; return $output;
} }
/**
* fedora repository collection view
* @global type $user
* @param type $pid
* @param type $collection
* @param type $pageNumber
* @return type
*/
function fedora_repository_collection_view($pid = NULL, $collection = NULL, $pageNumber = NULL) {
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');
return ' ';
}
$objectHelper = new ObjectHelper();
if ($pid == NULL) {
$pid = variable_get('fedora_repository_pid', 'islandora:root');
}
$content = '';
module_load_include('inc', 'fedora_repository', 'CollectionClass');
$collectionClass = new CollectionClass();
$results = $collectionClass->getRelatedItems($pid, NULL);
$content .= $objectHelper->parseContent($results, $pid, $dsId, $collection, $pageNumber);
return $content;
}
/** /**
* fedora repository ingest object * fedora repository ingest object
* @param type $collection_pid * @param type $collection_pid
@ -948,7 +917,7 @@ function makeObject($pid, $dsID) {
drupal_set_message(t("No pid or dsid given to create an object with.")); drupal_set_message(t("No pid or dsid given to create an object with."));
return ' '; return ' ';
} }
global $user; global $user, $conf;
if (!fedora_repository_access(OBJECTHELPER :: $OBJECT_HELPER_VIEW_FEDORA, $pid, $user)) { if (!fedora_repository_access(OBJECTHELPER :: $OBJECT_HELPER_VIEW_FEDORA, $pid, $user)) {
drupal_access_denied(); drupal_access_denied();
return; return;
@ -956,6 +925,9 @@ function makeObject($pid, $dsID) {
return ' '; return ' ';
} }
//Disable the page cache, so entire datastreams do not get thrown into the page cache.
$conf['cache'] = CACHE_DISABLED;
module_load_include('inc', 'fedora_repository', 'ObjectHelper'); module_load_include('inc', 'fedora_repository', 'ObjectHelper');
$objectHelper = new ObjectHelper(); $objectHelper = new ObjectHelper();
$objectHelper->makeObject($pid, $dsID); $objectHelper->makeObject($pid, $dsID);
@ -978,30 +950,30 @@ function makeObject($pid, $dsID) {
function fedora_repository_islandora_tabs($content_models, $pid, $page_number) { function fedora_repository_islandora_tabs($content_models, $pid, $page_number) {
$cmodels_tabs = array(); $cmodels_tabs = array();
foreach ($content_models as $content_model) { foreach ($content_models as $content_model) {
$content_model_fieldset = $content_model->displayExtraFieldset($pid, $page_number); $content_model_fieldset = $content_model->displayExtraFieldset($pid, $page_number);
// Each content model may return either a tabpage array or plain HTML. If // Each content model may return either a tabpage array or plain HTML. If
// it is HTML, stick it in a tabpage. // it is HTML, stick it in a tabpage.
if (is_array($content_model_fieldset)) { if (is_array($content_model_fieldset)) {
$cmodels_tabs = array_merge($cmodels_tabs, $content_model_fieldset); $cmodels_tabs = array_merge($cmodels_tabs, $content_model_fieldset);
} }
else { else {
$cmodels_tabs[$content_model->pid] = array( $cmodels_tabs[$content_model->pid] = array(
'#type' => 'tabpage', '#type' => 'tabpage',
'#title' => $content_model->name, '#title' => $content_model->name,
'#content' => $content_model_fieldset, '#content' => $content_model_fieldset,
); );
} }
} }
//can disable showing the object details tab in admin UI //can disable showing the object details tab in admin UI
if (variable_get('fedora_repository_show_object_details_tab', TRUE)) { if (variable_get('fedora_repository_show_object_details_tab', TRUE)) {
// Add a 'manage object' tab for all objects, where detailed list of content is shown. // Add a 'manage object' tab for all objects, where detailed list of content is shown.
// XXX: Perhaps this should be extracted into its own object? // XXX: Perhaps this should be extracted into its own object?
module_load_include('inc', 'fedora_repository', 'plugins/FedoraObjectDetailedContent'); module_load_include('inc', 'fedora_repository', 'plugins/FedoraObjectDetailedContent');
$obj = new FedoraObjectDetailedContent($pid); $obj = new FedoraObjectDetailedContent($pid);
$object_details = $obj->showFieldSets(); $object_details = $obj->showFieldSets();
$cmodels_tabs = array_merge($cmodels_tabs, $object_details); $cmodels_tabs = array_merge($cmodels_tabs, $object_details);
} }
@ -1091,7 +1063,7 @@ function fedora_repository_get_items($pid = NULL, $dsId = NULL, $collection = NU
} }
if (!fedora_repository_access(OBJECTHELPER::$OBJECT_HELPER_VIEW_FEDORA, $pid, $user)) { if (!fedora_repository_access(OBJECTHELPER::$OBJECT_HELPER_VIEW_FEDORA, $pid, $user)) {
if (user_access('access administration pages')) { 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_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(); drupal_access_denied();
exit; exit;
@ -1124,16 +1096,16 @@ function fedora_repository_get_items($pid = NULL, $dsId = NULL, $collection = NU
//Get the tabs from all modules... //Get the tabs from all modules...
$hook_tabs = module_invoke_all('islandora_tabs', $content_models, $pid, $page_number); $hook_tabs = module_invoke_all('islandora_tabs', $content_models, $pid, $page_number);
$cmodels_tabs = array( $cmodels_tabs = array(
'#type' => 'tabset', '#type' => 'tabset',
); );
$cmodels_tabs += $hook_tabs; $cmodels_tabs += $hook_tabs;
//Assemble parameters, to pass during alter //Assemble parameters, to pass during alter
$params = array( $params = array(
'content_models' => $content_models, 'content_models' => $content_models,
'pid' => $pid, 'pid' => $pid,
'page' => $page_number, 'page' => $page_number,
); );
//Allow returned tabs to be altered, before return. //Allow returned tabs to be altered, before return.
@ -2435,21 +2407,21 @@ function fedora_repository_imagecache_default_presets() {
* @return * @return
* Markup for the image, making use of imagecache_external if it is available. * Markup for the image, making use of imagecache_external if it is available.
*/ */
function _fedora_repository_render_image($tn_path, $imagecache_preset = 'fedora_repository_collection_thumbnail') { function _fedora_repository_render_image($tn_path, $imagecache_preset = 'fedora_repository_collection_thumbnail') {
$thumbnail = NULL; $thumbnail = NULL;
if ($thumbnail === NULL && if ($thumbnail === NULL &&
module_exists('imagecache_external') && module_exists('imagecache_external') &&
is_callable('theme_imagecache_external_image') && is_callable('theme_imagecache_external_image') &&
variable_get('fedora_repository_use_imagecache_external_in_collection_view', FALSE) && variable_get('fedora_repository_use_imagecache_external_in_collection_view', FALSE) &&
imagecache_external_can_fetch($tn_path, TRUE)) { imagecache_external_can_fetch($tn_path, TRUE)) {
$thumbnail = theme('imagecache_external_image', $imagecache_preset, $tn_path, $truncated_title, $title); $thumbnail = theme('imagecache_external_image', $imagecache_preset, $tn_path, $truncated_title, $title);
} }
if ($thumbnail === NULL) { if ($thumbnail === NULL) {
$thumbnail = theme('image', $tn_path, $truncated_title, $title, array(), FALSE); $thumbnail = theme('image', $tn_path, $truncated_title, $title, array(), FALSE);
} }
return $thumbnail; return $thumbnail;
} }
/** /**
* Render an image, given a PID, DSID and preset. * Render an image, given a PID, DSID and preset.
@ -2466,11 +2438,11 @@ function _fedora_repository_render_image($tn_path, $imagecache_preset = 'fedora_
* An imagecache preset with which to render the image; defaults to * An imagecache preset with which to render the image; defaults to
* fedora_repository_collection_thumbnail, which is added in this module's * fedora_repository_collection_thumbnail, which is added in this module's
* implementation of hook_imagecache_default_presets(). * implementation of hook_imagecache_default_presets().
*/ */
function fedora_repository_render_image($pid, $dsid, $imagecache_preset = 'fedora_repository_collection_thumbnail') { function fedora_repository_render_image($pid, $dsid, $imagecache_preset = 'fedora_repository_collection_thumbnail') {
$tn_path = "fedora/repository/$pid/$dsid"; $tn_path = "fedora/repository/$pid/$dsid";
return _fedora_repository_render_image($tn_path, $imagecache_preset); return _fedora_repository_render_image($tn_path, $imagecache_preset);
} }
/** /**

30
formClass.inc

@ -122,13 +122,6 @@ class formClass {
'type' => MENU_CALLBACK, 'type' => MENU_CALLBACK,
'access arguments' => array('add fedora datastreams') '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'),
);
//new for mnpl****************************************** //new for mnpl******************************************
$items['fedora/repository/mnpl_advanced_search'] = array( $items['fedora/repository/mnpl_advanced_search'] = array(
@ -347,21 +340,6 @@ class formClass {
'#collapsible' => TRUE, '#collapsible' => TRUE,
'#collapsed' => TRUE, '#collapsed' => TRUE,
); );
$form['advanced']['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.'),
);
$form['advanced']['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.')),
'#description' => t('Determines when to display the default object (or collection) description fieldset when viewing an object/collection page.'),
);
$form['advanced']['fedora_object_restrict_datastreams'] = array( $form['advanced']['fedora_object_restrict_datastreams'] = array(
'#type' => 'checkbox', '#type' => 'checkbox',
@ -384,14 +362,6 @@ class formClass {
'@xsl' => 'sparql_to_html.xsl', '@xsl' => 'sparql_to_html.xsl',
)), )),
); );
$form['advanced']['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.')),
'#description' => t('Determines when to display the list of objects when viewing a collection page.'),
);
$form['advanced']['fedora_control_group_control_during_ingest'] = array( $form['advanced']['fedora_control_group_control_during_ingest'] = array(
'#type' => 'checkbox', '#type' => 'checkbox',

Loading…
Cancel
Save