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