diff --git a/composer.json b/composer.json
index 8cd001ef4..43718c9a8 100644
--- a/composer.json
+++ b/composer.json
@@ -57,6 +57,7 @@
},
"files": [
"lib/functions.php",
+ "lib/helpers.php",
"lib/util.php",
"lib/deprecated.php"
]
diff --git a/lib/deprecated.php b/lib/deprecated.php
index a148eb7d9..e6bcf6381 100644
--- a/lib/deprecated.php
+++ b/lib/deprecated.php
@@ -2,1108 +2,6 @@
// trigger_error(tr('Funzione deprecata!'), E_USER_DEPRECATED);
-/**
- * Sostituisce ", < e > per evitare hacking del database e risolvere vari problemi.
- *
- * @param unknown $text
- *
- * @deprecated 2.3
- *
- * @return string
- */
-function save($text)
-{
- trigger_error(tr('Funzione deprecata!'), E_USER_DEPRECATED);
-
- $text = htmlentities($text, ENT_QUOTES, 'UTF-8');
-
- return $text;
-}
-
-/**
- * Forza una string a essere un numero decimale (sostituisce , con .).
- *
- * @param unknown $str
- *
- * @deprecated 2.3
- *
- * @return number
- */
-function force_decimal($str)
-{
- trigger_error(tr('Funzione deprecata!'), E_USER_DEPRECATED);
-
- $str = str_replace(',', '.', $str);
-
- return floatval($str);
-}
-
-/**
- * Salva l'ora controllando che non vi siano inseriti contenuti inappropriati.
- *
- * @param unknown $time
- *
- * @deprecated 2.3
- *
- * @return mixed
- */
-function saveTime($time)
-{
- trigger_error(tr('Funzione deprecata!'), E_USER_DEPRECATED);
-
- $result = str_replace([',', '.'], ':', $time);
-
- // Se è presente solo l'ora, aggiunge minuti e secondi
- if (preg_match('/^([0-9]{1,2})$/', $result)) {
- $result = $result.':00:00';
- }
-
- return $result;
-}
-
-/**
- * @param unknown $datetime
- *
- * @deprecated 2.3
- *
- * @return string
- */
-function readDateTime($datetime)
-{
- trigger_error(tr('Funzione deprecata!'), E_USER_DEPRECATED);
-
- $data = substr($datetime, 0, -9);
- $date = explode('-', $data);
- $date = $date[2].'/'.$date[1].'/'.$date[0];
- $time = substr($datetime, -8);
- $result = $time;
- $result = str_replace(',', ':', $result);
- $result = str_replace('.', ':', $result);
- $time = date('H:i', strtotime($result));
- $datetime = $date.' '.$time;
-
- return $datetime;
-}
-
-/**
- * Converte una stringa da un formato ad un altro
- * "2010-01-15 08:30:00" => "15/01/2010 08:30" (con $view='')
- * "2010-01-15 08:30:00" => "15/01/2010" (con $view='date')
- * "2010-01-15 08:30:00" => "08:30" (con $view='time').
- *
- * @param unknown $datetime
- * @param unknown $view
- *
- * @deprecated 2.3
- *
- * @return string
- */
-function readDateTimePrint($datetime, $view)
-{
- trigger_error(tr('Funzione deprecata!'), E_USER_DEPRECATED);
-
- $data = substr($datetime, 0, -9);
- $date = explode('-', $data);
- $date = $date[2].'/'.$date[1].'/'.$date[0];
- $time = substr($datetime, -8);
- $result = $time;
- $result = str_replace(',', ':', $result);
- $result = str_replace('.', ':', $result);
- $time = date('H:i', strtotime($result));
- $datetime = $date.' '.$time;
- if ($view == 'date') {
- return $date;
- }
- if ($view == 'time') {
- return $time;
- }
-}
-
-/**
- * Legge i permessi del modulo selezionato e dell'utente corrente e li ritorna come stringa.
- *
- * @param string $nome_modulo
- *
- * @deprecated 2.3
- *
- * @return string
- */
-function get_permessi($nome_modulo)
-{
- trigger_error(tr('Funzione deprecata!'), E_USER_DEPRECATED);
-
- $dbo = \Database::getConnection();
- $query = 'SELECT *, (SELECT idanagrafica FROM zz_users WHERE id='.prepare($_SESSION['id_utente']).') AS idanagrafica FROM zz_permissions WHERE idgruppo=(SELECT idgruppo FROM zz_users WHERE id='.prepare($_SESSION['id_utente']).') AND idmodule=(SELECT id FROM zz_modules WHERE name='.prepare($nome_modulo).')';
- $rs = $dbo->fetchArray($query);
- if (count($rs) <= 0) {
- // Ultimo tentativo: se non ci sono i permessi ma sono l'amministratore posso comunque leggere il modulo
- if (isAdminAutenticated()) {
- return 'rw';
- } else {
- return '-';
- }
- } else {
- if ($rs[0]['permessi'] == '-') {
- return '-';
- } elseif ($rs[0]['permessi'] == 'r') {
- return 'r';
- } elseif ($rs[0]['permessi'] == 'rw') {
- return 'rw';
- }
- }
-}
-
-/**
- * @param unknown $datetime
- *
- * @deprecated 2.3
- *
- * @return string
- */
-function saveDateTime($datetime)
-{
- trigger_error(tr('Funzione deprecata!'), E_USER_DEPRECATED);
-
- $data = substr($datetime, 0, -6);
- $date = explode('/', $data);
- $date = $date[1].'/'.$date[0].'/'.$date[2];
- $date = strtotime($date);
- $date = date('Y-m-d', $date);
- $time = substr($datetime, -5);
- $result = $time;
- $result = str_replace(',', ':', $result);
- $result = str_replace('.', ':', $result);
- $time = date('H:i', strtotime($result));
- $datetime = $date.' '.$time;
-
- return $datetime;
-}
-
-/**
- * Sostituisce gli invii a capo e gli apici singoli con il relativo in HTML.
- *
- * @param unknown $text
- *
- * @deprecated 2.3
- *
- * @return mixed
- */
-function fix_str($text)
-{
- trigger_error(tr('Funzione deprecata!'), E_USER_DEPRECATED);
-
- $text = str_replace("\r\n", '
', $text);
- $text = str_replace("'", '’', $text);
- $text = mres($text);
-
- return $text;
-}
-
-/**
- * Funzione di sostituzione a mysql_real_escape_string()/mysql_escape_string().
- *
- * @param string $value
- *
- * @deprecated 2.3
- *
- * @return mixed
- */
-function mres($value)
-{
- trigger_error(tr('Funzione deprecata!'), E_USER_DEPRECATED);
-
- $search = ['\\', "\x00", "\n", "\r", "'", '"', "\x1a"];
- $replace = ['\\\\', '\\0', '\\n', '\\r', "\'", '\"', '\\Z'];
-
- return str_replace($search, $replace, $value);
-}
-
-/**
- * Rimuove eventuali carattari speciali dalla stringa.
- *
- * @param unknown $text
- *
- * @deprecated 2.3
- *
- * @return mixed
- */
-function clean($string)
-{
- trigger_error(tr('Funzione deprecata!'), E_USER_DEPRECATED);
-
- $string = str_replace(' ', '-', $string); // Replaces all spaces with hyphens.
- $string = preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars.
- return preg_replace('/-+/', ' ', $string);
- // Replaces multiple hyphens with single one.
-}
-
-/**
- * Trasforma un testo in un nome di id valido per l'html (sostituisce gli spazi).
- *
- * @param unknown $text
- *
- * @deprecated 2.3
- *
- * @return mixed
- */
-function makeid($text)
-{
- trigger_error(tr('Funzione deprecata!'), E_USER_DEPRECATED);
-
- $text = strtolower($text);
- $text = str_replace(' ', '_', $text);
-
- return $text;
-}
-
-/**
- * Sostituisce la sequenza " con " (da HTMLEntities a visualizzabile).
- *
- * @deprecated 2.3
- *
- * @param unknown $text
- */
-function read($text)
-{
- trigger_error(tr('Funzione deprecata!'), E_USER_DEPRECATED);
-
- return str_replace('"', '"', $text);
-}
-
-/**
- * Legge l'ora nel formato hh:mm.
- *
- * @param unknown $time
- *
- * @deprecated 2.3
- *
- * @return string
- */
-function readTime($time)
-{
- trigger_error(tr('Funzione deprecata!'), E_USER_DEPRECATED);
-
- $vtime = explode(':', $time);
- $hour = $vtime[0];
- $minutes = $vtime[1];
- $seconds = $vtime[2];
-
- return "$hour:$minutes";
-}
-
-/**
- * Crea il formato della data modificanto il campo di input (JQuery Datepicker).
- *
- * @deprecated 2.3
- *
- * @param string $data
- */
-function saveDate($data)
-{
- trigger_error(tr('Funzione deprecata!'), E_USER_DEPRECATED);
-
- if (empty($data)) {
- return '0000-00-00';
- } else {
- $date = explode('/', $data);
- $date = $date[1].'/'.$date[0].'/'.$date[2];
- $date = strtotime($date);
-
- return date('Y-m-d', $date);
- }
-}
-
-/**
- * Crea il formato della data leggendo dal database (?) e modificanto il campo di input (JQuery Datepicker).
- *
- * @deprecated 2.3
- *
- * @param unknown $data
- */
-function readDate($data)
-{
- trigger_error(tr('Funzione deprecata!'), E_USER_DEPRECATED);
-
- $date = $data;
- if ($date != '') {
- $date = explode('-', $date);
- $date = $date[2].'/'.$date[1].'/'.$date[0];
- }
-
- return $date;
-}
-
-/**
- * Genera una porzione di codice html a partire da una stringa nei seguenti formati:
- * campo generico:
- * {[ "type": "text", "required": 1, "value": "$idintervento$" ]}.
- *
- * campo di testo normale e non modificabile
- * {[ "type": "span", "value": "$testo$" ]}
- *
- * {[ "type": "select", "required": 1, "values": "query='SELECT id, descrizione FROM co_contratti WHERE idanagrafica=$idanagrafica$"', "value": "$idcontratto$" ]}
- *
- * Il parametro $records contiene il risultato della query di selezione record per fare i vari replace delle variabili racchiuse tra $$ nel template
- *
- * @deprecated 2.3
- */
-function build_html_element($string)
-{
- global $docroot;
- global $records;
-
- trigger_error(tr('Funzione deprecata!'), E_USER_DEPRECATED);
-
- $dbo = \Database::getConnection();
-
- preg_match('"value(.+?)\] \}"', $string, $script_value);
- if (count($script_value) != 0) {
- $script_value = $script_value[0];
- $string = str_replace($script_value, 'value": "', $string);
- } else {
- unset($script_value);
- }
-
- $string = str_replace(['{[', ']}'], ['{', '}'], $string);
-
- $json = json_decode($string, true);
-
- // Conversione delle variabili con i campi di database ($records)
- if (!empty($json)) {
- foreach ($json as $key => $value) {
- if ($value == '') {
- unset($json[$key]);
- }
- // Sostituzione delle variabili $nome$ col relativo valore da database
- elseif (preg_match_all('/\$([a-z0-9\_]+)\$/i', $json[$key], $m)) {
- for ($i = 0; $i < sizeof($m[0]); ++$i) {
- $json[$key] = str_replace($m[0][$i], $records[0][$m[1][$i]], $json[$key]);
- }
- }
- }
- }
-
- $attributi = [];
- $attributi[] = 'class';
-
- $valori = [];
- $valori['class'] = [];
- $valori['class'][] = 'form-control';
-
- if (!empty($json['class'])) {
- $classes = explode(' ', $json['class']);
- foreach ($classes as $class) {
- if ($class != '') {
- $valori['class'][] = $class;
- }
- }
- }
-
- // Attributi particolari
- if (!empty($json['disabled'])) {
- $attributi[] = 'disabled';
- }
- if (!empty($json['readonly'])) {
- $attributi[] = 'readonly';
- }
- if (!empty($json['required'])) {
- $attributi[] = 'required';
- }
- if (!empty($json['maxlength'])) {
- $attributi[] = 'maxlength';
- $valori['maxlength'] = $json['maxlength'];
- }
-
- $value = (isset($json['value'])) ? $json['value'] : '';
- $element_id = (!empty($json['id'])) ? $json['id'] : str_replace(['[', ']'], '', $json['name']);
-
- // Rimuove caratteri indesiderati relativi al nome
- $attributi[] = 'id';
- $valori['id'] = $element_id;
- $attributi[] = 'name';
- $valori['name'] = $json['name'];
-
- // Label
- if (in_array('required', $attributi)) {
- $json['label'] .= '*';
- }
-
- $html = '
-
';
-
- if (!empty($script_value)) {
- $html .= '
- ';
- }
-
- if (!empty($json['extra'])) {
- $attributi[] = trim($json['extra']);
- }
-
- if (!empty($value)) {
- $attributi[] = 'value';
- $valori['value'] = $value;
- }
-
- $result = [];
- foreach ($attributi as $attributo) {
- $valore = $attributo;
- if (isset($valori[$attributo]) && $valori[$attributo] != '') {
- if (is_array($valori[$attributo])) {
- $valore .= '="'.implode(' ', $valori[$attributo]).'"';
- } else {
- $valore .= '="'.$valori[$attributo].'"';
- }
- }
- $result[] = $valore;
- }
-
- $html = str_replace('|attr|', implode(' ', $result), $html);
-
- if (!empty($json['help'])) {
- $html .= '
- '.$json['help'].'';
- }
-
- return $html;
-}
-
-/**
- * Legge i plugins collegati al modulo in oggetto e restituisce un array nella forma:
- * $plugins[ 'nome_modulo' ] = '/path/dello/script/script.php';.
- *
- * @deprecated 2.3
- */
-function get_plugins($module, $position)
-{
- global $plugins;
- global $dbo;
- global $docroot;
-
- trigger_error(tr('Funzione deprecata!'), E_USER_DEPRECATED);
-
- $q = 'SELECT * FROM zz_plugins WHERE idmodule_to=( SELECT id FROM zz_modules WHERE name="'.$module.'" ) AND position="'.$position.'"';
- $rs = $dbo->fetchArray($q);
-
- for ($i = 0; $i < sizeof($rs); ++$i) {
- // Lettura modulo di origine
- $q2 = "SELECT parent, directory FROM zz_modules WHERE id='".$rs[$i]['idmodule_from']."' AND `enabled`=1";
- $rs2 = $dbo->fetchArray($q2);
- $module_dir = $rs2[0]['directory'];
-
- // Se c'è un altro livello sopra, devo mettere come prefisso anche quella directory
- if ($rs2[0]['parent'] != '0') {
- $q3 = "SELECT directory FROM zz_modules WHERE id='".$rs2[0]['parent']."' AND `enabled`=1";
- $rs3 = $dbo->fetchArray($q3);
- $module_dir = $rs3[0]['directory'].'/'.$module_dir;
- }
-
- if (sizeof($rs2) > 0) {
- $script = $docroot.'/modules/'.$module_dir.'/plugins/'.$rs[$i]['script'];
- $plugins[$rs[$i]['name']] = $script;
- }
- }
-
- return $plugins;
-}
-
-/**
- * Restituisce l'estensione del file.
- *
- * @deprecated 2.3
- *
- * @param string $filename
- */
-function estensione_del_file($filename)
-{
- trigger_error(tr('Funzione deprecata!'), E_USER_DEPRECATED);
-
- return pathinfo($filename, PATHINFO_EXTENSION);
-}
-/**
- * @deprecated 2.3
- */
-class HTMLHelper
-{
- /**
- * Function to read parameter from GET or POST request, escape it and filter it by its rules:
- * string every string
- * int integer value
- * decimal decimal value (force conversion of commas into points: 0,01 become 0.01).
- */
- public function form($param, $method = 'get', $escape = true, $rule = 'text')
- {
- trigger_error(tr('Classe deprecata!'), E_USER_DEPRECATED);
-
- // method
- if ($method == 'get') {
- $value = $_GET[$param];
- } else {
- $value = $_POST[$param];
- }
-
- if ($value == 'undefined') {
- $value = '';
- }
-
- // Rules filter
- if ($rule == 'int') {
- $value = intval($value);
- } elseif ($rule == 'decimal') {
- $value = str_replace(',', '.', $value);
- } elseif ($rule == 'date') {
- if (preg_match("/^([0-9]{2})\/([0-9]{2})\/([0-9]{4})$/", $value, $m)) {
- $value = $m[3].'-'.$m[2].'-'.$m[1];
- } elseif (preg_match("/^([0-9]{1})\-([0-9]{2})\-([0-9]{2})$/", $value, $m)) {
- $value = $m[1].'-'.$m[2].'-'.$m[3];
- }
- }
-
- if ($escape) {
- $value = str_replace(['\\', "\x00", "\n", "\r", "'", '"', "\x1a"], ['\\\\', '\\0', '\\n', '\\r', "\'", '\"', '\\Z'], $value);
- }
-
- return $value;
- }
-}
-
-/**
- * Funzione per creare la tabella di visualizzazione file e upload nuovo file
- * $nome_modulo string Nome del modulo di cui si sta creando il form e la visualizzazione
- * $url_params string Parametri da mettere nell'URL oltre a quelli per l'upload (ad esempio "&idintervento=$idintervento"
- * per evitare che vengano persi dei parametri per il submit del form
- * $id_record string Id esterno, per sapere un determinato file di che record fa parte oltre che di che modulo.
- *
- * @deprecated 2.3
- */
-function filelist_and_upload($id_module, $id_record, $label = 'Nuovo allegato:', $showpanel = true)
-{
- trigger_error(tr('Procedura deprecata!'), E_USER_DEPRECATED);
-
- global $docroot;
- global $rootdir;
-
- $dbo = \Database::getConnection();
-
- echo '
-';
-
- if (!empty($showpanel)) {
- echo '
-
-
-
'.tr('Allegati').'
-
-
';
- }
-
- // Visualizzo l'elenco di file già caricati
- $rs = $dbo->fetchArray('SELECT * FROM zz_files WHERE id_module='.prepare($id_module).' AND id_record='.prepare($id_record));
-
- if (!empty($rs)) {
- echo '
-
-
- '.tr('Descrizione').' |
- '.tr('File').' |
- '.tr('Data').' |
- # |
-
';
-
- foreach ($rs as $r) {
- echo '
-
- '.$r['nome'].' |
-
- '.$r['filename'].'
- |
- '.\Translator::timestampToLocale($r['created_at']).' |
-
-
-
-
- |
-
';
- }
-
- echo '
-
';
- }
-
- echo '
-
-
';
-
- // Form per l'upload di un nuovo file
-
- echo '
-
'.$label.'
-
-
- {[ "type": "text", "placeholder": "'.tr('Nome').'", "name": "nome_allegato", "required": 1 ]}
-
-
-
- {[ "type": "file", "placeholder": "'.tr('Nome').'", "name": "blob", "required": 1 ]}
-
-
-
-
-
-
';
-
- echo '
- ';
-
- if (!empty($showpanel)) {
- echo '
-
-
';
- }
-}
-
-/**
- * Rimuove ricorsivamente una directory.
- *
- * @param unknown $path
- *
- * @deprecated 2.3
- *
- * @return bool
- */
-function deltree($path)
-{
- trigger_error(tr('Funzione deprecata!'), E_USER_DEPRECATED);
-
- $path = realpath($path);
-
- if (is_dir($path)) {
- $files = scandir($path);
- if (empty($files)) {
- $files = [];
- }
-
- foreach ($files as $file) {
- if ($file != '.' && $file != '..') {
- deltree($path.DIRECTORY_SEPARATOR.$file);
- }
- }
-
- return rmdir($path);
- } elseif (file_exists($path)) {
- return unlink($path);
- }
-}
-
-/**
- * Carica gli script JavaScript inclusi nell'array indicato.
- *
- * @deprecated 2.3
- *
- * @param array $jscript_modules_array
- */
-function loadJscriptModules($array)
-{
- trigger_error(tr('Funzione deprecata!'), E_USER_DEPRECATED);
-
- $result = '';
-
- foreach ($array as $js) {
- $result .= '
-';
- }
-
- echo $result;
-}
-
-/**
- * Carica i file di stile CSS inclusi nell'array indicato.
- *
- * @deprecated 2.3
- *
- * @param array $css_modules_array
- */
-function loadCSSModules($array)
-{
- trigger_error(tr('Funzione deprecata!'), E_USER_DEPRECATED);
-
- $result = '';
-
- foreach ($array as $css) {
- if (is_array($css)) {
- $result .= '
-';
- } else {
- $result .= '
-';
- }
- }
-
- echo $result;
-}
-
/**
* Individua il codice successivo.
*
diff --git a/lib/functions.php b/lib/functions.php
index 2dc522dc5..a8968bcd7 100644
--- a/lib/functions.php
+++ b/lib/functions.php
@@ -518,122 +518,6 @@ function slashes($string)
return str_replace(['\\', '/'], DIRECTORY_SEPARATOR, $string);
}
-/**
- * Prepara il parametro inserito per l'inserimento in una query SQL.
- * Attenzione: protezione di base contro SQL Injection.
- *
- * @param string $parameter
- *
- * @since 2.3
- *
- * @return mixed
- */
-function prepare($parameter)
-{
- return p($parameter);
-}
-
-/**
- * Prepara il parametro inserito per l'inserimento in una query SQL.
- * Attenzione: protezione di base contro SQL Injection.
- *
- * @param string $parameter
- *
- * @since 2.3
- *
- * @return mixed
- */
-function p($parameter)
-{
- return Database::getConnection()->prepare($parameter);
-}
-
-/**
- * Restituisce la traduzione del messaggio inserito.
- *
- * @param string $string
- * @param array $parameters
- * @param string $domain
- * @param string $locale
- *
- * @since 2.3
- *
- * @return string
- */
-function tr($string, $parameters = [], $operations = [])
-{
- return Translator::translate($string, $parameters, $operations);
-}
-
-// Retrocompatibilità (con la funzione gettext)
-if (!function_exists('_')) {
- function _($string, $parameters = [], $operations = [])
- {
- return tr($string, $parameters, $operations);
- }
-}
-
-/**
- * Legge il valore di un'impostazione dalla tabella zz_settings.
- * Se descrizione = 1 e il tipo è 'query=' mi restituisce il valore del campo descrizione della query.
- *
- * @param string $name
- * @param string $sezione
- * @param string $descrizione
- *
- * @return mixed
- */
-function get_var($nome, $sezione = null, $descrizione = false, $again = false)
-{
- return Settings::get($nome, $sezione, $descrizione, $again);
-}
-
-/**
- * Restituisce il contenuto sanitarizzato dell'input dell'utente.
- *
- * @param string $param Nome del parametro
- * @param string $rule Regola di filtraggio
- * @param string $method Posizione del parametro (post o get)
- *
- * @since 2.3
- *
- * @return string
- */
-function filter($param, $method = null, $raw = false)
-{
- return Filter::getValue($param, $method, $raw);
-}
-
-/**
- * Restituisce il contenuto sanitarizzato dell'input dell'utente.
- *
- * @param string $param Nome del parametro
- * @param string $rule Regola di filtraggio
- *
- * @since 2.3
- *
- * @return string
- */
-function post($param, $raw = false)
-{
- return Filter::getValue($param, 'post', $raw);
-}
-
-/**
- * Restituisce il contenuto sanitarizzato dell'input dell'utente.
- *
- * @param string $param Nome del parametro
- * @param string $rule Regola di filtraggio
- *
- * @since 2.3
- *
- * @return string
- */
-function get($param, $raw = false)
-{
- return Filter::getValue($param, 'get', $raw);
-}
-
/**
* Controlla se è in corso una richiesta AJAX generata dal progetto.
*
diff --git a/lib/helpers.php b/lib/helpers.php
new file mode 100644
index 000000000..0c9099a1e
--- /dev/null
+++ b/lib/helpers.php
@@ -0,0 +1,166 @@
+prepare($parameter);
+}
+
+/**
+ * Restituisce il contenuto sanitarizzato dell'input dell'utente.
+ *
+ * @param string $param Nome del parametro
+ * @param string $method Posizione del parametro (post o get)
+ * @param bool $raw Restituire il valore non formattato
+ *
+ * @since 2.3
+ *
+ * @return string
+ */
+function filter($param, $method = null, $raw = false)
+{
+ return \Filter::getValue($param, $method, $raw);
+}
+
+/**
+ * Restituisce il contenuto sanitarizzato dell'input dell'utente.
+ *
+ * @param string $param Nome del parametro
+ * @param bool $raw Restituire il valore non formattato
+ *
+ * @since 2.3
+ *
+ * @return string
+ */
+function post($param, $raw = false)
+{
+ return \Filter::getValue($param, 'post', $raw);
+}
+
+/**
+ * Restituisce il contenuto sanitarizzato dell'input dell'utente.
+ *
+ * @param string $param Nome del parametro
+ * @param bool $raw Restituire il valore non formattato
+ *
+ * @since 2.3
+ *
+ * @return string
+ */
+function get($param, $raw = false)
+{
+ return \Filter::getValue($param, 'get', $raw);
+}
+
+/**
+ * Legge il valore di un'impostazione dalla tabella zz_settings.
+ * Se descrizione = 1 e il tipo è 'query=' mi restituisce il valore del campo descrizione della query.
+ *
+ * @param string $name
+ * @param string $sezione
+ * @param string $descrizione
+ *
+ * @return mixed
+ */
+function get_var($nome, $sezione = null, $descrizione = false, $again = false)
+{
+ return \Settings::get($nome, $sezione, $descrizione, $again);
+}
+
+/**
+ * Restituisce l'oggetto dedicato alla gestione dei messaggi per l'utente.
+ *
+ * @return \Util\Messages
+ */
+function flash()
+{
+ return \App::flash();
+}
+
+/**
+ * Restituisce l'oggetto dedicato alla gestione dell'autenticazione degli utente.
+ *
+ * @return \Auth
+ */
+function auth()
+{
+ return \Auth::getInstance();
+}
+
+/**
+ * Restituisce l'oggetto dedicato alla gestione della traduzione del progetto.
+ *
+ * @return \Translator
+ */
+function trans()
+{
+ return \Translator::getInstance();
+}
+
+/**
+ * Restituisce l'oggetto dedicato alla gestione della conversione di numeri e date.
+ *
+ * @return \Intl\Formatter
+ */
+function formatter()
+{
+ return \Translator::getFormatter();
+}
+
+/**
+ * Restituisce la traduzione del messaggio inserito.
+ *
+ * @param string $string
+ * @param array $parameters
+ * @param string $operations
+ *
+ * @since 2.3
+ *
+ * @return string
+ */
+function tr($string, $parameters = [], $operations = [])
+{
+ return \Translator::translate($string, $parameters, $operations);
+}
+
+// Retrocompatibilità (con la funzione gettext)
+if (!function_exists('_')) {
+ function _($string, $parameters = [], $operations = [])
+ {
+ return tr($string, $parameters, $operations);
+ }
+}
diff --git a/lib/util.php b/lib/util.php
index fd3686934..59373016c 100644
--- a/lib/util.php
+++ b/lib/util.php
@@ -197,7 +197,7 @@ if (!function_exists('download')) {
// Required for some browsers
if (ini_get('zlib.output_compression')) {
- @ini_set('zlib.output_compression', 'Off');
+ ini_set('zlib.output_compression', 'Off');
}
header('Pragma: public');
diff --git a/update/2_4_2.sql b/update/2_4_2.sql
index 55e84371a..8777cb9f0 100644
--- a/update/2_4_2.sql
+++ b/update/2_4_2.sql
@@ -1,12 +1,11 @@
-- Gestione documentale
- CREATE TABLE IF NOT EXISTS `zz_documenti_categorie` (
+CREATE TABLE IF NOT EXISTS `zz_documenti_categorie` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`descrizione` varchar(255) NOT NULL,
`deleted` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
-
CREATE TABLE IF NOT EXISTS `zz_documenti` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`idcategoria` int(11) NOT NULL,
@@ -15,16 +14,16 @@ CREATE TABLE IF NOT EXISTS `zz_documenti` (
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
-
INSERT INTO `zz_documenti_categorie` (`id`, `descrizione`, `deleted`) VALUES
-(NULL, 'Documenti società', 0),
+(NULL, 'Documenti società', 0),
(NULL, 'Contratti assunzione personale', 0);
-- Innesto modulo gestione documentale
INSERT INTO `zz_modules` (`id`, `name`, `title`, `directory`, `options`, `options2`, `icon`, `version`, `compatibility`, `order`, `parent`, `default`, `enabled`) VALUES (NULL, 'Gestione documentale', 'Gestione documentale', 'gestione_documentale', '{ "main_query": [ { "type": "table", "fields": "Categoria, Nome, Data", "query": "SELECT id,(SELECT descrizione FROM zz_documenti_categorie WHERE zz_documenti_categorie.id = idcategoria) AS Categoria, zz_documenti.nome AS Nome, DATE_FORMAT( zz_documenti.`data`, ''%d/%m/%Y'' ) AS `Data` FROM zz_documenti WHERE `data` >= ''|period_start|'' AND `data` <= ''|period_end|'' HAVING 1=1"} ]}', '', 'fa fa-file-text-o', '2.4', '2.4', '1', NULL, '1', '1');
-- Innesto modulo categorie documenti
-INSERT INTO `zz_modules` (`id`, `name`, `title`, `directory`, `options`, `options2`, `icon`, `version`, `compatibility`, `order`, `parent`, `default`, `enabled`) VALUES (NULL, 'Categorie documenti', 'Categorie documenti', 'categorie_documenti', '{ "main_query": [ { "type": "table", "fields": "Descrizione", "query": "SELECT zz_documenti_categorie.`descrizione`as Descrizione, zz_documenti_categorie.`id`as id FROM zz_documenti_categorie WHERE deleted = 0 HAVING 1=1"} ]}', '', 'fa fa-file-text-o', '2.4', '2.4', '1', (SELECT `id` FROM `zz_modules` m WHERE `name` = 'Gestione documentale'), '1', '1');
+INSERT INTO `zz_modules` (`id`, `name`, `title`, `directory`, `options`, `options2`, `icon`, `version`, `compatibility`, `order`, `parent`, `default`, `enabled`) VALUES (NULL, 'Categorie documenti', 'Categorie documenti', 'categorie_documenti', '{ "main_query": [ { "type": "table", "fields": "Descrizione", "query": "SELECT zz_documenti_categorie.`descrizione`as Descrizione, zz_documenti_categorie.`id`as id FROM zz_documenti_categorie WHERE deleted = 0 HAVING 1=1"} ]}', '', 'fa fa-file-text-o', '2.4', '2.4', '1', NULL, '1', '1');
+UPDATE `zz_modules` `t1` INNER JOIN `zz_modules` `t2` ON (`t1`.`name` = 'Categorie documenti' AND `t2`.`name` = 'Gestione documentale') SET `t1`.`parent` = `t2`.`id`;
-- Fatturazione elettronica
ALTER TABLE `an_nazioni` ADD `name` VARCHAR(255);