diff --git a/actions.php b/actions.php index 0b5fb4efe..9f8af0d63 100644 --- a/actions.php +++ b/actions.php @@ -156,6 +156,8 @@ include App::filepath($directory.'|custom|', 'init.php'); // Retrocompatibilità if (!isset($record) && isset($records[0])) { $record = $records[0]; +} elseif (!isset($records[0]) && isset($record)) { + $records = [$record]; } // Registrazione del record diff --git a/core.php b/core.php index 7a487c41c..f9b2ef001 100644 --- a/core.php +++ b/core.php @@ -212,9 +212,9 @@ if (!API::isAPIRequest()) { $pageTitle = $module['title']; // Segmenti - if (!isset($_SESSION['m'.$id_module]['id_segment'])) { + if (!isset($_SESSION['module_'.$id_module]['id_segment'])) { $segments = Modules::getSegments($id_module); - $_SESSION['m'.$id_module]['id_segment'] = isset($segments[0]['id']) ? $segments[0]['id'] : null; + $_SESSION['module_'.$id_module]['id_segment'] = isset($segments[0]['id']) ? $segments[0]['id'] : null; } Permissions::addModule($id_module); diff --git a/editor.php b/editor.php index 4f41f68ca..9ed34287a 100755 --- a/editor.php +++ b/editor.php @@ -40,9 +40,6 @@ if (empty($record)) { echo '

'.tr('Record non trovato').'.

