From 4a203a7613bb3ff95dfb21bc141644bae8b41b0e Mon Sep 17 00:00:00 2001 From: Pek5892 Date: Tue, 12 Sep 2023 12:04:50 +0200 Subject: [PATCH] Fix #945 --- modules/checklists/src/Check.php | 11 +++++++++++ modules/emails/src/Mail.php | 19 ++++++++++++++++++ modules/fatture/actions.php | 6 ------ modules/interventi/actions.php | 5 ----- modules/interventi/bulk.php | 5 ----- src/Common/Document.php | 34 ++++++++++++++++++++++++++++++++ src/Models/Note.php | 11 +++++++++++ 7 files changed, 75 insertions(+), 16 deletions(-) diff --git a/modules/checklists/src/Check.php b/modules/checklists/src/Check.php index e133aeac5..9998c7808 100755 --- a/modules/checklists/src/Check.php +++ b/modules/checklists/src/Check.php @@ -127,6 +127,17 @@ class Check extends Model } */ + + /** + * Rimuove tutte le check di un determinato modulo/plugin e record. + * + * @param array $data + */ + public static function deleteLinked($data) + { + database()->delete('zz_checks', $data); + } + /* Relazioni Eloquent */ public function user() diff --git a/modules/emails/src/Mail.php b/modules/emails/src/Mail.php index ee49ada2f..684ccfa47 100755 --- a/modules/emails/src/Mail.php +++ b/modules/emails/src/Mail.php @@ -176,6 +176,25 @@ class Mail extends Model $this->attributes['content'] = $value; } + /** + * Rimuove tutte le mail di un determinato modulo/plugin e record. + * + * @param array $data + */ + public static function deleteLinked($data) + { + $templates = database()->table('em_templates')->where('id_module', $data['id_module'])->get(); + + $id_templates = []; + + foreach($templates as $template) { + $id_templates[] = $template->id; + } + + database()->table('em_emails')->where('id_record', $data['id_record'])->whereIn('id_template', $id_templates)->delete(); + } + + /* Relazioni Eloquent */ public function account() diff --git a/modules/fatture/actions.php b/modules/fatture/actions.php index 2db4599d9..5106bd0d5 100755 --- a/modules/fatture/actions.php +++ b/modules/fatture/actions.php @@ -346,12 +346,6 @@ switch ($op) { // Azzeramento collegamento della rata contrattuale alla pianificazione $dbo->query('UPDATE co_fatturazione_contratti SET iddocumento=0 WHERE iddocumento='.prepare($id_record)); - // Eliminazione allegati collegati - Uploads::deleteLinked([ - 'id_module' => $id_module, - 'id_record' => $id_record, - ]); - flash()->info(tr('Fattura eliminata!')); } catch (InvalidArgumentException $e) { flash()->error(tr('Sono stati utilizzati alcuni serial number nel documento: impossibile procedere!')); diff --git a/modules/interventi/actions.php b/modules/interventi/actions.php index 896b1f8ba..14fbdac10 100644 --- a/modules/interventi/actions.php +++ b/modules/interventi/actions.php @@ -398,11 +398,6 @@ switch (post('op')) { // Eliminazione associazione interventi e my_impianti $dbo->query('DELETE FROM my_impianti_interventi WHERE idintervento='.prepare($id_record)); - // Elimino anche eventuali file caricati - Uploads::deleteLinked([ - 'id_module' => $id_module, - 'id_record' => $id_record, - ]); flash()->info(tr('Intervento eliminato!')); } catch (InvalidArgumentException $e) { diff --git a/modules/interventi/bulk.php b/modules/interventi/bulk.php index 409b63a84..346670ca1 100755 --- a/modules/interventi/bulk.php +++ b/modules/interventi/bulk.php @@ -289,11 +289,6 @@ switch (post('op')) { // Eliminazione associazione interventi e my_impianti $dbo->query('DELETE FROM my_impianti_interventi WHERE idintervento='.prepare($id_record)); - // Elimino anche eventuali file caricati - Uploads::deleteLinked([ - 'id_module' => $id_module, - 'id_record' => $id_record, - ]); } catch (InvalidArgumentException $e) { } } diff --git a/src/Common/Document.php b/src/Common/Document.php index 4eb0fd5c5..99002e74d 100755 --- a/src/Common/Document.php +++ b/src/Common/Document.php @@ -266,6 +266,40 @@ abstract class Document extends Model implements ReferenceInterface, DocumentInt $riga->delete(); } + // Elimino eventuali file caricati + \Uploads::deleteLinked([ + 'id_module' => $this->getModule()->id, + 'id_record' => $this->id, + ]); + + // Elimino eventuali note + \Models\Note::deleteLinked([ + 'id_module' => $this->getModule()->id, + 'id_record' => $this->id, + ]); + + // Elimino eventuali checklist + \Modules\Checklists\Check::deleteLinked([ + 'id_module' => $this->getModule()->id, + 'id_record' => $this->id, + ]); + + // Elimino eventuali email + \Modules\Emails\Mail::deleteLinked([ + 'id_module' => $this->getModule()->id, + 'id_record' => $this->id, + ]); + + // Elimino eventuali campi personalizzati + $fields = database()->table('zz_fields')->where('id_module', $this->getModule()->id)->get(); + + $id_fields = []; + + foreach($fields as $field) { + $id_fields[] = $field->id; + } + database()->table('zz_field_record')->where('id_record', $this->id)->whereIn('id_field', $id_fields)->delete(); + return parent::delete(); } diff --git a/src/Models/Note.php b/src/Models/Note.php index 7e3f231a3..496279d97 100755 --- a/src/Models/Note.php +++ b/src/Models/Note.php @@ -60,6 +60,17 @@ class Note extends Model return $model; } + /** + * Rimuove tutte le note di un determinato modulo/plugin e record. + * + * @param array $data + */ + public static function deleteLinked($data) + { + database()->delete('zz_notes', $data); + } + + /* Relazioni Eloquent */ public function user()