diff --git a/CHANGELOG.md b/CHANGELOG.md index ccabcd068..097785629 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ Tutti i maggiori cambiamenti di questo progetto saranno documentati in questo fi Il formato utilizzato è basato sulle linee guida di [Keep a Changelog](http://keepachangelog.com/), e il progetto segue il [Semantic Versioning](http://semver.org/) per definire le versioni delle release. +- [2.5.1 (2024-04-12)](#251-2024-04-12) - [2.5 (2024-03-28)](#25-2024-03-28) - [2.4.54 (2024-02-02)](#2454-2024-02-02) - [2.4.53 (2024-01-05)](#2453-2024-01-05) @@ -66,6 +67,29 @@ Il formato utilizzato è basato sulle linee guida di [Keep a Changelog](http://k - [2.2 (2016-11-10)](#22-2016-11-10) - [2.1 (2015-04-02)](#21-2015-04-02) +## 2.5.1 (2024-04-12) +### Aggiunto (Added) +- Aggiunto user-agent nei log di accesso +- Aggiunta la visualizzazione delle checklist impianti in stampa Attività + +### Modificato (Changed) +- Ottimizzato il codice per renderlo compatibile con php8.1 +- Migliorata la procedura di aggiornamento +- Rinominato il plugin **Sedi** in **Sedi aggiuntive** + +### Fixed +- Corretto il salvataggio nome in **Viste** +- Ripristinata la verifica query in **Viste** +- Corretta la gestione degli allegati +- Corretta l'azione di gruppo per il download degli allegati +- Corretta la selezione anagrafiche clienti-fornitori +- Corrette le stampe contabili +- Corretti gli upload di moduli, plugins e template +- Corretta l'aggiunta attività +- Corretta la gestione degli automezzi per tecnico +- Corretto il caricamento dei promemoria da pianificare in dashboard +- Corretta l'emissione di fatture + ## 2.5 (2024-03-28) ### Aggiunto (Added) - Aggiunte le tabelle '_lang' per la gestione delle traduzioni dei dati presenti a database diff --git a/README.md b/README.md index a5b5a8b91..b4ab0e3be 100755 --- a/README.md +++ b/README.md @@ -63,7 +63,7 @@ L'installazione del gestionale richiede la presenza di un server web con abilita | PHP | EOL | Supportato | |-----|-----|:----------:| -| 8.1 | 25/11/2024 | ❌ | +| 8.1 | 25/11/2024 | ✔️ | | 8.0 | 26/11/2023 | ✔️ | | 7.4 | 28/11/2022 | ✔️ | | 7.3 | 06/12/2021 | ✔️ | @@ -74,7 +74,10 @@ L'installazione del gestionale richiede la presenza di un server web con abilita | MYSQL | EOL | Supportato | |-----|-----|:----------:| -| 8.0 | 01/04/2026 | ✔️ | +| 8.3 | 30/04/2024 | ✔️ | +| 8.2 | 31/01/2024 | ✔️ | +| 8.1 | 25/10/2023 | ✔️ | +| 8.0 | 30/04/2026 | ✔️ | | 5.7 | 21/10/2023 | ✔️ | | 5.6 | 05/02/2021 | ❌ | diff --git a/actions.php b/actions.php index 468dac157..7ec7067f8 100755 --- a/actions.php +++ b/actions.php @@ -197,10 +197,10 @@ elseif (filter('op') == 'download-zip-allegati') { $src = basename($allegato->filepath); $dst = basename($allegato->original_name); - $file = slashes($module->upload_directory.'/'.$src); - $dest = slashes($dir.'tmp/'.$dst); + $file_content = $allegato->get_contents(); - $result = copy($file, $dest); + $dest = slashes($dir.'tmp/'.$dst); + file_put_contents($dest, $file_content); } // Creazione zip diff --git a/ajax.php b/ajax.php index a894de61c..0fc0c6a8c 100755 --- a/ajax.php +++ b/ajax.php @@ -78,7 +78,7 @@ switch (filter('op')) { case 'active_users': $posizione = get('id_module'); - if (isset($id_record)) { + if (!empty($id_record)) { $posizione .= ', '.get('id_record'); } diff --git a/composer.json b/composer.json index 3e93f74c6..d40624e14 100755 --- a/composer.json +++ b/composer.json @@ -15,7 +15,7 @@ }], "type": "project", "require": { - "php": "^7.4|^8.0", + "php": "^7.4|^8.1", "ext-curl": "*", "ext-dom": "*", "ext-fileinfo": "*", @@ -52,7 +52,7 @@ "owasp/csrf-protector-php": "^1.0", "phpmailer/phpmailer": "^6.0", "respect/validation": "^2.0", - "servo/fluidxml": "^1.21", + "servo/fluidxml": "^2.0", "slim/flash": "^0.4.0", "spipu/html2pdf": "^5.0.0", "symfony/filesystem": "^5.0", @@ -67,7 +67,8 @@ "willdurand/geocoder": "^4.2" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.10.0" + "friendsofphp/php-cs-fixer": "^3.53", + "rector/rector": "^1.0" }, "autoload": { "psr-4": { @@ -147,7 +148,7 @@ "prefer-stable": true, "platform-check": false, "platform": { - "php": "8.0.29" + "php": "8.1.27" }, "allow-plugins": { "kylekatarnls/update-helper": true diff --git a/controller.php b/controller.php index e3969aa11..2d6fd3c7e 100755 --- a/controller.php +++ b/controller.php @@ -17,6 +17,8 @@ * along with this program. If not, see . */ +use Models\Plugin; + include_once __DIR__.'/core.php'; if (!empty($id_record) && !empty($id_module)) { @@ -51,13 +53,13 @@ echo ' '; -$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_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `idmodule_to`='.prepare($id_module)." AND `position`='tab_main' AND `enabled` = 1"); +$plugins = Plugin::where('idmodule_to', $id_module)->where('position', 'tab_main')->where('enabled', 1)->get(); // Tab dei plugin foreach ($plugins as $plugin) { echo '
  • - '.$plugin['title'].' + '.$plugin->title.'
  • '; } @@ -77,9 +79,9 @@ foreach ($plugins as $plugin) { $record = $module_record; echo ' -
    '; +
    '; - $id_plugin = $plugin['id']; + $id_plugin = $plugin->id; include base_dir().'/include/manager.php'; @@ -93,7 +95,7 @@ echo '
    '; -redirectOperation($id_module, isset($id_parent) ? $id_parent : $id_record); +redirectOperation($id_module, !empty($id_parent) ? $id_parent : $id_record); // Interfaccia per la modifica dell'ordine e della visibilità delle colonne (Amministratore) if ($user->is_admin && string_contains($module['option'], '|select|')) { diff --git a/core.php b/core.php index ab5e726ea..8e5db3db8 100755 --- a/core.php +++ b/core.php @@ -248,8 +248,8 @@ if (!API\Response::isAPIRequest()) { $plugin = Plugins::getCurrent(); $structure = isset($plugin) ? $plugin : $module; - $id_module = $module ? $module['id'] : null; - $id_plugin = $plugin ? $plugin['id'] : null; + $id_module = $module ? $module->id : null; + $id_plugin = $plugin ? $plugin->id : null; $user = Auth::user(); diff --git a/editor.php b/editor.php index 1c95d4ca8..3e3b67980 100755 --- a/editor.php +++ b/editor.php @@ -438,7 +438,7 @@ if (empty($record) || !$has_access) { '; } -redirectOperation($id_module, isset($id_parent) ? $id_parent : $id_record); +redirectOperation($id_module, !empty($id_parent) ? $id_parent : $id_record); // Widget in basso echo '{( "name": "widgets", "id_module": "'.$id_module.'", "id_record": "'.$id_record.'", "position": "right", "place": "editor" )}'; diff --git a/include/common/articolo.php b/include/common/articolo.php index dcba05b57..7cca9ea6d 100755 --- a/include/common/articolo.php +++ b/include/common/articolo.php @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -$result['idarticolo'] = isset($result['idarticolo']) ? $result['idarticolo'] : null; +$result['idarticolo'] ??= null; $qta_minima = 0; $id_listino = $dbo->selectOne('an_anagrafiche', 'id_listino', ['idanagrafica' => $options['idanagrafica']])['id_listino']; diff --git a/include/common/form.php b/include/common/form.php index dbfda5970..baab77455 100755 --- a/include/common/form.php +++ b/include/common/form.php @@ -17,8 +17,6 @@ * along with this program. If not, see . */ -$result['id'] = isset($result['id']) ? $result['id'] : null; - // Form di inserimento riga documento echo '
    diff --git a/include/init/configuration.php b/include/init/configuration.php index 2c542c5c7..aa26e6e73 100755 --- a/include/init/configuration.php +++ b/include/init/configuration.php @@ -31,7 +31,7 @@ $pageTitle = tr('Configurazione'); include_once App::filepath('include|custom|', 'top.php'); // Controllo sull'esistenza di nuovi parametri di configurazione -if (post('db_host') !== null) { +if (!empty(post('db_host'))) { $db_host = $_POST['db_host']; // Fix per evitare la conversione in numero $db_name = post('db_name'); $db_username = post('db_username'); @@ -51,7 +51,7 @@ if (post('db_host') !== null) { } // Test della configurazione - if (post('test') !== null) { + if (!empty(post('test'))) { ob_end_clean(); if ($dbo->isConnected()) { diff --git a/include/init/init.php b/include/init/init.php index d235319fa..07debefc9 100755 --- a/include/init/init.php +++ b/include/init/init.php @@ -99,7 +99,7 @@ if (post('action') == 'init') { 'password' => Auth::hashPassword(post('admin_password')), 'email' => post('admin_email'), 'idgruppo' => $admin['id'], - 'idanagrafica' => isset($id_record) ? $id_record : 0, + 'idanagrafica' => $id_record ?? 0, 'enabled' => 1, ]); diff --git a/include/init/requirements.php b/include/init/requirements.php index 30c0226e9..743589d45 100755 --- a/include/init/requirements.php +++ b/include/init/requirements.php @@ -84,7 +84,7 @@ foreach ($modules as $name => $values) { $status = isset($available_modules) ? in_array($name, $available_modules) : $_SERVER[$values['server']] == 'On'; if ($name == 'mod_mime' && $php_interface != 'apache') { - $headers = get_headers((!empty($config['redirectHTTPS']) && !isHTTPS(true)) ? 'https://' : 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'], 1); + $headers = get_headers((!empty($config['redirectHTTPS']) && !isHTTPS(true)) ? 'https://' : 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'], true); if (isset($headers['Content-Type'])) { $status = 1; } else { @@ -106,7 +106,7 @@ $settings = [ 'type' => 'version', 'description' => '7.3.x - 8.0.x, consigliato almeno 7.4.x', 'minimum' => '7.3.0', - 'maximum' => '8.0.99', + 'maximum' => '8.1.99', ], 'zip' => [ @@ -251,7 +251,7 @@ if ($database->isInstalled()) { 'warning' => $database->isMySQL() ? false : true, 'description' => $database->isMySQL() ? '5.7.x - 8.0.x' : '10.x', 'minimum' => $database->isMySQL() ? '5.7.0' : '10.1.0', - 'maximum' => $database->isMySQL() ? '8.0.99' : '10.6.99', + 'maximum' => $database->isMySQL() ? '8.3.99' : '10.6.99', ], 'sort_buffer_size' => [ @@ -431,11 +431,11 @@ foreach ($config_to_check as $name => $values) { if ($type == 'value') { $description = tr('Valore consigliato: _SUGGESTED_ (Valore attuale: _ACTUAL_)', [ '_SUGGESTED_' => $values['suggested_value'], - '_ACTUAL_' => (!empty($values['section']) ? ${$values['section']}[$name] : $$name), + '_ACTUAL_' => (!empty($values['section']) ? ${$values['section']}[$name] : ${$name}), ]); } - $status = ($values['operator'](!empty($values['section']) ? ${$values['section']}[$name] : $$name, $values['value_to_check']) ? 1 : 0); + $status = ($values['operator'](!empty($values['section']) ? ${$values['section']}[$name] : ${$name}, $values['value_to_check']) ? 1 : 0); $config[] = [ 'name' => $name, diff --git a/include/manager.php b/include/manager.php index cc4591193..d24db4e43 100755 --- a/include/manager.php +++ b/include/manager.php @@ -99,7 +99,7 @@ if (!empty($type) && $type != 'menu' && $type != 'custom') { $_SESSION['module_'.$id_module]['selected'] = []; $selezione = array_keys($_SESSION['module_'.$id_module]['selected']); - $table_id = 'main_'.rand(0, 99); + $table_id = 'main_'.random_int(0, 99); echo ' diff --git a/include/modifica_allegato.php b/include/modifica_allegato.php index b8d07948d..657a09b0f 100644 --- a/include/modifica_allegato.php +++ b/include/modifica_allegato.php @@ -33,7 +33,7 @@ if (sizeof($id_allegati) == 1) { $allegato = Upload::find($id_allegati[0]); echo '
    - {[ "type": "text", "label": "'.tr('Nome').'", "name": "nome_allegato", "value": "'.$allegato->getTranslation('name').'" ]} + {[ "type": "text", "label": "'.tr('Nome').'", "name": "nome_allegato", "value": "'.$allegato->name.'" ]}
    {[ "type": "text", "label": "'.tr('Categoria').'", "name": "categoria_allegato", "value": "'.$allegato->category.'", "disabled": "'.intval(in_array($allegato->category, ['Fattura Elettronica'])).'" ]} diff --git a/include/top.php b/include/top.php index e2b4e99ab..3dc0e7f35 100755 --- a/include/top.php +++ b/include/top.php @@ -47,7 +47,7 @@ echo ' if (file_exists(base_dir().'/manifest.json')) { echo ' - '; + '; } // CSS diff --git a/lib/functions.php b/lib/functions.php index 427ccba0d..a3e65a6e7 100755 --- a/lib/functions.php +++ b/lib/functions.php @@ -236,7 +236,7 @@ function translateTemplate() ]; $template = replace($template, $replaces); - $template = HTMLBuilder::replace($template); + $template = $template ? HTMLBuilder::replace($template) : $template; $template = replace($template, $replaces); // Informazioni estese sulle azioni dell'utente @@ -297,7 +297,7 @@ function slashes($string) */ function isAjaxRequest() { - return Whoops\Util\Misc::isAjaxRequest() && filter('ajax') !== null; + return Whoops\Util\Misc::isAjaxRequest() && filter('ajax') !== null && filter('ajax') !== ''; } /** @@ -339,7 +339,7 @@ function redirectOperation($id_module, $id_record) */ function prepareToField($string) { - return str_replace('"', '"', $string); + return $string ? str_replace('"', '"', $string) : $string; } /** @@ -442,7 +442,7 @@ function session_get($name, $default = null) $session = &$session[$piece]; } - return isset($session) ? $session : $default; + return $session ?? $default; } /** diff --git a/lib/util.php b/lib/util.php index db0a503f2..49cb81b3f 100755 --- a/lib/util.php +++ b/lib/util.php @@ -38,9 +38,7 @@ if (!function_exists('array_column')) { */ function array_column($array, $key) { - return array_map(function ($v) use ($key) { - return is_object($v) ? $v->$key : $v[$key]; - }, $array); + return array_map(fn ($v) => is_object($v) ? $v->$key : $v[$key], $array); } } @@ -55,9 +53,7 @@ if (!function_exists('array_clean')) { function array_clean($array) { if (!empty($array)) { - return array_unique(array_values(array_filter($array, function ($value) { - return !empty($value); - }))); + return array_unique(array_values(array_filter($array, fn ($value) => !empty($value)))); } } } @@ -448,8 +444,8 @@ if (!function_exists('color_inverse')) { $R2 = 255; $G2 = 255; $B2 = 255; - $L1 = 0.2126 * pow($R1 / 255, 2.2) + 0.7152 * pow($G1 / 255, 2.2) + 0.0722 * pow($B1 / 255, 2.2); - $L2 = 0.2126 * pow($R2 / 255, 2.2) + 0.7152 * pow($G2 / 255, 2.2) + 0.0722 * pow($B2 / 255, 2.2); + $L1 = 0.2126 * ($R1 / 255) ** 2.2 + 0.7152 * ($G1 / 255) ** 2.2 + 0.0722 * ($B1 / 255) ** 2.2; + $L2 = 0.2126 * ($R2 / 255) ** 2.2 + 0.7152 * ($G2 / 255) ** 2.2 + 0.0722 * ($B2 / 255) ** 2.2; if ($L1 > $L2) { $lum = ($L1 + 0.05) / ($L2 + 0.05); } else { @@ -602,6 +598,6 @@ if (!function_exists('adjustBrightness')) { $color = str_pad(dechex($color + $adjustAmount), 2, '0', STR_PAD_LEFT); } - return '#'.implode($hexCode); + return '#'.implode('', $hexCode); } } diff --git a/modules/adattatori_archiviazione/actions.php b/modules/adattatori_archiviazione/actions.php index b171c6e50..ce9622420 100644 --- a/modules/adattatori_archiviazione/actions.php +++ b/modules/adattatori_archiviazione/actions.php @@ -25,7 +25,7 @@ switch (filter('op')) { case 'add': $adapter = new FileAdapter(); - $adapter->setTranslation('name', post('name')); + $adapter->name = post('name'); $adapter->class = '\\Modules\\FileAdapters\\Adapters\\'.post('class'); $adapter->save(); @@ -37,10 +37,14 @@ switch (filter('op')) { break; case 'update': - $adapter->setTranslation('name', post('name')); + $adapter->name = post('name'); $adapter->class = '\\Modules\\FileAdapters\\Adapters\\'.post('class'); $adapter->options = post('options'); - $adapter->is_default = post('is_default'); + + if (post('is_default') == 1) { + $dbo->query('UPDATE `zz_storage_adapters` SET `is_default` = 0'); + $adapter->is_default = post('is_default'); + } $adapter->save(); diff --git a/modules/adattatori_archiviazione/edit.php b/modules/adattatori_archiviazione/edit.php index c2985195c..244f5f638 100644 --- a/modules/adattatori_archiviazione/edit.php +++ b/modules/adattatori_archiviazione/edit.php @@ -34,7 +34,7 @@ include_once __DIR__.'/../../core.php';
    - {[ "type": "checkbox", "label": "", "name": "is_default", "value": "$is_default$" ]} + {[ "type": "checkbox", "label": "", "name": "is_default", "value": "$is_default$", "extra": "" ]}
    diff --git a/modules/adattatori_archiviazione/init.php b/modules/adattatori_archiviazione/init.php index bb5b026f6..335ce5132 100644 --- a/modules/adattatori_archiviazione/init.php +++ b/modules/adattatori_archiviazione/init.php @@ -21,7 +21,7 @@ include_once __DIR__.'/../../core.php'; use Modules\FileAdapters\FileAdapter; -if (isset($id_record)) { +if (!empty($id_record)) { $adapter = FileAdapter::find($id_record); $record = $dbo->fetchOne('SELECT * FROM `zz_storage_adapters` WHERE `id`='.prepare($id_record)); diff --git a/modules/aggiornamenti/database.php b/modules/aggiornamenti/database.php index 5a2b04fe7..d03390660 100644 --- a/modules/aggiornamenti/database.php +++ b/modules/aggiornamenti/database.php @@ -260,7 +260,7 @@ if (!empty($results) || !empty($results_settings) || !empty($results_settings_ad '.$key.' '; @@ -37,7 +37,7 @@ if (!empty($rs_art)) { // Data di fine echo ' '; // Pulsanti per aggiornamento date tecnici diff --git a/modules/backups/actions.php b/modules/backups/actions.php index 890e652b6..fdc68cb54 100755 --- a/modules/backups/actions.php +++ b/modules/backups/actions.php @@ -98,10 +98,11 @@ if (filter('op') == 'restore') { return; } - if (filter('number') == null) { + $number = filter('number'); + if ($number === null) { $path = $_FILES['blob']['tmp_name']; } else { - $number = filter('number'); + $number != '' ? $number : 0; $number = intval($number); $backups = Backup::getList(); diff --git a/modules/banche/init.php b/modules/banche/init.php index 01cc200ab..48c961098 100755 --- a/modules/banche/init.php +++ b/modules/banche/init.php @@ -21,7 +21,7 @@ use Modules\Banche\Banca; include_once __DIR__.'/../../core.php'; -if (isset($id_record)) { +if (!empty($id_record)) { $banca = Banca::find($id_record); if (!empty($banca)) { diff --git a/modules/banche/src/Banca.php b/modules/banche/src/Banca.php index b092686ab..3f851b158 100644 --- a/modules/banche/src/Banca.php +++ b/modules/banche/src/Banca.php @@ -82,7 +82,7 @@ class Banca extends Model protected function fixPredefined() { - $predefined = isset($this->predefined) ? $this->predefined : false; + $predefined = $this->predefined ?? false; // Selezione automatica per primo record $count = self::where('id_anagrafica', $this->id_anagrafica) diff --git a/modules/beni/actions.php b/modules/beni/actions.php index 64b02f2cd..a3cf593ff 100755 --- a/modules/beni/actions.php +++ b/modules/beni/actions.php @@ -23,7 +23,7 @@ switch (post('op')) { case 'update': $descrizione = post('descrizione'); - if ($dbo->fetchNum('SELECT * FROM `dt_aspettobeni` LEFT JOIN `dt_aspettobeni_lang` ON (`dt_aspettobeni`.`id`=`dt_aspettobeni_lang`.`id_record` AND `dt_aspettobeni_lang`.`id_lang`='.prepare(Models\Locale::getDefault()->id).') WHERE `name`='.prepare($descrizione).' AND `dt_aspettobeni`.`id`!='.prepare($id_record)) == 0) { + if (empty($dbo->fetchArray('SELECT * FROM `dt_aspettobeni` LEFT JOIN `dt_aspettobeni_lang` ON (`dt_aspettobeni`.`id`=`dt_aspettobeni_lang`.`id_record` AND `dt_aspettobeni_lang`.`id_lang`='.prepare(Models\Locale::getDefault()->id).') WHERE `name`='.prepare($descrizione).' AND `dt_aspettobeni`.`id`!='.prepare($id_record)))) { $dbo->query('UPDATE `dt_aspettobeni_lang` SET `name`='.prepare($descrizione).' WHERE `id_record`='.prepare($id_record)).' AND `id_lang`='.prepare(Models\Locale::getDefault()->id); flash()->info(tr('Salvataggio completato.')); } else { @@ -34,7 +34,7 @@ switch (post('op')) { case 'add': $descrizione = post('descrizione'); - if ($dbo->fetchNum('SELECT * FROM `dt_aspettobeni_lang` WHERE `name`='.prepare($descrizione)) == 0) { + if (empty($dbo->fetchArray('SELECT * FROM `dt_aspettobeni` LEFT JOIN `dt_aspettobeni_lang` ON (`dt_aspettobeni`.`id`=`dt_aspettobeni_lang`.`id_record` AND `dt_aspettobeni_lang`.`id_lang`='.prepare(Models\Locale::getDefault()->id).') WHERE `name`='.prepare($descrizione)))) { $dbo->query('INSERT INTO `dt_aspettobeni` (`created_at`) VALUES (NOW())'); $id_record = $dbo->lastInsertedID(); @@ -54,7 +54,7 @@ switch (post('op')) { case 'delete': $documenti = $dbo->fetchNum('SELECT `id` FROM `dt_ddt` WHERE `idaspettobeni`='.prepare($id_record).' UNION SELECT `id` FROM `co_documenti` WHERE `idaspettobeni`='.prepare($id_record)); - if (isset($id_record) && empty($documenti)) { + if ((!empty($id_record)) && empty($documenti)) { $dbo->query('DELETE FROM `dt_aspettobeni` WHERE `id`='.prepare($id_record)); flash()->info(tr('Aspetto beni eliminato con successo.')); } else { diff --git a/modules/beni/init.php b/modules/beni/init.php index 4b455d269..034ad0f35 100755 --- a/modules/beni/init.php +++ b/modules/beni/init.php @@ -19,6 +19,6 @@ include_once __DIR__.'/../../core.php'; -if (isset($id_record)) { +if (!empty($id_record)) { $record = $dbo->fetchOne('SELECT * FROM `dt_aspettobeni` LEFT JOIN `dt_aspettobeni_lang` ON (`dt_aspettobeni`.`id`=`dt_aspettobeni_lang`.`id_record` AND `dt_aspettobeni_lang`.`id_lang`='.prepare(Models\Locale::getDefault()->id).') WHERE `dt_aspettobeni`.`id`='.prepare($id_record)); } diff --git a/modules/categorie_articoli/add.php b/modules/categorie_articoli/add.php index 0bc685e29..4b7952351 100755 --- a/modules/categorie_articoli/add.php +++ b/modules/categorie_articoli/add.php @@ -21,7 +21,7 @@ include_once __DIR__.'/../../core.php'; $id_original = filter('id_original'); -if (isset($id_record)) { +if (!empty($id_record)) { include __DIR__.'/init.php'; } @@ -29,7 +29,7 @@ if (isset($id_record)) { if (isset($id_original)) { echo base_path().'/controller.php?id_module='.$id_module; - if (isset($id_record)) { + if (!empty($id_record)) { echo '&id_record='.$id_record; } } @@ -58,7 +58,7 @@ if (isset($id_original)) {
    fetchOne('SELECT * FROM `mg_categorie` LEFT JOIN `mg_categorie_lang` ON (`mg_categorie`.`id`=`mg_categorie_lang`.`id_record` AND `mg_categorie_lang`.`id_lang`='.prepare(Models\Locale::getDefault()->id).') WHERE `mg_categorie`.`id`='.prepare($id_record)); $categoria = Categoria::find($id_record); diff --git a/modules/categorie_documenti/edit.php b/modules/categorie_documenti/edit.php index 315493df2..41dd858be 100755 --- a/modules/categorie_documenti/edit.php +++ b/modules/categorie_documenti/edit.php @@ -37,7 +37,7 @@ if ($record['doc_associati'] > 0) {
    - {[ "type": "select", "label": "", "name": "permessi[]", "value": "$permessi$", "values": "query=SELECT `zz_groups`.`id`, `zz_groups_lang`.`name` AS text FROM `zz_groups`", "multiple": 1 ]} + {[ "type": "select", "label": "", "name": "permessi[]", "value": "$permessi$", "values": "query=SELECT `zz_groups`.`id`, `zz_groups_lang`.`name` AS text FROM `zz_groups` LEFT JOIN `zz_groups_lang` ON (`zz_groups`.`id` = `zz_groups_lang`.`id_record` AND `zz_groups_lang`.`id_lang` = id); ?>)", "multiple": 1 ]}
    diff --git a/modules/categorie_documenti/init.php b/modules/categorie_documenti/init.php index f74b68d8b..7d6f30c6f 100755 --- a/modules/categorie_documenti/init.php +++ b/modules/categorie_documenti/init.php @@ -21,7 +21,7 @@ include_once __DIR__.'/../../core.php'; use Modules\CategorieDocumentali\Categoria; -if (isset($id_record)) { +if (!empty($id_record)) { $categoria = Categoria::find($id_record); $record = $dbo->fetchOne('SELECT *, diff --git a/modules/categorie_impianti/actions.php b/modules/categorie_impianti/actions.php index ffed09eb6..1b98d6d9c 100755 --- a/modules/categorie_impianti/actions.php +++ b/modules/categorie_impianti/actions.php @@ -99,7 +99,7 @@ switch (filter('op')) { $id = $id_record; } - if ($dbo->fetchNum('SELECT * FROM `my_impianti` WHERE (`id_categoria`='.prepare($id).' OR `id_sottocategoria`='.prepare($id).' OR `id_sottocategoria` IN (SELECT `id` FROM `my_impianti_categorie` WHERE `parent`='.prepare($id).')) AND `deleted_at` IS NULL') == 0) { + if (empty($dbo->fetchArray('SELECT * FROM `my_impianti` WHERE (`id_categoria`='.prepare($id).' OR `id_sottocategoria`='.prepare($id).' OR `id_sottocategoria` IN (SELECT `id` FROM `my_impianti_categorie` WHERE `parent`='.prepare($id).'))'))) { $dbo->query('DELETE FROM `my_impianti_categorie` WHERE `id`='.prepare($id)); flash()->info(tr('_TYPE_ eliminata con successo!', [ diff --git a/modules/categorie_impianti/add.php b/modules/categorie_impianti/add.php index 28e3165a1..95397f906 100755 --- a/modules/categorie_impianti/add.php +++ b/modules/categorie_impianti/add.php @@ -21,7 +21,7 @@ include_once __DIR__.'/../../core.php'; $id_original = filter('id_original'); -if (isset($id_record)) { +if (!empty($id_record)) { include __DIR__.'/init.php'; } @@ -29,7 +29,7 @@ if (isset($id_record)) { if (isset($id_original)) { echo base_path().'/controller.php?id_module='.$id_module; - if (isset($id_record)) { + if (!empty($id_record)) { echo '&id_record='.$id_record; } } @@ -58,7 +58,7 @@ if (isset($id_original)) {
    fetchOne('SELECT * FROM `my_impianti_categorie` LEFT JOIN `my_impianti_categorie_lang` ON (`my_impianti_categorie`.`id`=`my_impianti_categorie_lang`.`id_record` AND `my_impianti_categorie_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `my_impianti_categorie`.`id`='.prepare($id_record)); $categoria = Categoria::find($id_record); diff --git a/modules/causali/actions.php b/modules/causali/actions.php index 10be28ba7..cc094fbac 100755 --- a/modules/causali/actions.php +++ b/modules/causali/actions.php @@ -25,7 +25,7 @@ switch (filter('op')) { $predefined = post('predefined'); if (isset($descrizione)) { - if ($dbo->fetchNum('SELECT * FROM `dt_causalet` LEFT JOIN `dt_causalet_lang` ON (`dt_causalet`.`id` = `dt_causalet_lang`.`id_record` AND `dt_causalet_lang`.`id_lang` ='.prepare(Models\Locale::getDefault()->id).') WHERE `deleted_at` IS NULL AND `name`='.prepare($descrizione).' AND `dt_causalet`.`id`!='.prepare($id_record)) == 0) { + if (empty($dbo->fetchArray('SELECT * FROM `dt_causalet` LEFT JOIN `dt_causalet_lang` ON (`dt_causalet`.`id` = `dt_causalet_lang`.`id_record` AND `dt_causalet_lang`.`id_lang` ='.prepare(Models\Locale::getDefault()->id).') WHERE `deleted_at` IS NULL AND `name`='.prepare($descrizione).' AND `dt_causalet`.`id`!='.prepare($id_record)))) { if (!empty($predefined)) { $dbo->query('UPDATE dt_causalet SET predefined = 0'); } @@ -55,7 +55,7 @@ switch (filter('op')) { $descrizione = filter('descrizione'); if (isset($descrizione)) { - if ($dbo->fetchNum('SELECT * FROM `dt_causalet` LEFT JOIN `dt_causalet_lang` ON (`dt_causalet`.`id` = `dt_causalet_lang`.`id_record` AND `dt_causalet_lang`.`id_lang` ='.prepare(Models\Locale::getDefault()->id).') WHERE `deleted_at` IS NULL AND `name`='.prepare($descrizione)) == 0) { + if (empty($dbo->fetchArray('SELECT * FROM `dt_causalet` LEFT JOIN `dt_causalet_lang` ON (`dt_causalet`.`id` = `dt_causalet_lang`.`id_record` AND `dt_causalet_lang`.`id_lang` ='.prepare(Models\Locale::getDefault()->id).') WHERE `deleted_at` IS NULL AND `name`='.prepare($descrizione)))) { $dbo->insert('dt_causalet', [ 'is_importabile' => 1, ]); @@ -83,7 +83,7 @@ switch (filter('op')) { case 'delete': $documenti = $dbo->fetchNum('SELECT `id` FROM `dt_ddt` WHERE `idcausalet`='.prepare($id_record).' UNION SELECT `id` FROM `co_documenti` WHERE `idcausalet`='.prepare($id_record)); - if (isset($id_record) && empty($documenti)) { + if ((!empty($id_record)) && empty($documenti)) { $dbo->query('DELETE FROM `dt_causalet` WHERE `id`='.prepare($id_record)); } else { $dbo->update('dt_causalet', [ diff --git a/modules/causali/init.php b/modules/causali/init.php index 0ca784b37..50978af0b 100755 --- a/modules/causali/init.php +++ b/modules/causali/init.php @@ -19,6 +19,6 @@ include_once __DIR__.'/../../core.php'; -if (isset($id_record)) { +if (!empty($id_record)) { $record = $dbo->fetchOne('SELECT * FROM `dt_causalet` LEFT JOIN `dt_causalet_lang` ON (`dt_causalet`.`id` = `dt_causalet_lang`.`id_record` AND `dt_causalet_lang`.`id_lang` ='.prepare(Models\Locale::getDefault()->id).') WHERE `dt_causalet`.`id`='.prepare($id_record)); } diff --git a/modules/causali_movimenti/actions.php b/modules/causali_movimenti/actions.php index 525312d30..942ff1afb 100755 --- a/modules/causali_movimenti/actions.php +++ b/modules/causali_movimenti/actions.php @@ -21,7 +21,7 @@ include_once __DIR__.'/../../core.php'; switch (filter('op')) { case 'update': - if (isset($id_record)) { + if (!empty($id_record)) { $database->update('mg_causali_movimenti', [ 'tipo_movimento' => post('tipo_movimento'), ], ['id' => $id_record]); @@ -49,7 +49,7 @@ switch (filter('op')) { break; case 'delete': - if (isset($id_record)) { + if (!empty($id_record)) { $dbo->query('DELETE FROM `mg_causali_movimenti` WHERE `id`='.prepare($id_record)); flash()->info(tr('Tipologia di _TYPE_ eliminata con successo!', [ diff --git a/modules/causali_movimenti/init.php b/modules/causali_movimenti/init.php index d34ce0ed6..c0fd29588 100755 --- a/modules/causali_movimenti/init.php +++ b/modules/causali_movimenti/init.php @@ -19,6 +19,6 @@ include_once __DIR__.'/../../core.php'; -if (isset($id_record)) { +if (!empty($id_record)) { $record = $dbo->fetchOne('SELECT * FROM `mg_causali_movimenti` LEFT JOIN `mg_causali_movimenti_lang` ON (`mg_causali_movimenti`.`id` = `mg_causali_movimenti_lang`.`id_record` AND `mg_causali_movimenti_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `mg_causali_movimenti`.`id`='.prepare($id_record)); } diff --git a/modules/checklists/components/edit-check.php b/modules/checklists/components/edit-check.php index db172eeb9..5e854925e 100644 --- a/modules/checklists/components/edit-check.php +++ b/modules/checklists/components/edit-check.php @@ -64,6 +64,7 @@ if ($main_check) { $.post('/modules/checklists/ajax.php', { op: "edit_check", + id_module: globals.id_module, id_record: "", content: input('content_edit').get(), is_titolo: input('is_titolo').get(), diff --git a/modules/checklists/edit.php b/modules/checklists/edit.php index 11f7bf8a7..592dfe2d5 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 `zz_plugins`.`id`, `zz_plugins_lang`.`title` AS descrizione, `zz_modules_lang`.`name` AS optgroup FROM zz_plugins INNER JOIN `zz_modules` ON `zz_plugins`.`id_module_to` = `zz_modules`.`id` LEFT JOIN `zz_modules_lang` ON (`zz_modules`.`id` = `zz_modules_lang`.`id_record` AND `zz_modules_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') LEFT JOIN `zz_plugins_lang` ON (`zz_plugins`.`id` = `zz_plugins_lang`.`id_record` AND `zz_plugins_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') 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`, `zz_plugins_lang`.`title` AS descrizione, `zz_modules_lang`.`name` AS optgroup FROM zz_plugins INNER JOIN `zz_modules` ON `zz_plugins`.`idmodule_to` = `zz_modules`.`id` LEFT JOIN `zz_modules_lang` ON (`zz_modules`.`id` = `zz_modules_lang`.`id_record` AND `zz_modules_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') LEFT JOIN `zz_plugins_lang` ON (`zz_plugins`.`id` = `zz_plugins_lang`.`id_record` AND `zz_plugins_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `zz_plugins`.`enabled` = 1", "value": "'.$record->id_plugin.'", "disabled": "'.!empty($record->id_module).'" ]}
    @@ -211,6 +211,8 @@ function delete_check(id){ op: "delete_check", id: id, main_check: 1, + id_module: globals.id_module, + id_record: id, }, function(){ location.reload(); }); diff --git a/modules/checklists/init.php b/modules/checklists/init.php index 7df86ff42..5be68145d 100755 --- a/modules/checklists/init.php +++ b/modules/checklists/init.php @@ -24,6 +24,6 @@ use Modules\Checklists\Checklist; $checklist_module = Module::find((new Module())->getByField('name', 'Checklists', Models\Locale::getPredefined()->id)); -if (isset($id_record)) { +if (!empty($id_record)) { $record = Checklist::find($id_record); } diff --git a/modules/combinazioni_articoli/actions.php b/modules/combinazioni_articoli/actions.php index 3627f567b..96766889b 100644 --- a/modules/combinazioni_articoli/actions.php +++ b/modules/combinazioni_articoli/actions.php @@ -21,8 +21,8 @@ switch (filter('op')) { } $combinazione->setTranslation('name', $nome); $combinazione->codice = post('codice'); - $combinazione->id_categoria = post('id_categoria'); - $combinazione->id_sottocategoria = post('id_sottocategoria'); + $combinazione->id_categoria = post('id_categoria')?: null; + $combinazione->id_sottocategoria = post('id_sottocategoria')?: null; $combinazione->save(); $id_record = $combinazione->id; diff --git a/modules/combinazioni_articoli/src/Combinazione.php b/modules/combinazioni_articoli/src/Combinazione.php index 158314992..bce36ddff 100644 --- a/modules/combinazioni_articoli/src/Combinazione.php +++ b/modules/combinazioni_articoli/src/Combinazione.php @@ -73,9 +73,7 @@ class Combinazione extends Model $result = parent::save($options); // Sincronizzazione dei campi condivisi con la Combinazione - $sincro = collect($this->toArray())->filter(function ($value, $key) { - return in_array($key, self::$campi_combinazione); - }); + $sincro = collect($this->toArray())->filter(fn ($value, $key) => in_array($key, self::$campi_combinazione)); $this->sincronizzaCampi($sincro->toArray()); return $result; @@ -178,9 +176,7 @@ class Combinazione extends Model return; } - $sincro = collect($articolo->toArray())->filter(function ($value, $key) { - return in_array($key, self::$campi_varianti); - }); + $sincro = collect($articolo->toArray())->filter(fn ($value, $key) => in_array($key, self::$campi_varianti)); $combinazione->sincronizzaCampi($sincro->toArray()); } @@ -219,9 +215,7 @@ class Combinazione extends Model ->update($values); // Filtro campi combinazioni - $combo = collect($values)->filter(function ($value, $key) { - return in_array($key, self::$campi_combinazione); - }); + $combo = collect($values)->filter(fn ($value, $key) => in_array($key, self::$campi_combinazione)); // Aggiornamento dati combinazioni database()->table('mg_combinazioni') diff --git a/modules/contratti/actions.php b/modules/contratti/actions.php index 37dc424bb..d2ee57542 100644 --- a/modules/contratti/actions.php +++ b/modules/contratti/actions.php @@ -110,8 +110,11 @@ switch (post('op')) { $contratto->save(); $dbo->query('DELETE FROM my_impianti_contratti WHERE idcontratto='.prepare($id_record)); - foreach ((array) post('matricolaimpianto') as $matricolaimpianto) { - $dbo->query('INSERT INTO my_impianti_contratti(idcontratto,idimpianto) VALUES('.prepare($id_record).', '.prepare($matricolaimpianto).')'); + $matricola = post('matricolaimpianto'); + if ($matricola) { + foreach ([$matricola] as $matricolaimpianto) { + $dbo->query('INSERT INTO my_impianti_contratti(idcontratto,idimpianto) VALUES('.prepare($id_record).', '.prepare($matricolaimpianto).')'); + } } // Salvataggio costi attività unitari del contratto @@ -317,7 +320,7 @@ switch (post('op')) { // Scollegamento intervento da contratto case 'unlink': - if (get('idcontratto') !== null && get('idintervento') !== null) { + if (!empty(get('idcontratto')) && !empty(get('idintervento'))) { $idcontratto = get('idcontratto'); $idintervento = get('idintervento'); diff --git a/modules/contratti/add.php b/modules/contratti/add.php index 2c7e7ad9b..e462dee37 100755 --- a/modules/contratti/add.php +++ b/modules/contratti/add.php @@ -33,7 +33,7 @@ echo ' - +
    diff --git a/modules/contratti/bulk.php b/modules/contratti/bulk.php index 40a38b668..3869b58ba 100755 --- a/modules/contratti/bulk.php +++ b/modules/contratti/bulk.php @@ -34,7 +34,7 @@ use Plugins\PianificazioneInterventi\Promemoria; $id_fatture = (new Module())->getByField('name', 'Fatture di vendita', Models\Locale::getPredefined()->id); if (!isset($_SESSION['module_'.$id_fatture]['id_segment'])) { $segments = Modules::getSegments($id_fatture); - $_SESSION['module_'.$id_fatture]['id_segment'] = isset($segments[0]['id']) ? $segments[0]['id'] : null; + $_SESSION['module_'.$id_fatture]['id_segment'] = $segments[0]['id'] ?? null; } $id_segment = $_SESSION['module_'.$id_fatture]['id_segment']; $idconto = setting('Conto predefinito fatture di vendita'); @@ -77,13 +77,9 @@ switch (post('op')) { // Ricerca fattura per anagrafica tra le registrate $id_sede = $raggruppamento == 'sede' ? $documento_import->idsede : 0; if ($raggruppamento == 'sede') { - $fattura = $documenti->first(function ($item, $key) use ($id_anagrafica, $id_sede) { - return $item->anagrafica->id == $id_anagrafica && $item->idsede_destinazione == $id_sede; - }); + $fattura = $documenti->first(fn ($item, $key) => $item->anagrafica->id == $id_anagrafica && $item->idsede_destinazione == $id_sede); } else { - $fattura = $documenti->first(function ($item, $key) use ($id_anagrafica) { - return $item->anagrafica->id == $id_anagrafica; - }); + $fattura = $documenti->first(fn ($item, $key) => $item->anagrafica->id == $id_anagrafica); } // Ricerca fattura per anagrafica se l'impostazione di accodamento è selezionata @@ -123,7 +119,7 @@ switch (post('op')) { // Fix per idconto righe fattura $articolo = ArticoloOriginale::find($copia->idarticolo); - $copia->id_conto = ($articolo->idconto_vendita ? $articolo->idconto_vendita : $idconto); + $copia->id_conto = ($articolo->idconto_vendita ?: $idconto); // Aggiornamento seriali dalla riga dell'ordine if ($copia->isArticolo()) { @@ -271,7 +267,7 @@ $operations['crea_fattura'] = [ 'title' => tr('Fatturare i _TYPE_ selezionati?', ['_TYPE_' => strtolower($module->getTranslation('name'))]), 'msg' => '{[ "type": "checkbox", "label": "'.tr('Aggiungere alle fatture di vendita non ancora emesse?').'", "placeholder": "'.tr('Aggiungere alle fatture esistenti non ancora emesse?').'", "name": "accodare" ]}
    {[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "ajax-source": "segmenti", "select-options": '.json_encode(['id_module' => $id_fatture, 'is_sezionale' => 1]).', "value": "'.$id_segment.'", "select-options-escape": true ]}
    - {[ "type": "select", "label": "'.tr('Tipo documento').'", "name": "idtipodocumento", "required": 1, "values": "query=SELECT `co_tipidocumento`.`id`, CONCAT(`codice_tipo_documento_fe`, \' - \', `name`) AS descrizione FROM `co_tipidocumento` LEFT JOIN ` co_tipidocumento_lang` ON (`co_tipidocumento`.`id` = `co_tipidocumento_lang`.`id_record` AND `co_tipidocumento_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `enabled` = 1 AND `dir` =\'entrata\' ORDER BY `codice_tipo_documento_fe`", "value": "'.$idtipodocumento.'" ]}
    + {[ "type": "select", "label": "'.tr('Tipo documento').'", "name": "idtipodocumento", "required": 1, "values": "query=SELECT `co_tipidocumento`.`id`, CONCAT(`codice_tipo_documento_fe`, \' - \', `name`) AS descrizione FROM `co_tipidocumento` LEFT JOIN `co_tipidocumento_lang` ON (`co_tipidocumento`.`id` = `co_tipidocumento_lang`.`id_record` AND `co_tipidocumento_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `enabled` = 1 AND `dir` =\'entrata\' ORDER BY `codice_tipo_documento_fe`", "value": "'.$idtipodocumento.'" ]}
    {[ "type": "select", "label": "'.tr('Raggruppa per').'", "name": "raggruppamento", "required": 1, "values": "list=\"cliente\":\"Cliente\",\"sede\":\"Sede\"" ]}', 'button' => tr('Procedi'), 'class' => 'btn btn-lg btn-warning', @@ -294,7 +290,7 @@ $operations['cambia_stato'] = [ 'text' => ' '.tr('Cambia stato'), 'data' => [ 'title' => tr('Vuoi davvero aggiornare lo stato di questi contratti?'), - 'msg' => '
    {[ "type": "select", "label": "'.tr('Stato').'", "name": "id_stato", "required": 1, "values": "query=SELECT `co_staticontratti`.`id`, `name` AS descrizione, `colore` as _bgcolor_ FROM `co_staticontratti` LEFT JOIN `co_staticontratti_lang ON (`co_staticontratti`.`id` = `co_staticontratti_lang`.`id_record` AND `co_staticontratti_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') ORDER BY `name`" ]}', + 'msg' => '
    {[ "type": "select", "label": "'.tr('Stato').'", "name": "id_stato", "required": 1, "values": "query=SELECT `co_staticontratti`.`id`, `name` AS descrizione, `colore` as _bgcolor_ FROM `co_staticontratti` LEFT JOIN `co_staticontratti_lang` ON (`co_staticontratti`.`id` = `co_staticontratti_lang`.`id_record` AND `co_staticontratti_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') ORDER BY `name`" ]}', 'button' => tr('Procedi'), 'class' => 'btn btn-lg btn-warning', 'blank' => false, diff --git a/modules/contratti/edit.php b/modules/contratti/edit.php index 783dffd9f..6b689dbe1 100755 --- a/modules/contratti/edit.php +++ b/modules/contratti/edit.php @@ -21,8 +21,10 @@ include_once __DIR__.'/../../core.php'; use Models\Module; $block_edit = $record['is_completato']; +$data_accettazione = $record['data_accettazione'] ? strtotime($record['data_accettazione']) : ''; +$data_conclusione = $record['data_conclusione'] ? strtotime($record['data_conclusione']) : ''; -if (strtotime($record['data_conclusione']) < strtotime($record['data_accettazione']) && !empty(strtotime($record['data_accettazione'])) && !empty(strtotime($record['data_conclusione']))) { +if ($data_conclusione < $data_accettazione && !empty($data_accettazione) && !empty($data_conclusione)) { echo '
    '.tr('Attenzione! La data di accettazione supera la data di conclusione del contratto. Verificare le informazioni inserite.').'
    '; } @@ -54,7 +56,7 @@ if (strtotime($record['data_conclusione']) < strtotime($record['data_accettazion
    - {[ "type": "date", "label": "", "name": "data_conclusione", "value": "$data_conclusione$", "disabled": "isDataConclusioneAutomatica() ? '1", "help": "'.tr('La Data di conclusione è calcolata in automatico in base al valore del campo Validità contratto, se definita') : '0'; ?>" ]} + {[ "type": "date", "label": "", "name": "data_conclusione", "value": "$data_conclusione$", "disabled": "isDataConclusioneAutomatica() ? '1", "help": "'.tr('La Data di conclusione è calcolata in automatico in base al valore del campo Validità contratto, se definita') : '0') : ''; ?>" ]}
    @@ -403,11 +405,11 @@ echo '
    - '.($setting['current'] ? $setting['current'] : '⚠️ Impostazione mancante').' + '.($setting['current'] ?: '⚠️ Impostazione mancante').' '.$setting['expected'].' diff --git a/modules/aggiornamenti/edit.php b/modules/aggiornamenti/edit.php index 1e237e4a0..5a8edd8a2 100755 --- a/modules/aggiornamenti/edit.php +++ b/modules/aggiornamenti/edit.php @@ -156,7 +156,7 @@ function database(button) { } function controlli(button) { - openModal("'.tr('Controlli del gestionale').'", "'.$module->fileurl('controlli.php').'?id_module='.$id_module.'"); + openModal("'.tr('Controlli del gestionale').'", "'.$module->fileurl('controlli.php').'?id_module='.$id_module. '"); } function search(button) { @@ -171,9 +171,9 @@ function search(button) { }, success: function(data){ if (data === "none" || !data) { - $("#update-search").html("'.tr('Nessun aggiornamento disponibile').'."); + $("#update-search").html(" '.tr('Nessun aggiornamento disponibile'). '."); } else { - let beta_warning = data.includes("beta") ? "
    '.tr('Attenzione: la versione individuata è in fase sperimentale, e pertanto può presentare diversi bug e malfunzionamenti').'." : ""; + let beta_warning = data.includes("beta") ? "
    '.tr('Attenzione: la versione individuata è in fase sperimentale e potrebbe pertanto presentare diversi malfunzionamenti. Se ne sconsiglia l\'aggiornamento in installazioni di produzione').'." : ""; $("#update-search").html("'.tr("E' stato individuato un nuovo aggiornamento").': " + data + "." + beta_warning + "
    '.tr('Scaricalo ora: _LINK_', [ '_LINK_' => "https://github.com/devcode-it/openstamanager/releases", ]).'"); diff --git a/modules/aggiornamenti/upload_modules.php b/modules/aggiornamenti/upload_modules.php index 5fc2b34e4..f478cd158 100755 --- a/modules/aggiornamenti/upload_modules.php +++ b/modules/aggiornamenti/upload_modules.php @@ -54,7 +54,7 @@ if (file_exists($extraction_dir.'/VERSION')) { ->ignoreVCS(true) ->in($extraction_dir); - $files_module = $finder->getTranslation('name')('MODULE'); + $files_module = $finder->name('MODULE'); foreach ($files_module as $file) { // Informazioni dal file di configurazione @@ -69,8 +69,6 @@ if (file_exists($extraction_dir.'/VERSION')) { $table = 'zz_modules'; $installed = Module::find((new Module())->getByField('name', $info['name'])); - $insert['parent'] = (new Module())->getByField('name', $info['parent']); - $insert['icon'] = $info['icon']; } // Copia dei file nella cartella relativa @@ -86,6 +84,8 @@ if (file_exists($extraction_dir.'/VERSION')) { 'order' => 100, 'default' => 0, 'enabled' => 1, + 'icon' => $info['icon'], + 'parent' => (new Module())->getByField('name', $info['parent']), ])); $id_record = $dbo->lastInsertedID(); $dbo->insert($table.'_lang', array_merge($insert, [ @@ -107,7 +107,7 @@ if (file_exists($extraction_dir.'/VERSION')) { ->ignoreVCS(true) ->in($extraction_dir); - $files_plugin_template = $finder->getTranslation('name')('PLUGIN')->getTranslation('name')('TEMPLATES'); + $files_plugin_template = $finder->name('PLUGIN')->name('TEMPLATES'); foreach ($files_plugin_template as $file) { // Informazioni dal file di configurazione @@ -115,6 +115,7 @@ if (file_exists($extraction_dir.'/VERSION')) { // Informazioni aggiuntive per il database $insert = []; + $insert_lang = []; // Plugin if (basename($file->getRealPath()) == 'PLUGIN') { @@ -135,7 +136,7 @@ if (file_exists($extraction_dir.'/VERSION')) { $installed = Prints::getPrints()[$info['name']]; $insert['id_module'] = (new Module())->getByField('name', $info['module']); $insert['is_record'] = $info['is_record']; - $insert['filename'] = $info['filename']; + $insert_lang['filename'] = $info['filename']; $insert['icon'] = $info['icon']; } @@ -154,7 +155,7 @@ if (file_exists($extraction_dir.'/VERSION')) { 'enabled' => 1, ])); $id_record = $dbo->lastInsertedID(); - $dbo->insert($table.'_lang', array_merge($insert, [ + $dbo->insert($table.'_lang', array_merge($insert_lang, [ 'name' => $info['name'], 'title' => !empty($info['title']) ? $info['title'] : $info['name'], 'id_record' => $id_record, diff --git a/modules/anagrafiche/actions.php b/modules/anagrafiche/actions.php index f778f05f1..7d40b0fee 100755 --- a/modules/anagrafiche/actions.php +++ b/modules/anagrafiche/actions.php @@ -242,9 +242,13 @@ switch (post('op')) { echo json_encode(['id' => $id_record, 'text' => $anagrafica->ragione_sociale]); } - $descrizioni_tipi = $anagrafica->tipi()->get()->pluck('name')->toArray(); + $descrizioni_tipi = $anagrafica->tipi()->get(); + foreach ($descrizioni_tipi as $tipo) { + $tipi[] = $tipo->getTranslation('name'); + } + flash()->info(tr('Aggiunta nuova anagrafica di tipo _TYPE_', [ - '_TYPE_' => '"'.implode(', ', $descrizioni_tipi).'"', + '_TYPE_' => '"'.implode(', ', $tipi).'"', ])); // Controllo che il Codice Fiscale non sia già presente @@ -348,7 +352,7 @@ switch (post('op')) { // Operazioni aggiuntive per il logo e filigrana stampe if (filter('op') == 'aggiungi-allegato' || filter('op') == 'modifica-allegato') { - $nome = $upload->getTranslation('name'); + $nome = $upload->name; $logo_stampe = ['logo stampe', 'logo_stampe', 'logo stampe.jpg', 'logo stampe.png']; if (in_array(strtolower($nome), $logo_stampe)) { diff --git a/modules/anagrafiche/add.php b/modules/anagrafiche/add.php index e3a28840a..f82fff8c8 100755 --- a/modules/anagrafiche/add.php +++ b/modules/anagrafiche/add.php @@ -43,7 +43,7 @@ echo '
    - {[ "type": "select", "label": "'.tr('Tipo di anagrafica').'", "name": "idtipoanagrafica[]", "id": "idtipoanagrafica_add", "multiple": "1", "required": 1, "values": "query=SELECT `an_tipianagrafiche`.`id`, `name` as descrizione FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `an_tipianagrafiche`.`id` NOT IN (SELECT DISTINCT(`x`.`idtipoanagrafica`) FROM `an_tipianagrafiche_anagrafiche` x INNER JOIN `an_tipianagrafiche` t ON `x`.`idtipoanagrafica` = `t`.`id` LEFT JOIN `an_tipianagrafiche_lang` ON (`t`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `x`.`idanagrafica` WHERE `an_tipianagrafiche`.`id` = '.prepare($id_tipo_azienda).' AND `deleted_at` IS NULL) ORDER BY `name`", "value": "'.(isset($idtipoanagrafica) ? $idtipoanagrafica : null).'", "readonly": '.(!empty(get('readonly_tipo')) ? 1 : 0).' ]} + {[ "type": "select", "label": "'.tr('Tipo di anagrafica').'", "name": "idtipoanagrafica[]", "id": "idtipoanagrafica_add", "multiple": "1", "required": 1, "values": "query=SELECT `an_tipianagrafiche`.`id`, `name` as descrizione FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `an_tipianagrafiche`.`id` NOT IN (SELECT DISTINCT(`x`.`idtipoanagrafica`) FROM `an_tipianagrafiche_anagrafiche` x INNER JOIN `an_tipianagrafiche` t ON `x`.`idtipoanagrafica` = `t`.`id` LEFT JOIN `an_tipianagrafiche_lang` ON (`t`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `x`.`idanagrafica` WHERE `an_tipianagrafiche`.`id` = '.prepare($id_tipo_azienda).' AND `deleted_at` IS NULL) ORDER BY `name`", "value": "'.($idtipoanagrafica ?? null).'", "readonly": '.(!empty(get('readonly_tipo')) ? 1 : 0).' ]}
    diff --git a/modules/anagrafiche/ajax/select.php b/modules/anagrafiche/ajax/select.php index 9fc007ff0..c1e926d11 100755 --- a/modules/anagrafiche/ajax/select.php +++ b/modules/anagrafiche/ajax/select.php @@ -252,7 +252,7 @@ switch ($resource) { case 'clienti_fornitori': $id_cliente = Tipo::find((new Tipo())->getByField('name', 'Cliente', Models\Locale::getPredefined()->id))->id; $id_fornitore = Tipo::find((new Tipo())->getByField('name', 'Fornitore', Models\Locale::getPredefined()->id))->id; - $id_azienda = Tipo::find((new Tipo())->getByField('name', 'Fornitore', Models\Locale::getPredefined()->id))->id; + $id_azienda = Tipo::find((new Tipo())->getByField('name', 'Azienda', Models\Locale::getPredefined()->id))->id; $query = "SELECT `an_anagrafiche`.`idanagrafica` AS id, CONCAT_WS('', `ragione_sociale`, IF(`citta` !='' OR `provincia` != '', CONCAT(' (', `citta`, IF(`provincia`!='', CONCAT(' ', `provincia`), ''), ')'), ''), IF(`an_anagrafiche`.`deleted_at` IS NULL, '', ' (".tr('eliminata').")'),' - ', `an_anagrafiche`.`codice`) AS descrizione, `an_tipianagrafiche_lang`.`name` AS optgroup, `idtipointervento_default`, `an_tipianagrafiche`.`id` as id_tipo FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = ".prepare(Models\Locale::getDefault()->id).') INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche`.`id`=`an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` |where| ORDER BY `optgroup` ASC, `ragione_sociale` ASC'; @@ -360,9 +360,9 @@ switch ($resource) { * FROM (SELECT '0' AS id, (SELECT `lat` FROM `an_anagrafiche` |where|) AS lat, (SELECT `lng` FROM `an_anagrafiche` |where|) AS lng, (SELECT `idzona` FROM `an_anagrafiche` |where|) AS idzona, CONCAT_WS(' - ', \"".tr('Sede legale')."\" , (SELECT CONCAT (`citta`, IF(`indirizzo`!='',CONCAT(' (', `indirizzo`, ')'), ''), ' (',`ragione_sociale`,')') FROM `an_anagrafiche` |where|)) AS descrizione - + UNION - + SELECT `id`, `lat`, diff --git a/modules/anagrafiche/edit.php b/modules/anagrafiche/edit.php index 71bd5385f..b3dd2866d 100755 --- a/modules/anagrafiche/edit.php +++ b/modules/anagrafiche/edit.php @@ -473,9 +473,7 @@ if ($is_cliente or $is_fornitore or $is_tecnico) { '; $banche = Banca::where('id_anagrafica', $anagrafica->id)->get(); - $banca_predefinita = $banche->first(function ($item) { - return !empty($item['predefined']); - }); + $banca_predefinita = $banche->first(fn ($item) => !empty($item['predefined'])); $modulo_banche = (new Module())->getByField('name', 'Banche', Models\Locale::getPredefined()->id); if (!$banche->isEmpty()) { echo ' diff --git a/modules/anagrafiche/src/Anagrafica.php b/modules/anagrafiche/src/Anagrafica.php index 365d24e7d..18b099c01 100755 --- a/modules/anagrafiche/src/Anagrafica.php +++ b/modules/anagrafiche/src/Anagrafica.php @@ -192,9 +192,7 @@ class Anagrafica extends Model */ public function isTipo($type) { - return $this->tipi()->get()->search(function ($item, $key) use ($type) { - return TipoAnagrafica::find($item->id)->getTranslation('name', \Models\Locale::getPredefined()->id) == $type; - }) !== false; + return $this->tipi()->get()->search(fn ($item, $key) => TipoAnagrafica::find($item->id)->getTranslation('name', \Models\Locale::getPredefined()->id) == $type) !== false; } public function delete() diff --git a/modules/articoli/ajax/complete.php b/modules/articoli/ajax/complete.php index 3b8bfec5c..7985dcb4b 100755 --- a/modules/articoli/ajax/complete.php +++ b/modules/articoli/ajax/complete.php @@ -272,7 +272,7 @@ switch ($resource) { } // Ultimo prezzo al cliente - $ultimo_prezzo = $dbo->fetchArray('SELECT '.($prezzi_ivati ? '(`prezzo_unitario_ivato`-`sconto_unitario_ivato`)' : '(`prezzo_unitario`-`sconto_unitario`)').' AS prezzo_ultimo FROM `co_righe_documenti` INNER JOIN `co_documenti` ON `co_documenti`.`id`=`co_righe_documenti`.`iddocumento` INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id`=`co_documenti`.`idtipodocumento` WHERE `idarticolo`='.prepare($id_articolo).' AND `idanagrafica`='.prepare($id_anagrafica).' AND `co_tipidocumento`.`dir`='.prepare($direzione).') ORDER BY `data` DESC LIMIT 0,1'); + $ultimo_prezzo = $dbo->fetchArray('SELECT '.($prezzi_ivati ? '(`prezzo_unitario_ivato`-`sconto_unitario_ivato`)' : '(`prezzo_unitario`-`sconto_unitario`)').' AS prezzo_ultimo FROM `co_righe_documenti` INNER JOIN `co_documenti` ON `co_documenti`.`id`=`co_righe_documenti`.`iddocumento` INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id`=`co_documenti`.`idtipodocumento` WHERE `idarticolo`='.prepare($id_articolo).' AND `idanagrafica`='.prepare($id_anagrafica).' AND `co_tipidocumento`.`dir`='.prepare($direzione).' ORDER BY `data` DESC LIMIT 0,1'); $results = array_merge($prezzi, $listino, $listini_sempre_visibili, $prezzo_articolo, $ultimo_prezzo); diff --git a/modules/articoli/init.php b/modules/articoli/init.php index 400c615d1..fd53cf8b3 100755 --- a/modules/articoli/init.php +++ b/modules/articoli/init.php @@ -21,7 +21,7 @@ include_once __DIR__.'/../../core.php'; use Modules\Articoli\Articolo; -if (isset($id_record)) { +if (!empty($id_record)) { $articolo = Articolo::withTrashed()->find($id_record); $record = $dbo->fetchOne('SELECT *, `mg_articoli_lang`.`name` as descrizione, (SELECT COUNT(id) FROM `mg_prodotti` WHERE `id_articolo` = `mg_articoli`.`id`) AS serial FROM `mg_articoli` LEFT JOIN `mg_articoli_lang` ON (`mg_articoli_lang`.`id_record` = `mg_articoli`.`id` AND `mg_articoli_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') WHERE `mg_articoli`.`id`='.prepare($id_record)); diff --git a/modules/articoli/modutil.php b/modules/articoli/modutil.php index 7f5ddeb76..a84c01af4 100755 --- a/modules/articoli/modutil.php +++ b/modules/articoli/modutil.php @@ -32,19 +32,19 @@ if (!function_exists('aggiorna_sedi_movimenti')) { $idsede = ($rs[0]['dir'] == 'uscita') ? $rs[0]['idsede_destinazione'] : $rs[0]['idsede_partenza']; - $dbo->query('UPDATE `mg_movimenti` SET `idsede`='.prepare($idsede).' WHERE `reference_type`='.prepare('Modules\DDT\DDT').' AND `reference_id`='.prepare($id)); + $dbo->query('UPDATE `mg_movimenti` SET `idsede`='.prepare($idsede).' WHERE `reference_type`='.prepare(Modules\DDT\DDT::class).' AND `reference_id`='.prepare($id)); } elseif ($module == 'documenti') { $rs = $dbo->fetchArray('SELECT `idsede_partenza`, `idsede_destinazione`, `dir` FROM `co_documenti` INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE `co_documenti`.`id`='.prepare($id)); $idsede = ($rs[0]['dir'] == 'uscita') ? $rs[0]['idsede_destinazione'] : $rs[0]['idsede_partenza']; - $dbo->query('UPDATE mg_movimenti SET idsede='.prepare($idsede).' WHERE reference_type='.prepare('Modules\Fatture\Fattura').' AND reference_id='.prepare($id)); + $dbo->query('UPDATE mg_movimenti SET idsede='.prepare($idsede).' WHERE reference_type='.prepare(Modules\Fatture\Fattura::class).' AND reference_id='.prepare($id)); } elseif ($module == 'interventi') { $rs = $dbo->fetchArray('SELECT idsede_partenza, idsede_destinazione FROM in_interventi WHERE in_interventi.id='.prepare($id)); $idsede = $rs[0]['idsede_partenza']; - $dbo->query('UPDATE mg_movimenti SET idsede='.prepare($idsede).' WHERE reference_type='.prepare('Modules\Interventi\Intervento').' AND reference_id='.prepare($id)); + $dbo->query('UPDATE mg_movimenti SET idsede='.prepare($idsede).' WHERE reference_type='.prepare(Modules\Interventi\Intervento::class).' AND reference_id='.prepare($id)); } } } diff --git a/modules/articoli/plugins/articoli.movimenti.php b/modules/articoli/plugins/articoli.movimenti.php index 473af72fd..71c64a3d8 100755 --- a/modules/articoli/plugins/articoli.movimenti.php +++ b/modules/articoli/plugins/articoli.movimenti.php @@ -149,7 +149,7 @@ if (!empty($movimenti)) { // Data $utente = $dbo->table('zz_users')->where('id', $movimento->idutente)->first(); - $data = ($movimento->data ? $movimento->data : $movimento->data_movimento); + $data = ($movimento->data ?: $movimento->data_movimento); echo '
    '.dateFormat($data).' + '.$r['ragione_sociale'].' - {[ "type": "date", "name": "data_fine['.$r['id'].']", "required": 1, "value": "'.$r['data_fine'].'", "min-date": "'.$r['data_inizio'].'" ]} + {[ "type": "date", "name": "data_fine['.$r['id'].']", "value": "'.$r['data_fine'].'", "min-date": "'.$r['data_inizio'].'" ]}