'; } else { - /* - * Lettura eventuali plugins modulo da inserire come tab - */ echo ' '; diff --git a/modules/ddt/bulk.php b/modules/ddt/bulk.php index f3bbf51bc..e0ba91630 100644 --- a/modules/ddt/bulk.php +++ b/modules/ddt/bulk.php @@ -17,9 +17,9 @@ switch (post('op')) { // Segmenti $id_fatture = Modules::get('Fatture di vendita')['id']; - if (!isset($_SESSION['m'.$id_fatture]['id_segment'])) { + if (!isset($_SESSION['module_'.$id_fatture]['id_segment'])) { $segments = Modules::getSegments($id_fatture); - $_SESSION['m'.$id_fatture]['id_segment'] = isset($segments[0]['id']) ? $segments[0]['id'] : null; + $_SESSION['module_'.$id_fatture]['id_segment'] = isset($segments[0]['id']) ? $segments[0]['id'] : null; } $id_segment = $_SESSION['m'.$id_fatture]['id_segment']; diff --git a/modules/fatture/add.php b/modules/fatture/add.php index 42d90a3a2..8f66aedf0 100644 --- a/modules/fatture/add.php +++ b/modules/fatture/add.php @@ -36,7 +36,7 @@ $id_anagrafica = !empty(get('idanagrafica')) ? get('idanagrafica') : $user['idan {[ "type": "select", "label": "", "name": "idtipodocumento", "required": 1, "values": "query=SELECT id, descrizione FROM co_tipidocumento WHERE dir=''" ]}
- {[ "type": "select", "label": "", "name": "id_segment", "required": 1, "values": "query=SELECT id, name AS descrizione FROM zz_segments WHERE id_module='' ORDER BY name", "value": "" ]} + {[ "type": "select", "label": "", "name": "id_segment", "required": 1, "values": "query=SELECT id, name AS descrizione FROM zz_segments WHERE id_module='' ORDER BY name", "value": "" ]}
diff --git a/modules/fatture/crea_documento.php b/modules/fatture/crea_documento.php index fb4af9ce9..9b281cd1e 100644 --- a/modules/fatture/crea_documento.php +++ b/modules/fatture/crea_documento.php @@ -117,7 +117,7 @@ if (!empty($rs)) { if ($module_name == 'Fatture di vendita' || $module_name == 'Fatture di acquisto') { echo '
- {[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "values": "query=SELECT id, name AS descrizione FROM zz_segments WHERE id_module='.prepare(Modules::get($module_name)['id']).' ORDER BY name", "value": "'.$_SESSION['m'.Modules::get($module_name)['id']]['id_segment'].'" ]} + {[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "values": "query=SELECT id, name AS descrizione FROM zz_segments WHERE id_module='.prepare(Modules::get($module_name)['id']).' ORDER BY name", "value": "'.$_SESSION['module_'.Modules::get($module_name)['id']]['id_segment'].'" ]}
'; } diff --git a/modules/interventi/bulk.php b/modules/interventi/bulk.php index 330cb7d1c..ce6304b27 100644 --- a/modules/interventi/bulk.php +++ b/modules/interventi/bulk.php @@ -63,12 +63,12 @@ switch (post('op')) { $dir = 'entrata'; $idtipodocumento = '2'; - if (empty($_SESSION['m'.Modules::get('Fatture di vendita')['id']]['id_segment'])) { + if (empty($_SESSION['module_'.Modules::get('Fatture di vendita')['id']]['id_segment'])) { $rs = $dbo->fetchArray('SELECT id FROM zz_segments WHERE predefined = 1 AND id_module = '.prepare(Modules::get('Fatture di vendita')['id']).'LIMIT 0,1'); - $_SESSION['m'.Modules::get('Fatture di vendita')['id']]['id_segment'] = $rs[0]['id']; + $_SESSION['module_'.Modules::get('Fatture di vendita')['id']]['id_segment'] = $rs[0]['id']; } - $id_segment = $_SESSION['m'.Modules::get('Fatture di vendita')['id']]['id_segment']; + $id_segment = $_SESSION['module_'.Modules::get('Fatture di vendita')['id']]['id_segment']; $numero = get_new_numerofattura($data); diff --git a/modules/viste/actions.php b/modules/viste/actions.php index 2386e77d2..cdcfca160 100644 --- a/modules/viste/actions.php +++ b/modules/viste/actions.php @@ -47,7 +47,7 @@ switch (filter('op')) { $array = [ 'name' => $post['name'][$c], 'query' => $post['query'][$c], - 'enabled' => $post['enabled'][$c], + 'visible' => $post['visible'][$c], 'search' => $post['search'][$c], 'slow' => $post['slow'][$c], 'format' => $post['format'][$c], diff --git a/modules/viste/edit.php b/modules/viste/edit.php index 93a8750b8..7933f0c2f 100644 --- a/modules/viste/edit.php +++ b/modules/viste/edit.php @@ -99,8 +99,8 @@ if (!empty($options) && $options != 'custom') { $editable = !($field['default'] && $enable_readonly); echo ' -
- {[ "type": "select", "label": "'.tr('Visibilità').'", "name": "enabled['.$key.']", "values": "list=\"0\":\"'.tr('Nascosto (variabili di stato)').'\",\"1\": \"'.tr('Visibile nella sezione').'\"", "value": "'.$field['enabled'].'", "help": "'.tr('Stato del campo: visibile nella tabella oppure nascosto').'" ]} + {[ "type": "select", "label": "'.tr('Visibilità').'", "name": "visible['.$key.']", "values": "list=\"0\":\"'.tr('Nascosto (variabili di stato)').'\",\"1\": \"'.tr('Visibile nella sezione').'\"", "value": "'.$field['visible'].'", "help": "'.tr('Stato del campo: visibile nella tabella oppure nascosto').'" ]}
@@ -227,7 +227,7 @@ if (!empty($options) && $options != 'custom') {

'; - if ($field['enabled']) { + if ($field['visible']) { echo ''.$field['name'].''; } else { echo ''.$field['name'].''; @@ -254,7 +254,8 @@ if (!empty($options) && $options != 'custom') {

{[ "type": "text", "label": "'.tr('Nome').'", "name": "name[-id-]" ]}
- + +
{[ "type": "textarea", "label": "'.tr('Query prevista').'", "name": "query[-id-]" ]} @@ -267,7 +268,7 @@ if (!empty($options) && $options != 'custom') {
- {[ "type": "select", "label": "'.tr('Visibilità').'", "name": "enabled[-id-]", "values": "list=\"0\":\"'.tr('Nascosto (variabili di stato)').'\",\"1\": \"'.tr('Visibile nella sezione').'\"" ]} + {[ "type": "select", "label": "'.tr('Visibilità').'", "name": "visible[-id-]", "values": "list=\"0\":\"'.tr('Nascosto (variabili di stato)').'\",\"1\": \"'.tr('Visibile nella sezione').'\"" ]}
@@ -297,7 +298,8 @@ if (!empty($options) && $options != 'custom') {
{[ "type": "text", "label": "'.tr('Ordina tramite').'", "name": "order_by[-id-]" ]}
- + + '; @@ -329,64 +331,64 @@ if (!empty($options) && $options != 'custom') { echo 'box-danger'; } echo '"> -
-

- '.tr('Filtro: _NAME_', [ - '_NAME_' => $additional['name'], - ]).' -

'; +
+

+ '.tr('Filtro: _NAME_', [ + '_NAME_' => $additional['name'], + ]).' +

'; if ($editable) { echo ' - - '.tr('Elimina').' - '; + + '.tr('Elimina').' + '; } echo ' - - '.($additional['enabled'] ? tr('Disabilita') : tr('Abilita')).' - '; + + '.($additional['enabled'] ? tr('Disabilita') : tr('Abilita')).' + '; echo ' -
-
+
+
-
-
- {[ "type": "textarea", "label": "'.tr('Query').'", "name": "query['.$num.']", "value": "'.prepareToField($additional['clause']).'"'; +
+
+ {[ "type": "textarea", "label": "'.tr('Query').'", "name": "query['.$num.']", "value": "'.prepareToField($additional['clause']).'"'; if (!$editable) { echo ', "readonly": "1"'; } echo ' ]} -
-
- -
- - - -
- {[ "type": "text", "label": "'.tr('Name').'", "name": "name['.$num.']", "value": "'.$additional['name'].'" ]} -
- - -
- {[ "type": "select", "label": "'.tr('Gruppo').'", "name": "gruppo['.$num.']", "values": "query=SELECT id, nome AS descrizione FROM zz_groups ORDER BY id ASC", "value": "'.$additional['idgruppo'].'"'; - if (!$editable) { - echo ', "readonly": "1"'; - } - echo ' ]} -
- -
- {[ "type": "select", "label": "'.tr('Posizione').'", "name": "position['.$num.']", "values": "list=\"0\":\"'.tr('WHERE').'\",\"1\": \"'.tr('HAVING').'\"", "value": "'.$additional['position'].'"'; - if (!$editable) { - echo ', "readonly": "1"'; - } - echo ' ]} -
-
'; + +
+ + +
+ {[ "type": "text", "label": "'.tr('Name').'", "name": "name['.$num.']", "value": "'.$additional['name'].'" ]} +
+ +
+ {[ "type": "select", "label": "'.tr('Gruppo').'", "name": "gruppo['.$num.']", "values": "query=SELECT id, nome AS descrizione FROM zz_groups ORDER BY id ASC", "value": "'.$additional['idgruppo'].'"'; + if (!$editable) { + echo ', "readonly": "1"'; + } + echo ' ]} +
+ +
+ {[ "type": "select", "label": "'.tr('Posizione').'", "name": "position['.$num.']", "values": "list=\"0\":\"'.tr('WHERE').'\",\"1\": \"'.tr('HAVING').'\"", "value": "'.$additional['position'].'"'; + if (!$editable) { + echo ', "readonly": "1"'; + } + echo ' ]} +
+
+ +
+
'; } + echo ' @@ -401,6 +403,7 @@ if (!empty($options) && $options != 'custom') { + @@ -434,8 +437,9 @@ if (!empty($options) && $options != 'custom') {
{[ "type": "select", "label": "'.tr('Posizione').'", "name": "position[-id-]", "values": "list=\"0\":\"'.tr('WHERE').'\",\"1\": \"'.tr('HAVING').'\"" ]}
- - + + + '; echo ' @@ -514,3 +518,6 @@ $(document).ready(function(){ }); '; } + +// Fix apertura non corrisposta di un tag div +echo ''; diff --git a/src/App.php b/src/App.php index 46e48ad85..1e6834913 100644 --- a/src/App.php +++ b/src/App.php @@ -146,7 +146,8 @@ class App public static function flash() { if (empty(self::$flash)) { - self::$flash = new \Util\Messages(); + $storage = null; + self::$flash = new \Util\Messages($storage, 'messages'); } return self::$flash; @@ -286,7 +287,7 @@ class App foreach ($views as $view) { $select[] = $view['query'].(!empty($view['name']) ? " AS '".$view['name']."'" : ''); - if ($view['enabled']) { + if (!empty($view['visible'])) { $view['name'] = trim($view['name']); $view['search_inside'] = trim($view['search_inside']); $view['order_by'] = trim($view['order_by']); @@ -410,7 +411,17 @@ class App $query = str_replace(['|period_start|', '|period_end|'], [$_SESSION['period_start'], $_SESSION['period_end']], $query); // Sostituzione dei segmenti - $query = str_replace('|segment|', !empty($_SESSION['m'.$id_module]['id_segment']) ? ' AND id_segment = '.prepare($_SESSION['m'.$id_module]['id_segment']) : '', $query); + $query = str_replace('|segment|', !empty($_SESSION['module_'.$id_module]['id_segment']) ? ' AND id_segment = '.prepare($_SESSION['module_'.$id_module]['id_segment']) : '', $query); + + // Sostituzione dei formati + $patterns = formatter()->getSQLPatterns(); + + $replace = []; + foreach ($patterns as $key => $value) { + $replace['|'.$key.'_format|'] = "'".$value."'"; + } + + $query = replace($query, $replace); return $query; } diff --git a/src/Intl/Formatter.php b/src/Intl/Formatter.php index 10f72893d..31ced6273 100644 --- a/src/Intl/Formatter.php +++ b/src/Intl/Formatter.php @@ -33,6 +33,9 @@ class Formatter /** @var string Pattern per gli orari */ protected $timePattern; + /** @var array Pattern per SQL */ + protected $sql = []; + public function __construct($locale, $timestamp = null, $date = null, $time = null, $number = []) { if (class_exists('NumberFormatter')) { @@ -554,4 +557,31 @@ class Formatter { return $this->timePattern = $pattern; } + + public function getSQLPatterns() + { + if (empty($this->sql)) { + $formats = [ + 'd' => '%d', + 'm' => '%m', + 'Y' => '%Y', + 'H' => '%H', + 'i' => '%i', + ]; + + $result = [ + 'timestamp' => $this->getTimestampPattern(), + 'date' => $this->getDatePattern(), + 'time' => $this->getTimePattern(), + ]; + + foreach ($result as $key => $value) { + $result[$key] = replace($value, $formats); + } + + $this->sql = $result; + } + + return $this->sql; + } } diff --git a/src/Modules.php b/src/Modules.php index d340d4263..ed3ff349e 100644 --- a/src/Modules.php +++ b/src/Modules.php @@ -147,7 +147,7 @@ class Modules // Aggiunta dei segmenti $segments = self::getSegments($module['id']); foreach ($segments as $result) { - if (!empty($result['clause']) && $result['id'] == $_SESSION['m'.$module['id']]['id_segment']) { + if (!empty($result['clause']) && $result['id'] == $_SESSION['module_'.$module['id']]['id_segment']) { $result['clause'] = App::replacePlaceholder($result['clause']); $additionals[$result['position']][] = $result['clause']; diff --git a/templates/riepilogo_interventi/pdfgen.riepilogo_interventi.php b/templates/riepilogo_interventi/pdfgen.riepilogo_interventi.php index a9466e8a3..1c55877aa 100644 --- a/templates/riepilogo_interventi/pdfgen.riepilogo_interventi.php +++ b/templates/riepilogo_interventi/pdfgen.riepilogo_interventi.php @@ -13,8 +13,8 @@ $module_query = $total['query']; $search_filters = []; if (is_array($_SESSION['module_'.$id_module])) { - foreach ($_SESSION['module_'.$id_module] as $field_name => $field_value) { - if ($field_value != '') { + foreach ($_SESSION['module_'.$id_module] as $field => $value) { + if (!empty($value) && starts_with($field, 'search_')) { $field_name = str_replace('search_', '', $field_name); $field_name = str_replace('__', ' ', $field_name); $field_name = str_replace('-', ' ', $field_name); diff --git a/update/2_4_2.sql b/update/2_4_2.sql index 397193855..164e13ed2 100644 --- a/update/2_4_2.sql +++ b/update/2_4_2.sql @@ -241,3 +241,6 @@ ALTER TABLE `zz_smtp` RENAME `zz_smtps`; -- Aggiorno tabella zz_smtp in zz_smtps per il modulo Account email UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM zz_smtps WHERE 1=1 AND deleted_at IS NULL HAVING 2=2 ORDER BY `name`' WHERE `zz_modules`.`name` = 'Account email'; + +-- Ridenominazione enabled in visible su zz_views +ALTER TABLE `zz_views` CHANGE `enabled` `visible` BOOLEAN NOT NULL DEFAULT 1;