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/include/manager.php b/include/manager.php
index 4b010cc71..683dfea09 100644
--- a/include/manager.php
+++ b/include/manager.php
@@ -39,8 +39,6 @@ if (!empty($id_plugin)) {
';
}
-$total = App::readQuery($element);
-
$type = $element['option'];
// Caricamento helper modulo (verifico se ci sono helper personalizzati)
@@ -56,11 +54,13 @@ include App::filepath($directory.'|custom|', 'controller_before.php');
* Datatables con record
*/
if (!empty($type) && $type != 'menu' && $type != 'custom') {
+ $total = App::readQuery($element);
+
if (empty($id_plugin) && count(Modules::getSegments($id_module)) > 1) {
echo '
- {[ "type": "select", "name": "id_segment_", "required": 0, "values": "query=SELECT id, name AS descrizione FROM zz_segments WHERE id_module = '.prepare($id_module).'", "value": "'.$_SESSION['m'.$id_module]['id_segment'].'" ]}
+ {[ "type": "select", "name": "id_segment_", "required": 0, "values": "query=SELECT id, name AS descrizione FROM zz_segments WHERE id_module = '.prepare($id_module).'", "value": "'.$_SESSION['module_'.$id_module]['id_segment'].'" ]}
';
diff --git a/include/top.php b/include/top.php
index 67887e332..3c429a3b6 100644
--- a/include/top.php
+++ b/include/top.php
@@ -40,7 +40,7 @@ if (Auth::check()) {
foreach ($_SESSION as $idx1 => $arr2) {
if ($idx1 == 'module_'.$id_module) {
foreach ($arr2 as $field => $value) {
- if ($value != '') {
+ if (!empty($value) && starts_with($field, 'search_')) {
$field_name = str_replace('search_', '', $field);
echo '
search.push("search_'.$field_name.'");
diff --git a/lib/util.php b/lib/util.php
index fce4d5e63..6e1dd260e 100644
--- a/lib/util.php
+++ b/lib/util.php
@@ -437,3 +437,18 @@ if (!function_exists('readSQLFile')) {
return $queryLine;
}
}
+
+if (!function_exists('replace')) {
+ /**
+ * Sostituisce gli elementi dell'array all'interno della stringa.
+ *
+ * @param string $string
+ * @param array $array
+ *
+ * @return string
+ */
+ function replace($string, $array)
+ {
+ return str_replace(array_keys($array), array_values($array), $string);
+ }
+}
diff --git a/modules/contratti/plugins/addfattura.php b/modules/contratti/plugins/addfattura.php
index ecca5c737..6cb43126b 100644
--- a/modules/contratti/plugins/addfattura.php
+++ b/modules/contratti/plugins/addfattura.php
@@ -32,7 +32,7 @@ echo '
// Sezionale
echo '
- {[ "type": "select", "label": "'.tr('Sezionale').'", "name": "id_segment", "required": 1, "values": "query=SELECT id, name AS descrizione FROM zz_segments WHERE id_module='.Modules::get('Fatture di vendita')['id'].' ORDER BY name", "value":"'.$_SESSION['m'.Modules::get('Fatture di vendita')['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='.Modules::get('Fatture di vendita')['id'].' ORDER BY name", "value":"'.$_SESSION['module_'.Modules::get('Fatture di vendita')['id']]['id_segment'].'" ]}
';
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 '">
- ';
}
+
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;