From 39b6c1634582135308f1f1eff5237a904b3bdb9e Mon Sep 17 00:00:00 2001 From: Pek5892 Date: Tue, 27 Feb 2024 16:34:12 +0100 Subject: [PATCH] Aggiunta tabella em_lists_lang --- modules/liste_newsletter/actions.php | 32 ++++++++++----- modules/liste_newsletter/edit.php | 2 + modules/liste_newsletter/init.php | 4 +- modules/liste_newsletter/src/Lista.php | 55 +++++++++++++++++++++----- modules/newsletter/ajax/select.php | 2 +- update/2_4_55.sql | 41 ++++++++++++++++++- update/tables.php | 1 + 7 files changed, 113 insertions(+), 24 deletions(-) diff --git a/modules/liste_newsletter/actions.php b/modules/liste_newsletter/actions.php index 2f6fc4213..d5e657c37 100755 --- a/modules/liste_newsletter/actions.php +++ b/modules/liste_newsletter/actions.php @@ -26,25 +26,39 @@ include_once __DIR__.'/../../core.php'; switch (filter('op')) { case 'add': - $lista = Lista::build(filter('name')); - $id_record = $lista->id; + $lista = post('name'); - flash()->info(tr('Nuova lista newsletter creata!')); + if ((new Lista())->getByName($lista)->id_record) { + flash()->error(tr('Esiste giĆ  una lista con questo nome.')); + } else { + $dbo->query('INSERT INTO `em_lists` (`created_at`) VALUES (NOW())'); + $id_record = $dbo->lastInsertedID(); + $dbo->query('INSERT INTO `em_lists_lang` (`name`, `id_record`, `id_lang`) VALUES ('.prepare($lista).', '.prepare($id_record).', '.prepare(setting('Lingua')).' )'); + + flash()->info(tr('Nuova lista aggiunta.')); + } break; case 'update': - $lista->name = filter('name'); - $lista->description = filter('description'); + $name = post('name'); + $description = post('description'); + $query = post('query'); - $query = filter('query'); if (check_query($query)) { - $lista->query = html_entity_decode($query); + $query = html_entity_decode($query); } - $lista->save(); + $dbo->update('em_lists', [ + 'query' => $query + ], ['id' => $id_record]); - flash()->info(tr('Lista newsletter salvata!')); + $dbo->update('em_lists_lang', [ + 'name' => $name, + 'description' => $description + ], ['id_record' => $id_record, 'id_lang' => setting('Lingua')]); + + flash()->info(tr('Informazioni salvate correttamente.')); break; diff --git a/modules/liste_newsletter/edit.php b/modules/liste_newsletter/edit.php index c6615a96b..6eee14477 100755 --- a/modules/liste_newsletter/edit.php +++ b/modules/liste_newsletter/edit.php @@ -18,9 +18,11 @@ */ use Models\Module; +use Modules\ListeNewsletter\Lista; include_once __DIR__.'/../../core.php'; +$lista = Lista::find($id_record); echo '
diff --git a/modules/liste_newsletter/init.php b/modules/liste_newsletter/init.php index 1ccd3799d..47f9e96ec 100755 --- a/modules/liste_newsletter/init.php +++ b/modules/liste_newsletter/init.php @@ -22,7 +22,5 @@ use Modules\ListeNewsletter\Lista; include_once __DIR__.'/../../core.php'; if (isset($id_record)) { - $lista = Lista::find($id_record); - - $record = $lista->toArray(); + $record = $dbo->fetchOne('SELECT * FROM `em_lists` LEFT JOIN `em_lists_lang` ON (`em_lists`.`id` = `em_lists_lang`.`id_record` AND `em_lists_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `em_lists`.`id` = '.prepare($id_record)); } diff --git a/modules/liste_newsletter/src/Lista.php b/modules/liste_newsletter/src/Lista.php index 7d2c2e572..15d977921 100644 --- a/modules/liste_newsletter/src/Lista.php +++ b/modules/liste_newsletter/src/Lista.php @@ -35,16 +35,6 @@ class Lista extends Model protected $table = 'em_lists'; - public static function build($name) - { - $model = new static(); - $model->name = $name; - - $model->save(); - - return $model; - } - public function save(array $options = []) { $result = parent::save($options); @@ -130,4 +120,49 @@ class Lista extends Model { return 'Liste'; } + + /** + * Ritorna l'attributo name della lista. + * + * @return string + */ + public function getNameAttribute() + { + return database()->table($this->table.'_lang') + ->select('name') + ->where('id_record', '=', $this->id) + ->where('id_lang', '=', setting('Lingua')) + ->first()->name; + } + + /** + * Ritorna l'attributo description della lista. + * + * @return string + */ + public function getDescriptionAttribute() + { + return database()->table($this->table.'_lang') + ->select('description') + ->where('id_record', '=', $this->id) + ->where('id_lang', '=', setting('Lingua')) + ->first()->description; + } + + + /** + * Ritorna l'id della lista a partire dal nome. + * + * @param string $name il nome da ricercare + * + * @return \Illuminate\Support\Collection + */ + public function getByName($name) + { + return database()->table($this->table.'_lang') + ->select('id_record') + ->where('name', '=', $name) + ->where('id_lang', '=', setting('Lingua')) + ->first(); + } } diff --git a/modules/newsletter/ajax/select.php b/modules/newsletter/ajax/select.php index 84ae4f685..6374e8ab5 100755 --- a/modules/newsletter/ajax/select.php +++ b/modules/newsletter/ajax/select.php @@ -98,7 +98,7 @@ switch ($resource) { break; case 'liste_newsletter': - $query = "SELECT `id`, CONCAT(`name`, ' (', (SELECT COUNT(*) FROM `em_list_receiver` WHERE `em_lists`.`id` = `em_list_receiver`.`id_list`), ' `destinatari`)') AS descrizione FROM `em_lists` |where| ORDER BY `name` ASC"; + $query = "SELECT `em_lists`.`id`, CONCAT(`em_lists_lang`.`name`, ' (', COUNT(*), ' `destinatari`)') AS descrizione FROM `em_lists` LEFT JOIN `em_lists_lang` ON (`em_lists_lang`.`id_record` = `em_lists`.`id` AND `em_lists_lang`.`id_lang` = ".prepare(setting('Lingua')).") INNER JOIN `em_list_receiver` ON `em_lists`.`id` = `em_list_receiver`.`id_list` WHERE 1=1 |where| ORDER BY `name` ASC"; foreach ($elements as $element) { $filter[] = '`id`='.prepare($element); diff --git a/update/2_4_55.sql b/update/2_4_55.sql index 9640b0cf6..349ba8e07 100644 --- a/update/2_4_55.sql +++ b/update/2_4_55.sql @@ -1054,4 +1054,43 @@ ALTER TABLE `dt_tipiddt` ALTER TABLE `dt_tipiddt` CHANGE `id` `id` INT NOT NULL AUTO_INCREMENT; -ALTER TABLE `dt_tipiddt_lang` ADD CONSTRAINT `dt_tipiddt_lang_ibfk_1` FOREIGN KEY (`id_record`) REFERENCES `dt_tipiddt`(`id`) ON DELETE CASCADE ON UPDATE RESTRICT; \ No newline at end of file +ALTER TABLE `dt_tipiddt_lang` ADD CONSTRAINT `dt_tipiddt_lang_ibfk_1` FOREIGN KEY (`id_record`) REFERENCES `dt_tipiddt`(`id`) ON DELETE CASCADE ON UPDATE RESTRICT; + +-- Aggiunta tabella em_lists_lang +CREATE TABLE IF NOT EXISTS `em_lists_lang` ( + `id` int NOT NULL, + `id_lang` int NOT NULL, + `id_record` int NOT NULL, + `name` VARCHAR(255) NOT NULL, + `description` VARCHAR(255) NOT NULL +); +ALTER TABLE `em_lists_lang` + ADD PRIMARY KEY (`id`); + +ALTER TABLE `em_lists_lang` + MODIFY `id` int NOT NULL AUTO_INCREMENT; + +INSERT INTO `em_lists_lang` (`id`, `id_lang`, `id_record`, `name`, `description`) SELECT NULL, (SELECT `id` FROM `zz_langs` WHERE `iso_code` = 'it'), `id`, `name`, `description` FROM `em_lists`; + +ALTER TABLE `em_lists` + DROP `description`, + DROP `name`; + +ALTER TABLE `em_lists` CHANGE `id` `id` INT NOT NULL AUTO_INCREMENT; + +ALTER TABLE `em_lists_lang` ADD CONSTRAINT `em_lists_lang_ibfk_1` FOREIGN KEY (`id_record`) REFERENCES `em_lists_lang`(`id`) ON DELETE CASCADE ON UPDATE RESTRICT; + +-- Allineamento vista Liste newsletter +UPDATE `zz_modules` SET `options` = " +SELECT + |select| +FROM + `em_lists` + LEFT JOIN `em_lists_lang` ON (`em_lists_lang`.`id_record` = `em_lists`.`id` AND `em_lists_lang`.|lang|) +WHERE + 1=1 AND deleted_at IS NULL +HAVING + 2=2" WHERE `name` = 'Liste newsletter'; +UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`em_lists`.`id`' WHERE `zz_modules`.`name` = 'Liste newsletter' AND `zz_views`.`name` = 'id'; +UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`em_lists_lang`.`description`' WHERE `zz_modules`.`name` = 'Liste newsletter' AND `zz_views`.`name` = 'Descrizione'; +UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`em_lists_lang`.`name`' WHERE `zz_modules`.`name` = 'Liste newsletter' AND `zz_views`.`name` = 'Nome'; \ No newline at end of file diff --git a/update/tables.php b/update/tables.php index 31fbc15b3..f80197fb8 100755 --- a/update/tables.php +++ b/update/tables.php @@ -82,6 +82,7 @@ return [ 'em_newsletters', 'em_mansioni_template', 'em_lists', + 'em_lists_lang', 'em_list_receiver', 'em_emails', 'em_email_receiver',