From 1985015aeb80431e935caad25067df3f7d5ed197 Mon Sep 17 00:00:00 2001 From: Pek5892 Date: Mon, 4 Mar 2024 13:17:54 +0100 Subject: [PATCH] Aggiunta tabella zz_plugins_lang --- controller.php | 2 +- include/top.php | 2 +- modules/aggiornamenti/modutil.php | 4 +- .../src/Controlli/PluginDuplicati.php | 8 ++-- modules/anagrafiche/ajax/search.php | 2 +- modules/anagrafiche/edit.php | 4 +- modules/checklists/add.php | 2 +- modules/checklists/edit.php | 2 +- modules/custom_fields/add.php | 2 +- modules/custom_fields/edit.php | 2 +- modules/fatture/edit.php | 2 +- modules/interventi/actions.php | 4 +- plugins/componenti/edit.php | 2 +- src/Models/Plugin.php | 45 +++++++++++++++++++ src/Traits/LocalPoolTrait.php | 2 +- src/Traits/RecordTrait.php | 2 +- update/2_4_55.sql | 24 +++++++++- update/tables.php | 1 + 18 files changed, 90 insertions(+), 22 deletions(-) diff --git a/controller.php b/controller.php index d5ef0265f..105de0813 100755 --- a/controller.php +++ b/controller.php @@ -51,7 +51,7 @@ echo ' '; -$plugins = $dbo->fetchArray('SELECT id, title FROM zz_plugins WHERE idmodule_to='.prepare($id_module)." AND position='tab_main' AND enabled = 1"); +$plugins = $dbo->fetchArray('SELECT `zz_plugins`.`id`,`title` FROM `zz_plugins` LEFT JOIN `zz_plugins_lang` ON (`zz_plugins`.`id` = `zz_plugins_lang`.`id_record` AND `zz_plugins`.`id_lang` = '.setting('Lingua').') WHERE `idmodule_to`='.prepare($id_module)." AND `position`='tab_main' AND `enabled` = 1"); // Tab dei plugin foreach ($plugins as $plugin) { diff --git a/include/top.php b/include/top.php index 72b18e2b8..fc42d52f1 100755 --- a/include/top.php +++ b/include/top.php @@ -523,7 +523,7 @@ if (Auth::check()) { // Tab dei plugin if (!empty($id_record)) { - $plugins = $dbo->fetchArray('SELECT id, title, options, options2 FROM zz_plugins WHERE idmodule_to='.prepare($id_module)." AND position='tab' AND enabled = 1 ORDER BY zz_plugins.order DESC"); + $plugins = $dbo->fetchArray('SELECT `zz_plugins`.`id`, `title`, `options`, `options2` FROM `zz_plugins` LEFT JOIN `zz_plugins_lang` ON (`zz_plugins`.`id` = `zz_plugins_lang`.`id_record` AND `zz_plugins_lang`.`id_lang` = '.setting('Lingua').') WHERE `idmodule_to`='.prepare($id_module)." AND `position`='tab' AND `enabled` = 1 ORDER BY `zz_plugins`.`order` DESC"); foreach ($plugins as $plugin) { // Badge count per record plugin $count = 0; diff --git a/modules/aggiornamenti/modutil.php b/modules/aggiornamenti/modutil.php index b63b6e9b5..3d9521615 100755 --- a/modules/aggiornamenti/modutil.php +++ b/modules/aggiornamenti/modutil.php @@ -103,8 +103,8 @@ if (!function_exists('customDatabase')) { function customDatabase() { $database = database(); - $modules = $database->fetchArray("SELECT name, CONCAT('modules/', directory) AS directory FROM zz_modules WHERE options2 != ''"); - $plugins = $database->fetchArray("SELECT name, CONCAT('plugins/', directory) AS directory FROM zz_plugins WHERE options2 != ''"); + $modules = $database->fetchArray("SELECT name, CONCAT('modules/', `directory`) AS directory FROM `zz_modules` WHERE `options2` != ''"); + $plugins = $database->fetchArray("SELECT `name`, CONCAT('plugins/', `directory`) AS directory FROM `zz_plugins` LEFT JOIN `zz_plugins_lang` ON (`zz_plugins`.`id` = `zz_plugins_lang`.`id_record` AND `zz_plugins`.`id_lang` = ".setting('Lingua').") WHERE `options2` != ''"); $results = array_merge($modules, $plugins); diff --git a/modules/aggiornamenti/src/Controlli/PluginDuplicati.php b/modules/aggiornamenti/src/Controlli/PluginDuplicati.php index 0105103c8..02f213b13 100644 --- a/modules/aggiornamenti/src/Controlli/PluginDuplicati.php +++ b/modules/aggiornamenti/src/Controlli/PluginDuplicati.php @@ -35,16 +35,16 @@ class PluginDuplicati extends Controllo public function check() { - $duplicati = database()->fetchArray('SELECT `idmodule_to`, `name` FROM `zz_plugins` GROUP BY `idmodule_to`, `name` HAVING COUNT(`name`) > 1'); + $duplicati = database()->fetchArray('SELECT `idmodule_to`, `name` FROM `zz_plugins` LEFT JOIN `zz_plugins_lang` ON (`zz_plugins`.`id` = `zz_plugins_lang`.`id_record` AND `zz_plugins`.`id_lang` = '.prepare(setting('Lingua')).') GROUP BY `idmodule_to`, `name` HAVING COUNT(`name`) > 1'); foreach ($duplicati as $plugin) { $modulo = Module::pool($plugin['idmodule_to']); $this->addResult([ - 'id' => $plugin['name'], - 'nome' => $modulo->title.': '.$plugin['name'], + 'id' => $plugin->name, + 'nome' => $modulo->title.': '.$plugin->name, 'descrizione' => tr('Il plugin _NAME_ del modulo _MODULE_ esiste piĆ¹ volte', [ - '_NAME_' => $plugin['name'], + '_NAME_' => $plugin->name, '_MODULE_' => $modulo->title, ]), ]); diff --git a/modules/anagrafiche/ajax/search.php b/modules/anagrafiche/ajax/search.php index 30fa348e5..967664bec 100755 --- a/modules/anagrafiche/ajax/search.php +++ b/modules/anagrafiche/ajax/search.php @@ -107,7 +107,7 @@ foreach ($fields as $name => $value) { $rs = $dbo->fetchArray($query); -$plugin = $dbo->fetchArray("SELECT id FROM zz_plugins WHERE name='Referenti'"); +$plugin = $dbo->fetchArray("SELECT `zz_plugins`.`id` FROM `zz_plugins` LEFT JOIN `zz_plugins_lang` ON (`zz_plugins`.`id` = `zz_plugins_lang`.`id_record` AND `zz_plugins_lang`.`id_lang` = ".prepare(setting('Lingua')).") WHERE `name`='Referenti'"); foreach ($rs as $r) { $result = []; diff --git a/modules/anagrafiche/edit.php b/modules/anagrafiche/edit.php index 10e203ce4..d4aeea312 100755 --- a/modules/anagrafiche/edit.php +++ b/modules/anagrafiche/edit.php @@ -30,7 +30,7 @@ $is_agente = in_array($id_agente, $tipi_anagrafica); $is_azienda = in_array($id_azienda, $tipi_anagrafica); if (!$is_cliente && !$is_fornitore && !$is_azienda && $is_tecnico) { - $ignore = $dbo->fetchArray("SELECT `id` FROM `zz_plugins` WHERE `name`='Sedi' OR `name`='Referenti' OR `name`='Dichiarazioni d\'intento'"); + $ignore = $dbo->fetchArray("SELECT `zz_plugins`.`id` FROM `zz_plugins` LEFT JOIN `zz_plugins_lang` ON (`zz_plugins`.`id` = `zz_plugins_lang`.`id_record` AND `zz_plugins`.`id_lang` = ".prepare(setting('Lingua')).") WHERE `name`='Sedi' OR `name`='Referenti' OR `name`='Dichiarazioni d\'intento'"); foreach ($ignore as $plugin) { echo ' @@ -41,7 +41,7 @@ if (!$is_cliente && !$is_fornitore && !$is_azienda && $is_tecnico) { } if (!$is_cliente) { - $ignore = $dbo->fetchArray("SELECT `id` FROM `zz_plugins` WHERE `name` IN ('Impianti del cliente','Contratti del cliente','Ddt del cliente')"); + $ignore = $dbo->fetchArray("SELECT `zz_plugins`.`id` FROM `zz_plugins` LEFT JOIN `zz_plugins_lang` ON (`zz_plugins`.`id` = `zz_plugins_lang`.`id_record` AND `zz_plugins`.`id_lang` = ".prepare(setting('Lingua')).") WHERE `name` IN ('Impianti del cliente','Contratti del cliente','Ddt del cliente')"); foreach ($ignore as $plugin) { echo ' diff --git a/modules/checklists/add.php b/modules/checklists/add.php index de09377a6..9307942e3 100755 --- a/modules/checklists/add.php +++ b/modules/checklists/add.php @@ -34,7 +34,7 @@ echo '
- {[ "type": "select", "label": "'.tr('Plugin del template').'", "name": "plugin", "values": "query=SELECT id, title AS descrizione FROM zz_plugins WHERE enabled = 1", "value": "'.$record['id_plugin'].'", "disabled": "'.!empty($record['id_module']).'" ]} + {[ "type": "select", "label": "'.tr('Plugin del template').'", "name": "plugin", "values": "query=SELECT `zz_plugins`.`id`, `title` AS descrizione FROM `zz_plugins` LEFT JOIN `zz_plugins_lang` ON (`zz_plugins`.`id` = `zz_plugins_lang`.`id_record` AND `zz_plugins`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `enabled` = 1", "value": "'.$record['id_plugin'].'", "disabled": "'.!empty($record['id_module']).'" ]}
diff --git a/modules/checklists/edit.php b/modules/checklists/edit.php index cecb457f1..d50cf69ac 100755 --- a/modules/checklists/edit.php +++ b/modules/checklists/edit.php @@ -41,7 +41,7 @@ echo '
- {[ "type": "select", "label": "'.tr('Plugin del template').'", "name": "plugin", "values": "query=SELECT id, title AS descrizione, (SELECT name FROM zz_modules WHERE zz_modules.id = zz_plugins.idmodule_from) AS optgroup FROM zz_plugins WHERE enabled = 1", "value": "'.$record['id_plugin'].'", "disabled": "'.!empty($record['id_module']).'" ]} + {[ "type": "select", "label": "'.tr('Plugin del template').'", "name": "plugin", "values": "query=SELECT `zz_plugins`.`id`, `title` AS descrizione, `zz_modules`.`name` AS optgroup FROM zz_plugins INNER JOIN `zz_modules` ON (`zz_plugins`.`id_module_to` = `zz_modules`.`id`) LEFT JOIN `zz_plugins_lang` ON (`zz_plugins`.`id` = `zz_plugins_lang`.`id_record` AND `zz_plugins`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `enabled` = 1", "value": "'.$record['id_plugin'].'", "disabled": "'.!empty($record['id_module']).'" ]}
diff --git a/modules/custom_fields/add.php b/modules/custom_fields/add.php index e3cc1fa0a..bcbf3e933 100755 --- a/modules/custom_fields/add.php +++ b/modules/custom_fields/add.php @@ -29,7 +29,7 @@ include_once __DIR__.'/../../core.php';
- {[ "type": "select", "label": "", "name": "plugin_id", "values": "query=SELECT id, name as text FROM zz_plugins WHERE enabled = 1" ]} + {[ "type": "select", "label": "", "name": "plugin_id", "values": "query=SELECT `zz_plugins`.`id`, `name` as text FROM `zz_plugins` LEFT JOIN `zz_plugins_lang` ON (`zz_plugins`.`id` = `zz_plugins_lang`.`id_record` AND `zz_plugins`.`id_lang` = ) WHERE `enabled` = 1" ]}
diff --git a/modules/custom_fields/edit.php b/modules/custom_fields/edit.php index 10fefddbb..a59cb9673 100755 --- a/modules/custom_fields/edit.php +++ b/modules/custom_fields/edit.php @@ -31,7 +31,7 @@ include_once __DIR__.'/../../core.php';
- {[ "type": "select", "label": "", "name": "plugin_id", "values": "query=SELECT id, name as text FROM zz_plugins WHERE enabled = 1", "value": "" ]} + {[ "type": "select", "label": "", "name": "plugin_id", "values": "query=SELECT `zz_plugins`.`id`, `name` as text FROM `zz_plugins` LEFT JOIN `zz_plugins_lang` ON (`zz_plugins`.`id` = `zz_plugins_lang`.`id_record` AND `zz_plugins`.`id_lang` = ) WHERE `enabled` = 1", "value": "" ]}
diff --git a/modules/fatture/edit.php b/modules/fatture/edit.php index 0567e35f0..4283ebd26 100755 --- a/modules/fatture/edit.php +++ b/modules/fatture/edit.php @@ -264,7 +264,7 @@ $query = 'SELECT *, `colore` AS _bgcolor_, `co_statidocumento_lang`.`name` as de if (empty($record['is_fiscale'])) { $query .= " WHERE `name` = 'Bozza'"; - $plugin = $dbo->fetchArray("SELECT id FROM zz_plugins WHERE name='Fatturazione Elettronica' AND idmodule_to = ".prepare($id_module)); + $plugin = $dbo->fetchArray("SELECT `zz_plugins`.`id` FROM `zz_plugins` LEFT JOIN `zz_plugins_lang` ON (`zz_plugins`.`id` = `zz_plugins_lang`.`id_record` AND `zz_plugins`.`id_lang` = ".prepare(setting('Lingua')).") WHERE `name`='Fatturazione Elettronica' AND `idmodule_to` = ".prepare($id_module)); echo ''; } // Forzo il passaggio della fattura da Bozza ad Emessa per il corretto calcolo del numero. diff --git a/modules/interventi/actions.php b/modules/interventi/actions.php index 37a5d57b7..5ade279c0 100644 --- a/modules/interventi/actions.php +++ b/modules/interventi/actions.php @@ -41,7 +41,7 @@ use Plugins\ListinoClienti\DettaglioPrezzo; use Plugins\PianificazioneInterventi\Promemoria; $modulo_impianti = Modules::get('Impianti'); -$plugin_impianti = Plugin::pool('Impianti'); +$plugin_impianti = (new Plugin())->getByName('Impianti')->id_record; switch (post('op')) { case 'update': @@ -244,7 +244,7 @@ switch (post('op')) { } $check = Check::build($user, $structure, $id_record, $check_impianto['content'], $id_parent_new, $check_impianto['is_titolo'], $check_impianto['order'], $modulo_impianti['id'], $impianto); $check->id_module = $id_module; - $check->id_plugin = $plugin_impianti['id']; + $check->id_plugin = $plugin_impianti; $check->note = $check_impianto['note']; $check->save(); } diff --git a/plugins/componenti/edit.php b/plugins/componenti/edit.php index be224fce5..88dac8f17 100644 --- a/plugins/componenti/edit.php +++ b/plugins/componenti/edit.php @@ -67,7 +67,7 @@ $elenchi = [ ], ]; -$plugin = Plugin::pool('Componenti'); +$plugin = (new Plugin())->getByName('Componenti'); $module = $plugin->module; // Generazione elenchi HTML diff --git a/src/Models/Plugin.php b/src/Models/Plugin.php index ec09b355b..c4f1976b6 100755 --- a/src/Models/Plugin.php +++ b/src/Models/Plugin.php @@ -134,4 +134,49 @@ class Plugin extends Model $builder->where('enabled', true); }); } + + /** + * Ritorna l'attributo title del plugin. + * + * @return string + */ + public function getTitleAttribute() + { + return database()->table($this->table.'_lang') + ->select('name') + ->where('id_record', '=', $this->id) + ->where('id_lang', '=', setting('Lingua')) + ->first()->name; + } + + /** + * Ritorna l'attributo name del plugin. + * + * @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'id del plugin 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/src/Traits/LocalPoolTrait.php b/src/Traits/LocalPoolTrait.php index 2d71e8909..216431bf7 100644 --- a/src/Traits/LocalPoolTrait.php +++ b/src/Traits/LocalPoolTrait.php @@ -98,7 +98,7 @@ trait LocalPoolTrait return null; } - return self::pool(self::$current); + return self::find(self::$current); } /** diff --git a/src/Traits/RecordTrait.php b/src/Traits/RecordTrait.php index 2b11a95ad..f263613ec 100755 --- a/src/Traits/RecordTrait.php +++ b/src/Traits/RecordTrait.php @@ -33,7 +33,7 @@ trait RecordTrait public function getPlugin() { - return !empty($this->plugin) ? Plugin::pool($this->plugin) : null; + return !empty($this->plugin) ? (new Plugin())->getByName($this->plugin) : null; } /** diff --git a/update/2_4_55.sql b/update/2_4_55.sql index 8b02bd434..a7a71fba4 100644 --- a/update/2_4_55.sql +++ b/update/2_4_55.sql @@ -1757,4 +1757,26 @@ ALTER TABLE `zz_widgets_lang` ADD CONSTRAINT `zz_widgets_lang_ibfk_1` FOREIGN KE UPDATE `zz_widgets` SET `query` = 'SELECT COUNT(co_preventivi.id) AS dato FROM co_preventivi INNER JOIN co_statipreventivi ON co_preventivi.idstato = co_statipreventivi.id LEFT JOIN co_statipreventivi_lang ON (co_statipreventivi_lang.id_record = co_statipreventivi.id AND co_statipreventivi_lang.id_lang = (SELECT valore FROM zz_settings WHERE nome = \"Lingua\")) WHERE name =\"In lavorazione\" AND default_revision=1' WHERE `zz_widgets`.`id` = (SELECT `id_record` FROM `zz_widgets_lang` WHERE `name` = 'Preventivi in lavorazione'); -UPDATE `zz_widgets` SET `query` = 'SELECT COUNT(`dati`.`id`) AS dato FROM (SELECT `co_contratti`.`id`,((SELECT SUM(`co_righe_contratti`.`qta`) FROM `co_righe_contratti` WHERE `co_righe_contratti`.`um` = \"ore\" AND `co_righe_contratti`.`idcontratto` = `co_contratti`.`id`) - IFNULL((SELECT SUM(`in_interventi_tecnici`.`ore`) FROM `in_interventi_tecnici` INNER JOIN `in_interventi` ON `in_interventi_tecnici`.`idintervento` = `in_interventi`.`id` WHERE `in_interventi`.`id_contratto` = `co_contratti`.`id` AND `in_interventi`.`idstatointervento` IN (SELECT `in_statiintervento`.`id` FROM `in_statiintervento` WHERE `in_statiintervento`.`is_completato` = 1)),0)) AS `ore_rimanenti`, DATEDIFF(`data_conclusione`, NOW()) AS giorni_rimanenti, `data_conclusione`, `ore_preavviso_rinnovo`, `giorni_preavviso_rinnovo`, (SELECT `ragione_sociale` FROM `an_anagrafiche` WHERE `idanagrafica` = `co_contratti`.`idanagrafica`) AS ragione_sociale FROM `co_contratti` INNER JOIN `co_staticontratti` ON `co_staticontratti`.`id` = `co_contratti`.`idstato` LEFT JOIN `co_staticontratti_lang` ON (`co_staticontratti`.`id` = `co_staticontratti_lang`.`id_record` AND `co_staticontratti_lang`.`id_lang` = (SELECT `valore` FROM `zz_settings` WHERE `name` = "Lingua")) WHERE `rinnovabile` = 1 AND YEAR(`data_conclusione`) > 1970 AND `co_contratti`.`id` NOT IN (SELECT `idcontratto_prev` FROM `co_contratti` contratti) AND `co_staticontratti_lang`.`name` NOT IN (\"Concluso\", \"Rifiutato\", \"Bozza\") HAVING (`ore_rimanenti` <= `ore_preavviso_rinnovo` OR DATEDIFF(`data_conclusione`, NOW()) <= ABS(`giorni_preavviso_rinnovo`)) ORDER BY `giorni_rimanenti` ASC,`ore_rimanenti` ASC) dati' WHERE `zz_widgets`.`id` = (SELECT `id_record` FROM `zz_widgets_lang` WHERE `name` = 'Contratti in scadenza'); \ No newline at end of file +UPDATE `zz_widgets` SET `query` = 'SELECT COUNT(`dati`.`id`) AS dato FROM (SELECT `co_contratti`.`id`,((SELECT SUM(`co_righe_contratti`.`qta`) FROM `co_righe_contratti` WHERE `co_righe_contratti`.`um` = \"ore\" AND `co_righe_contratti`.`idcontratto` = `co_contratti`.`id`) - IFNULL((SELECT SUM(`in_interventi_tecnici`.`ore`) FROM `in_interventi_tecnici` INNER JOIN `in_interventi` ON `in_interventi_tecnici`.`idintervento` = `in_interventi`.`id` WHERE `in_interventi`.`id_contratto` = `co_contratti`.`id` AND `in_interventi`.`idstatointervento` IN (SELECT `in_statiintervento`.`id` FROM `in_statiintervento` WHERE `in_statiintervento`.`is_completato` = 1)),0)) AS `ore_rimanenti`, DATEDIFF(`data_conclusione`, NOW()) AS giorni_rimanenti, `data_conclusione`, `ore_preavviso_rinnovo`, `giorni_preavviso_rinnovo`, (SELECT `ragione_sociale` FROM `an_anagrafiche` WHERE `idanagrafica` = `co_contratti`.`idanagrafica`) AS ragione_sociale FROM `co_contratti` INNER JOIN `co_staticontratti` ON `co_staticontratti`.`id` = `co_contratti`.`idstato` LEFT JOIN `co_staticontratti_lang` ON (`co_staticontratti`.`id` = `co_staticontratti_lang`.`id_record` AND `co_staticontratti_lang`.`id_lang` = (SELECT `valore` FROM `zz_settings` WHERE `name` = "Lingua")) WHERE `rinnovabile` = 1 AND YEAR(`data_conclusione`) > 1970 AND `co_contratti`.`id` NOT IN (SELECT `idcontratto_prev` FROM `co_contratti` contratti) AND `co_staticontratti_lang`.`name` NOT IN (\"Concluso\", \"Rifiutato\", \"Bozza\") HAVING (`ore_rimanenti` <= `ore_preavviso_rinnovo` OR DATEDIFF(`data_conclusione`, NOW()) <= ABS(`giorni_preavviso_rinnovo`)) ORDER BY `giorni_rimanenti` ASC,`ore_rimanenti` ASC) dati' WHERE `zz_widgets`.`id` = (SELECT `id_record` FROM `zz_widgets_lang` WHERE `name` = 'Contratti in scadenza'); + +-- Aggiunta tabella zz_plugins_lang +CREATE TABLE IF NOT EXISTS `zz_plugins_lang` ( + `id` int NOT NULL, + `id_lang` int NOT NULL, + `id_record` int NOT NULL, + `name` VARCHAR(255) NOT NULL, + `title` VARCHAR(255) NOT NULL +); +ALTER TABLE `zz_plugins_lang` + ADD PRIMARY KEY (`id`); + +ALTER TABLE `zz_plugins_lang` + MODIFY `id` int NOT NULL AUTO_INCREMENT; + +INSERT INTO `zz_plugins_lang` (`id`, `id_lang`, `id_record`, `name`, `title`) SELECT NULL, (SELECT `id` FROM `zz_langs` WHERE `iso_code` = 'it'), `id`, `name`, `title` FROM `zz_plugins`; + +ALTER TABLE `zz_plugins` + DROP `name`, + DROP `title`; + +ALTER TABLE `zz_plugins_lang` ADD CONSTRAINT `zz_plugins_lang_ibfk_1` FOREIGN KEY (`id_record`) REFERENCES `zz_plugins`(`id`) ON DELETE CASCADE ON UPDATE RESTRICT; \ No newline at end of file diff --git a/update/tables.php b/update/tables.php index 40516d57b..c95443321 100755 --- a/update/tables.php +++ b/update/tables.php @@ -176,6 +176,7 @@ return [ 'zz_notes', 'zz_permissions', 'zz_plugins', + 'zz_plugins_lang', 'zz_prints', 'zz_segments', 'zz_semaphores',