From 3b6e7399aa3299e92e31820cc100e3d845a49be0 Mon Sep 17 00:00:00 2001 From: rwincewicz Date: Mon, 28 May 2012 10:14:07 -0300 Subject: [PATCH] Converted some fedora_collection functions to use the new API --- .../includes/CollectionManagement.inc | 62 ++++++++----------- .../includes/CollectionManagerTable.inc | 7 ++- .../includes/DeleteCollection.inc | 34 +++++----- 3 files changed, 49 insertions(+), 54 deletions(-) diff --git a/islandora_basic_collection/includes/CollectionManagement.inc b/islandora_basic_collection/includes/CollectionManagement.inc index 8b1ba446..22c5e0d9 100644 --- a/islandora_basic_collection/includes/CollectionManagement.inc +++ b/islandora_basic_collection/includes/CollectionManagement.inc @@ -408,10 +408,10 @@ function collection_management_form_submit($form, &$form_state) { * @param string $pid */ function delete_objects_as_batch($pid) { - module_load_include('inc', 'fedora_repository', 'api/fedora_item'); + module_load_include('inc', 'islandora', 'RestConnection'); + $restConnection = new RestConnection(); $name = $user->name; - $item_to_delete = new Fedora_Item($pid); - $item_to_delete->purge("$object purged by $name"); + $restConnection->repository->purgeObject($pid); } /** @@ -419,42 +419,42 @@ function delete_objects_as_batch($pid) { * @param string $pid */ function remove_collection_association($pid, $collection_pid) { - module_load_include('inc', 'fedora_repository', 'api/fedora_item'); - $item = new Fedora_Item($pid); - $item->purge_relationship('isMemberOfCollection', $collection_pid); + module_load_include('inc', 'islandora', 'RestConnection'); + $restConnection = new RestConnection(); + $fedora_object = new FedoraObject($pid, $restConnection->repository); + $fedora_object->relationships->remove(NULL, 'isMemberOfCollection', $collection_pid); } /** * returns content models associated with all objects in a collection * @param string $pid - * @return arrau + * @return array */ function get_represented_content_models($pid) { - module_load_include('inc', 'fedora_repository', 'api/fedora_utils'); - module_load_include('inc', 'fedora_repository', 'api/fedora_item'); + module_load_include('inc', 'islandora', 'RestConnection'); + $restConnection = new RestConnection(); + require_once 'sites/all/libraries/tuque/RepositoryQuery.php'; + $query = "select \$model from <#ri> where (\$object or \$object ) and \$object \$model"; - $query = htmlentities(urlencode($query)); - $content = ''; - $url = variable_get('fedora_repository_url', 'http://localhost:8080/fedora/risearch'); - $url .= "?type=tuples&flush=TRUE&format=csv&limit=$limit&offset=$offset&lang=itql&stream=on&query=" . $query; - $content .= do_curl($url); - $results = explode("\n", $content); - $model_pids = preg_replace('/^info:fedora\/|"model"/', '', $results); + + $model_pids = $restConnection->repository->ri->itqlQuery($query, 'unlimited', '0'); $represented_models = array(); foreach ($model_pids as $model_pid) { - if ($model_pid && $model_pid != 'fedora-system:FedoraObject-3.0') { - $item = new fedora_item($model_pid); - $label = $item->objectProfile->objLabel; - $represented_models[$model_pid] = "$model_pid ~ $label"; + if ($model_pid && $model_pid['object']['value'] != 'fedora-system:FedoraObject-3.0') { + + $represented_models[$model_pid['object']['value']] = $model_pid['object']['value'] . ' ~ ' . $model_pid['title']['value']; } } return $represented_models; } function get_child_collections($collection_pid) { + module_load_include('inc', 'islandora', 'RestConnection'); + $restConnection = new RestConnection(); + require_once 'sites/all/libraries/tuque/RepositoryQuery.php'; $query = << @@ -462,33 +462,23 @@ function get_child_collections($collection_pid) { and \$object EOD; - $query = htmlentities(urlencode($query)); - $content = ''; - - $url = variable_get('fedora_repository_url', 'http://localhost:8080/fedora/risearch'); - $url .= "?type=tuples&flush=TRUE&format=csv&limit=$limit&offset=$offset&lang=itql&stream=on&query=" . $query; - $content .= do_curl($url); - $results = explode("\n", $content); - $lines = preg_replace('/info:fedora\/|"object"/', '', $results); + $lines = $restConnection->repository->ri->itqlQuery($query, 'unlimited', '0'); $collection_pids = array_values(array_filter($lines)); return $collection_pids; } function Islandora_collections_get_collection_from_pid($pid) { + module_load_include('inc', 'islandora', 'RestConnection'); + $restConnection = new RestConnection(); + require_once 'sites/all/libraries/tuque/RepositoryQuery.php'; - module_load_include('inc', 'fedora_repository', 'api/fedora_utils'); - $query_string = 'select $parent from <#ri> + $query = 'select $parent from <#ri> where ($object $parent or $object $parent) and $object \'' . $pid . '\' order by $object'; - $query_string = htmlentities(urlencode($query_string)); - $url = variable_get('fedora_repository_url', 'http://localhost:8080/fedora/risearch'); - $url .= '?type=tuples&flush=true&format=csv&limit=13000&lang=itql&stream=on&query=' . $query_string; - $content = do_curl($url, TRUE); - $results = explode("\n", $content); - $object_pids = preg_replace('/^info:fedora\/|"parent"| /', '', $results); + $object_pids = $restConnection->repository->ri->itqlQuery($query, 'unlimited', '0'); $object_pids = array_values(array_filter($object_pids)); return $object_pids; } \ No newline at end of file diff --git a/islandora_basic_collection/includes/CollectionManagerTable.inc b/islandora_basic_collection/includes/CollectionManagerTable.inc index 378a94fc..c1f91f99 100644 --- a/islandora_basic_collection/includes/CollectionManagerTable.inc +++ b/islandora_basic_collection/includes/CollectionManagerTable.inc @@ -21,7 +21,7 @@ function islandora_collection_table($collection_pid) { $objects[$result['object']['value']] = $result['title']['value']; $keys[] = $result['object']['value']; } - + $rows = array(); foreach ($objects as $key => $object) { $rows[$key] = array( '#pid' => $key, @@ -40,6 +40,10 @@ function islandora_collection_table($collection_pid) { 'title' => array('data' => t('Title')), ); + if (!$rows) { + return; + } + $table = array( '#type' => 'tableselect', '#header' => $header, @@ -47,6 +51,7 @@ function islandora_collection_table($collection_pid) { ); return $table; + } /** diff --git a/islandora_basic_collection/includes/DeleteCollection.inc b/islandora_basic_collection/includes/DeleteCollection.inc index e299c92b..a7f0e10e 100644 --- a/islandora_basic_collection/includes/DeleteCollection.inc +++ b/islandora_basic_collection/includes/DeleteCollection.inc @@ -43,33 +43,28 @@ function islandora_collection_deletion_form($form, &$form_state, $pid) { '#value' => t('@message', array('@message' => $submit_text_message)), ); - return $form; - + return $form; } function islandora_collection_deletion_form_submit($form, &$form_state) { global $user; -// module_load_include('inc', 'fedora_repository', 'api/fedora_item'); -// module_load_include('inc', 'fedora_repository', 'api/fedora_collection'); module_load_include('inc', 'islandora', 'RestConnection'); $restConnection = new RestConnection(); - + $collection_pid = $form_state['values']['current']; $fedora_object = new FedoraObject($collection_pid, $restConnection->repository); $parents = $fedora_object->relationships->get(NULL, 'isMemberOfCollection'); - var_dump($parents); -// exit; -// $parents = Islandora_collections_get_collection_from_pid($collection_pid); -// $collection_pid = $form_state['values']['current']; - if ($form_state['values']['delete_root'] == 1) { + $parents = Islandora_collections_get_collection_from_pid($collection_pid); + $collection_pid = $form_state['values']['current']; + if (isset($form_state['values']['delete_root']) && $form_state['values']['delete_root'] == 1) { delete_root_collection($collection_pid); - drupal_goto("islandora/" . $parents[0]); + drupal_goto("islandora/object/" . $parents[0]['parent']['value']); } $child_collections = get_child_collections($collection_pid); $populated_child_collections = array(); - $pids = @array_filter($form_state['values']['table']['selections']); + $pids = @array_filter($form_state['values']['table']); if (!empty($child_collections)) { foreach ($child_collections as $child) { @@ -93,12 +88,17 @@ function islandora_collection_deletion_form_submit($form, &$form_state) { foreach ($pids_to_delete as $pid_to_delete) { $restConnection->repository->purgeObject($pid_to_delete); } - drupal_goto("islandora/" . $parents[0]); + drupal_goto("islandora/object/" . $collection_pid); } function delete_root_collection($pid) { - module_load_include('inc', 'fedora_repository', 'api/fedora_item'); - $item = new Fedora_Item($pid); - $item->purge(); - drupal_set_message("$pid deleted."); + module_load_include('inc', 'islandora', 'RestConnection'); + try { + $restConnection = new RestConnection(); + $restConnection->repository->purgeObject($pid); + } catch (Exception $e) { + drupal_set_message(t('Collection @pid could not be deleted!', array('@pid' => $pid)), 'error'); + return; + } + drupal_set_message(t('Collection @pid deleted.', array('@pid' => $pid))); }