From 5d1790289c565ace01143d524538bd505859a57c Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Tue, 24 Sep 2019 11:39:00 +0200 Subject: [PATCH] =?utf8?q?CSV-Import-Bericht:=20beim=20L=C3=B6schen=20nur?= =?utf8?q?=20verwaiste=20Profile=20l=C3=B6schen?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Unter gewissen Umständen kann es passieren, dass es mehrere `csv_import_reports` mit derselben `profile_id` gibt. In so einem Fall darf nur dann versucht werden, die Einträge aus `csv_import_profiles` zu löschen, wenn der letzte `csv_import_reports`-Eintrag gelöscht wird, der auf auf dieses Profil verlinkt. --- SL/DB/CsvImportReport.pm | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/SL/DB/CsvImportReport.pm b/SL/DB/CsvImportReport.pm index b9c34eb34..5249410c8 100644 --- a/SL/DB/CsvImportReport.pm +++ b/SL/DB/CsvImportReport.pm @@ -65,8 +65,17 @@ sub destroy { do_query($::form, $dbh, 'DELETE FROM csv_import_reports WHERE id = ?', $self->id); if ($self->profile_id) { - do_query($::form, $dbh, 'DELETE FROM csv_import_profile_settings WHERE csv_import_profile_id = ?', $self->profile_id); - do_query($::form, $dbh, 'DELETE FROM csv_import_profiles WHERE id = ?', $self->profile_id); + my ($is_profile_used_elsewhere) = selectfirst_array_query($::form, $dbh, <profile_id); + SELECT id + FROM csv_import_reports + WHERE profile_id = ? + LIMIT 1 +SQL + + if (!$is_profile_used_elsewhere) { + do_query($::form, $dbh, 'DELETE FROM csv_import_profile_settings WHERE csv_import_profile_id = ?', $self->profile_id); + do_query($::form, $dbh, 'DELETE FROM csv_import_profiles WHERE id = ?', $self->profile_id); + } } 1; }) or do { die SL::DB->client->error }; -- 2.20.1