From b65db61c1079491983cc4cd0d69f9743783110c5 Mon Sep 17 00:00:00 2001 From: Benjamin Rosner Date: Fri, 22 Apr 2016 11:03:01 -0400 Subject: [PATCH 1/2] Added .gitattribute to resolve line ending issues on Windows computers when attempting to Vagrant up. Resolves #188. --- .gitattributes | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..7b748d27c --- /dev/null +++ b/.gitattributes @@ -0,0 +1,4 @@ +# Set the default behavior, in case people don't have core.autocrlf set. +# We need this due to https://github.com/Islandora-CLAW/CLAW/issues/188. +* text=auto +* text eol=lf From a7b1fc6baf528557711c7258130da3d491921280 Mon Sep 17 00:00:00 2001 From: Benjamin Rosner Date: Mon, 25 Apr 2016 12:51:49 -0400 Subject: [PATCH 2/2] First pass at addressing #150. --- .../src/Controller/ResourceController.php | 37 +++++++++++++++---- .../templates/findAllOreProxy.sparql | 5 +++ 2 files changed, 34 insertions(+), 8 deletions(-) create mode 100644 services/ResourceService/templates/findAllOreProxy.sparql diff --git a/services/ResourceService/src/Controller/ResourceController.php b/services/ResourceService/src/Controller/ResourceController.php index f28db26d2..355e766a9 100644 --- a/services/ResourceService/src/Controller/ResourceController.php +++ b/services/ResourceService/src/Controller/ResourceController.php @@ -68,17 +68,38 @@ public function patch(Application $app, Request $request, $id, $child) { public function delete(Application $app, Request $request, $id, $child) { $tx = $request->query->get('tx', ""); $force = $request->query->get('force', FALSE); + + error_log('---START OF DELETE RESOURCE REQUEST: '); + error_log($id); + + $delete_queue = array($app->escape($id).'/'.$child, ); + $sparql_query = $app['twig']->render('findAllOreProxy.sparql', array( + 'resource' => $id, + )); try { - $response = $app['api']->deleteResource($app->escape($id).'/'.$child, $tx); - //remove tombstone also if 'force' == true and previous response is 204 - if ((204 == $response->getStatusCode() || 410 == $response->getStatusCode()) && $force) { - $response= $app['api']->deleteResource($app->escape($id).'/'.$child.'/fcr:tombstone', $tx); - } + $sparql_result = $app['triplestore']->query($sparql_query); } catch (\Exception $e) { - $app->abort(503, '"Chullo says Fedora4 Repository is Not available"'); + $app->abort(503, 'Chullo says "Triple Store Not available"'); + } + if (count($sparql_result) > 0) { + foreach ($sparql_result as $ore_proxy) { + $delete_queue[] = $ore_proxy->obj->getUri(); + } + } + error_log(implode(',', $delete_queue)); + foreach($delete_queue as $object_uri) { + try { + $response = $app['api']->deleteResource($object_uri, $tx); + //remove tombstone also if 'force' == true and previous response is 204 + if ((204 == $response->getStatusCode() || 410 == $response->getStatusCode()) && $force) { + $response = $app['api']->deleteResource($object_uri.'/fcr:tombstone', $tx); + } + } + catch (\Exception $e) { + $app->abort(503, '"Chullo says Fedora4 Repository is Not available"'); + } + error_log($response->getStatusCode()); } - return $response; } - } \ No newline at end of file diff --git a/services/ResourceService/templates/findAllOreProxy.sparql b/services/ResourceService/templates/findAllOreProxy.sparql new file mode 100644 index 000000000..4f75aa731 --- /dev/null +++ b/services/ResourceService/templates/findAllOreProxy.sparql @@ -0,0 +1,5 @@ +PREFIX ore: +PREFIX ldp: +SELECT ?obj WHERE { + ?obj ore:proxyFor <{{ resource }}> . +} \ No newline at end of file