/** * @see SampleInterface::delete() * @return bool * @throws SampleDeleteLocationException * @throws SampleDeleteUserException * @throws SampleDeleteOrganisationUnitException * @throws SampleDeleteItemException * @throws SampleDeleteFolderException * @throws SampleDeleteEventFailedException * @throws SampleDeleteFailedException * @throws SampleDeleteItemLinkException * @throws SampleNoInstanceException */ public function delete() { global $transaction; if ($this->sample_id and $this->sample) { $transaction_id = $transaction->begin(); try { array_push(self::$sample_delete_array, $this->sample_id); $tmp_sample_id = $this->sample_id; // Location Relations $sample_has_location_array = SampleHasLocation_Access::list_entries_by_sample_id($tmp_sample_id); if (is_array($sample_has_location_array) and count($sample_has_location_array) >= 1) { foreach ($sample_has_location_array as $key => $value) { $sample_has_location = new SampleHasLocation_Access($value); if ($sample_has_location->delete() == false) { throw new SampleDeleteLocationException(); } } } // Organisation Unit and User Relations $sample_security = new SampleSecurity($tmp_sample_id); $organisation_unit_array = $sample_security->list_organisation_unit_entries(); if (is_array($organisation_unit_array) and count($organisation_unit_array) >= 1) { foreach ($organisation_unit_array as $key => $value) { if ($sample_security->delete_organisation_unit($value) == false) { throw new SampleDeleteOrganisationUnitException(); } } } $user_array = $sample_security->list_user_entries(); if (is_array($user_array) and count($user_array) >= 1) { foreach ($user_array as $key => $value) { if ($sample_security->delete_user($value) == false) { throw new SampleDeleteUserException(); } } } // Items $sample_item = new SampleItem($tmp_sample_id); $item_array = $sample_item->get_sample_items(); if (is_array($item_array) and count($item_array) >= 1) { foreach ($item_array as $item_key => $item_value) { $sample_item = new SampleItem($tmp_sample_id); $sample_item->set_item_id($item_value); if ($sample_item->unlink_item() == false) { throw new SampleDeleteItemException(); } } } // Parent-Sample-Sub-Item-Links if (SampleItem::delete_remaining_sample_entries($tmp_sample_id) == false) { throw new SampleDeleteItemException(); } parent::delete(); $sample_delete_event = new SampleDeleteEvent($tmp_sample_id); $event_handler = new EventHandler($sample_delete_event); if ($event_handler->get_success() == false) { throw new SampleDeleteEventFailedException(); } $sample_is_item = new SampleIsItem_Access($tmp_sample_id); if ($sample_is_item->delete() == false) { throw new SampleDeleteItemLinkException(); } if ($this->sample->delete() == false) { throw new SampleDeleteFailedException(); } else { $this->__destruct(); $folder_id = SampleFolder::get_folder_by_sample_id($tmp_sample_id); $folder = Folder::get_instance($folder_id); if ($folder->delete(true, true) == false) { throw new SampleDeleteFolderException(); } } } catch (BaseException $e) { if ($transaction_id != null) { $transaction->rollback($transaction_id); } throw $e; } if ($transaction_id != null) { $transaction->commit($transaction_id); } return true; } else { throw new SampleNoInstanceException(); } }
/** * @throws SampleIDMissingException * @throws SampleSecurityAccessDeniedException * @throws SamplePermissionOrganisationUnitIDMissingException */ public static function ou_permission_delete() { global $user; if ($_GET['sample_id']) { if ($_GET['id']) { $sample_id = $_GET['sample_id']; $sample = new Sample($sample_id); $sample_security = new SampleSecurity($sample_id); if ($sample->get_owner_id() == $user->get_user_id() or $user->is_admin() == true) { if ($_GET['sure'] != "true") { $template = new HTMLTemplate("sample/int_admin/ou_permission_delete.html"); $paramquery = $_GET; $paramquery['sure'] = "true"; $params = http_build_query($paramquery); $template->set_var("yes_params", $params); $paramquery = $_GET; unset($paramquery['nextpage']); unset($paramquery['sure']); $paramquery['nav'] = "sample"; $paramquery['run'] = "admin_permission_ou"; $params = http_build_query($paramquery); $template->set_var("no_params", $params); $template->output(); } else { $paramquery = $_GET; unset($paramquery['nextpage']); unset($paramquery['sure']); $paramquery['nav'] = "sample"; $paramquery['run'] = "admin_permission_ou"; $params = http_build_query($paramquery); $entry_id = $sample_security->get_entry_by_organisation_unit_id($_GET['id']); if ($sample_security->delete_organisation_unit($entry_id)) { Common_IO::step_proceed($params, "Delete Sample", "Operation Successful", null); } else { Common_IO::step_proceed($params, "Delete Sample", "Operation Failed", null); } } } else { throw new SampleSecurityAccessDeniedException(); } } else { throw new SamplePermissionOrganisationUnitIDMissingException(); } } else { throw new SampleIDMissingException(); } }