Browse Source

ISLANDDORA-250 Changed fedora-system filter, added QUERY check to reduce SOAP errors

pull/105/head
Alan Stanley 14 years ago
parent
commit
ccebf9b112
  1. 73
      CollectionClass.inc
  2. 2
      ObjectHelper.inc

73
CollectionClass.inc

@ -32,7 +32,6 @@ class CollectionClass {
$this->collectionObject = new ObjectHelper($pid); $this->collectionObject = new ObjectHelper($pid);
$this->pid = $pid; $this->pid = $pid;
} }
} }
/* gets objects related to this object. must include offset and limit /* gets objects related to this object. must include offset and limit
@ -81,8 +80,7 @@ class CollectionClass {
minus $content <mulgara:is> <info:fedora/fedora-system:FedoraObject-3.0> minus $content <mulgara:is> <info:fedora/fedora-system:FedoraObject-3.0>
order by $title'; order by $title';
} }
}
}
else { else {
// Replace %parent_collection% with the actual collection PID // Replace %parent_collection% with the actual collection PID
$query_string = preg_replace("/\%parent_collection\%/", "<info:fedora/$pid>", $query_string); $query_string = preg_replace("/\%parent_collection\%/", "<info:fedora/$pid>", $query_string);
@ -312,33 +310,33 @@ class CollectionClass {
$fullpath = $file; $fullpath = $file;
// $form = array(); // $form = array();
$form['step'] = array( $form['step'] = array(
'#type' => 'hidden', '#type' => 'hidden',
'#value' => (isset($form_state['values']['step']) ? $form_state['values']['step'] : 0) + 1, '#value' => (isset($form_state['values']['step']) ? $form_state['values']['step'] : 0) + 1,
); );
$form['ingest-file-location'] = array( $form['ingest-file-location'] = array(
'#type' => 'hidden', '#type' => 'hidden',
'#value' => $file, '#value' => $file,
); );
$form['content_model_name'] = array( $form['content_model_name'] = array(
'#type' => 'hidden', '#type' => 'hidden',
'#value' => $contentModelDsid '#value' => $contentModelDsid
); );
$form['models'] = array(//content models available $form['models'] = array(//content models available
'#type' => 'hidden', '#type' => 'hidden',
'#value' => $form_state['values']['models'], '#value' => $form_state['values']['models'],
); );
$form['fullpath'] = array( $form['fullpath'] = array(
'#type' => 'hidden', '#type' => 'hidden',
'#value' => $fullpath, '#value' => $fullpath,
); );
$form['#attributes']['enctype'] = 'multipart/form-data'; $form['#attributes']['enctype'] = 'multipart/form-data';
$form['indicator']['ingest-file-location'] = array( $form['indicator']['ingest-file-location'] = array(
'#type' => 'file', '#type' => 'file',
'#title' => t('Upload Document'), '#title' => t('Upload Document'),
'#size' => 48, '#size' => 48,
'#description' => t('Full text'), '#description' => t('Full text'),
); );
if ($xml->ingest_form->hide_file_chooser == 'TRUE') { if ($xml->ingest_form->hide_file_chooser == 'TRUE') {
$form['indicator']['ingest-file-location']['#type'] = 'hidden'; $form['indicator']['ingest-file-location']['#type'] = 'hidden';
@ -366,7 +364,7 @@ class CollectionClass {
return; return;
} }
$username = array( $username = array(
'name' => variable_get('fedora_admin_user', 'fedoraAdmin') 'name' => variable_get('fedora_admin_user', 'fedoraAdmin')
); );
$admin_user = user_load($username); $admin_user = user_load($username);
module_load_include('inc', 'fedora_repository', 'ConnectionHelper'); module_load_include('inc', 'fedora_repository', 'ConnectionHelper');
@ -376,12 +374,12 @@ class CollectionClass {
$pidNameSpace = variable_get('fedora_repository_pid', 'vre:'); $pidNameSpace = variable_get('fedora_repository_pid', 'vre:');
$pidNameSpace = substr($pidNameSpace, 0, strpos($pidNameSpace, ":")); $pidNameSpace = substr($pidNameSpace, 0, strpos($pidNameSpace, ":"));
$params = array( $params = array(
'numPIDs' => '', 'numPIDs' => '',
'pidNamespace' => $pidNameSpace 'pidNamespace' => $pidNameSpace
); );
$object = $soapClient->__soapCall('getNextPID', array( $object = $soapClient->__soapCall('getNextPID', array(
$params $params
)); ));
} catch (exception $e) { } catch (exception $e) {
drupal_set_message(t('Error getting Next PID: !e', array('!e' => $e->getMessage())), 'error'); drupal_set_message(t('Error getting Next PID: !e', array('!e' => $e->getMessage())), 'error');
return FALSE; return FALSE;
@ -390,7 +388,7 @@ class CollectionClass {
$pidNumber = strstr($pid, ":"); $pidNumber = strstr($pid, ":");
$pid = $pidNameSpace . ':' . 'USER-' . $user->name . '-' . substr($pidNumber, 1); $pid = $pidNameSpace . ':' . 'USER-' . $user->name . '-' . substr($pidNumber, 1);
$personal_collection_pid = array( $personal_collection_pid = array(
'fedora_personal_pid' => $pid 'fedora_personal_pid' => $pid
); );
module_load_include('inc', 'fedora_repository', 'plugins/PersonalCollectionClass'); module_load_include('inc', 'fedora_repository', 'plugins/PersonalCollectionClass');
$personalCollectionClass = new PersonalCollectionClass(); $personalCollectionClass = new PersonalCollectionClass();
@ -401,7 +399,7 @@ class CollectionClass {
user_save($user, $personal_collection_pid); user_save($user, $personal_collection_pid);
return TRUE; return TRUE;
} }
/** /**
* Queries a collection object for an xslt to format how the * Queries a collection object for an xslt to format how the
* collection of objects is displayed. * collection of objects is displayed.
@ -415,7 +413,7 @@ class CollectionClass {
} }
return $xslContent; return $xslContent;
} }
function showFieldSets($page_number) { function showFieldSets($page_number) {
module_load_include('inc', 'fedora_repository', 'api/fedora_item'); module_load_include('inc', 'fedora_repository', 'api/fedora_item');
global $base_url; global $base_url;
@ -426,19 +424,18 @@ class CollectionClass {
$objectHelper = new ObjectHelper(); $objectHelper = new ObjectHelper();
$item = new Fedora_Item($this->pid); $item = new Fedora_Item($this->pid);
$query = NULL; $query = NULL;
if ($item->exists()) { if ($item->exists() && array_key_exists('QUERY', $item->datastreams)) {
$query = $item->get_datastream_dissemination('QUERY'); $query = $item->get_datastream_dissemination('QUERY');
} }
$results = $this->getRelatedItems($this->pid, $query); $results = $this->getRelatedItems($this->pid, $query);
$collection_items = $this->renderCollection($results, $this->pid, NULL, NULL, $page_number ); $collection_items = $this->renderCollection($results, $this->pid, NULL, NULL, $page_number);
$collection_item = new Fedora_Item($this->pid); $collection_item = new Fedora_Item($this->pid);
// Check the form post to see if we are in the middle of an ingest operation. // Check the form post to see if we are in the middle of an ingest operation.
$show_ingest_tab = (!empty($_POST['form_id']) && $_POST['form_id'] == 'fedora_repository_ingest_form'); $show_ingest_tab = (!empty($_POST['form_id']) && $_POST['form_id'] == 'fedora_repository_ingest_form');
$add_to_collection = $this->getIngestInterface(); $add_to_collection = $this->getIngestInterface();
$tabset['view_tab'] = array( $tabset['view_tab'] = array(
// $collection_fieldset = array (
'#type' => 'tabpage', '#type' => 'tabpage',
'#title' => 'View', '#title' => 'View',
'#content' => $collection_items '#content' => $collection_items
@ -461,29 +458,26 @@ class CollectionClass {
$collectionPolicyExists = $objectHelper->getMimeType($this->pid, CollectionPolicy::getDefaultDSID()); $collectionPolicyExists = $objectHelper->getMimeType($this->pid, CollectionPolicy::getDefaultDSID());
if (user_access(ObjectHelper :: $INGEST_FEDORA_OBJECTS) && $collectionPolicyExists) { if (user_access(ObjectHelper :: $INGEST_FEDORA_OBJECTS) && $collectionPolicyExists) {
if (!empty($collectionPolicyExists)) { if (!empty($collectionPolicyExists)) {
$allow=TRUE; $allow = TRUE;
if (module_exists('fedora_fesl')) { if (module_exists('fedora_fesl')) {
$allow= fedora_fesl_check_roles($this->pid,'write'); $allow = fedora_fesl_check_roles($this->pid, 'write');
} }
if ($allow) { if ($allow) {
// $ingestObject = '<a title="'. t('Ingest a New object into ') . $collectionName . ' '. $collection_pid . '" href="'. base_path() .
$ingestObject = drupal_get_form('fedora_repository_ingest_form', $this->pid); $ingestObject = drupal_get_form('fedora_repository_ingest_form', $this->pid);
} }
} }
} }
else { else {
$ingestObject = ''; $ingestObject = '';
} }
return $ingestObject; return $ingestObject;
} }
function renderCollection($content, $pid, $dsId, $collection, $pageNumber = NULL) { function renderCollection($content, $pid, $dsId, $collection, $pageNumber = NULL) {
$path = drupal_get_path('module', 'fedora_repository'); $path = drupal_get_path('module', 'fedora_repository');
global $base_url; global $base_url;
$collection_pid = $pid; //we will be changing the pid later maybe $collection_pid = $pid; //we will be changing the pid later maybe
//module_load_include('php', ''Fedora_Repository'', 'ObjectHelper');
$objectHelper = new ObjectHelper(); $objectHelper = new ObjectHelper();
$parsedContent = NULL; $parsedContent = NULL;
$contentModels = $objectHelper->get_content_models_list($pid); $contentModels = $objectHelper->get_content_models_list($pid);
@ -539,7 +533,8 @@ class CollectionClass {
return ''; return '';
} }
} }
} else { }
else {
drupal_set_message(t("No Objects in this collection or bad query.")); drupal_set_message(t("No Objects in this collection or bad query."));
} }
return $objectList; return $objectList;

2
ObjectHelper.inc

@ -510,7 +510,7 @@ class ObjectHelper {
$pids = array(); $pids = array();
$query = 'select $object from <#ri> $query = 'select $object from <#ri>
where <info:fedora/' . $pid . '> <fedora-model:hasModel> $object where <info:fedora/' . $pid . '> <fedora-model:hasModel> $object
and $object <fedora-model:state> <info:fedora/fedora-system:def/model#Active>'; and $object <fedora-model:state> <info:fedora/Fedora-system:def/model#Active>';
$content_models = $collectionHelper->getRelatedItems($pid, $query); $content_models = $collectionHelper->getRelatedItems($pid, $query);
if (empty($content_models)) { if (empty($content_models)) {

Loading…
Cancel
Save