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',