From 8e6013497574de6303b3f0541d385717f827c488 Mon Sep 17 00:00:00 2001 From: Thomas Zilio Date: Sun, 8 Jul 2018 17:39:20 +0200 Subject: [PATCH] Separazione helper Separazione degli helper in un file apposito (lib/helpers.php), rimozione funzioni deprecate nella versione 2.3. Risoluzione bug di aggiornamento. --- composer.json | 1 + lib/deprecated.php | 1102 -------------------------------------------- lib/functions.php | 116 ----- lib/helpers.php | 166 +++++++ lib/util.php | 2 +- update/2_4_2.sql | 9 +- 6 files changed, 172 insertions(+), 1224 deletions(-) create mode 100644 lib/helpers.php 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($json['no-label'])) { - $html .= ' - '; - } - - if (isset($json['icon-before']) || isset($json['icon-after'])) { - $html .= ' -
'; - } - - if (isset($json['icon-before'])) { - $html .= ' - '.$json['icon-before'].''; - } - - switch ($json['type']) { - case 'text': - case 'date': - case 'password': - if ($json['type'] == 'date') { - $attributi[] = 'data-inputmask'; - $valori['data-inputmask'] = "'alias': 'dd/mm/yyyy'"; - $valori['class'][] = 'datepicker'; - - if ($value == '0000-00-00 00:00:00' || $value == '0000-00-00') { - $value = ''; - } else { - $value = date('d/m/Y', strtotime($value)); - } - - if ($value == '01/01/1970') { - $value = ''; - } - } - - $tipo = ($json['type'] == 'password') ? $json['type'] : $tipo = 'text'; - $attributi[] = 'type'; - $valori['type'] = $tipo; - - if (!empty($json['placeholder'])) { - $attributi[] = 'placeholder'; - $valori['placeholder'] = $json['placeholder']; - } - - $html .= ' - '; - - break; - - case 'select': - $values = isset($json['values']) ? $json['values'] : ''; - - if (!empty($json['multiple'])) { - $attributi[] = 'multiple'; - } - - if (!empty($json['ajax-source'])) { - $valori['class'][] = 'superselectajax'; - $attributi[] = 'data-source'; - $valori['data-source'] = $json['ajax-source']; - } else { - $valori['class'][] = 'superselect'; - } - - $placeholder = isset($json['placeholder']) ? $json['placeholder'] : "- Seleziona un'opzione -"; - if (strpos($value, 'Seleziona') !== false) { - $placeholder = $value; - $value = ''; - } - - $html .= ' - da query - elseif (preg_match_all('/^query=(.+?)$/', $values, $m)) { - $q = $m[1][0]; - $q = str_replace(['', '?>'], ['".', '."', '."'], $q); - eval('$query = "'.$q.'";'); - $rs = $dbo->fetchArray($query); - - if (empty($json['multiple'])) { - $html .= ' - '; - } - - // se non presente, carica eventuale valore predefinito - if (($value == '0' || $value == '') && isset($json['valore_predefinito']) && $json['valore_predefinito'] != '') { - $value = get_var($json['valore_predefinito']); - } - - $prev = ''; - for ($i = 0; $i < sizeof($rs); ++$i) { - if (isset($rs[$i]['optgroup'])) { - if ($prev != $rs[$i]['optgroup']) { - $html .= ' - '; - $prev = $rs[$i]['optgroup']; - } - $rs[$i]['descrizione'] = '   '.$rs[$i]['descrizione']; - } - $sub_attr = []; - if (in_array($rs[$i]['id'], explode(',', $value)) || ($rs[$i]['id'] == $value)) { - $sub_attr[] = 'selected="true"'; - } - if (!empty($rs[$i]['_bgcolor_'])) { - $sub_attr[] = 'style="background:'.$rs[$i]['_bgcolor_'].'; color:'.color_inverse($rs[$i]['_bgcolor_'].';"'); - } - - // Leggo ulteriori campi oltre a id e descrizione per inserirli nell'option nella forma "data-nomecampo1", "data-nomecampo2", ecc - foreach ($rs[$i] as $k => $v) { - if ($k != 'id' && $k != 'descrizione' && $k != 'optgroup') { - $sub_attr[] = 'data-'.$k.'="'.$v.'"'; - } - } - - $html .= ' - '; - } - } - - // Generazione '; - - if (in_array('disabled', $attributi) || in_array('readonly', $attributi)) { - $html .= ' - '; - } - - if (in_array('readonly', $attributi)) { - $html .= ' - '; - } - - break; - - case 'textarea': - $html .= ' - '; - unset($value); - break; - - case 'checkbox': - if ($value == 1) { - $attributi[] = 'checked'; - $valori['checked'] = 'true'; - $value = 'on'; - } - - if (in_array('readonly', $attributi)) { - $attributi[] = 'disabled'; - } - - $attributi[] = 'type'; - $valori['type'] = 'checkbox'; - - $placeholder = (isset($json['placeholder'])) ? $json['placeholder'] : $json['label']; - - $html .= ' -
- - '; - if (in_array('readonly', $attributi)) { - $html .= ' - '; - } - $html .= ' - - -
'; - - unset($valori['class'][0]); - unset($value); - - break; - - case 'image': - unset($valori['class'][0]); - // Form upload - if ($value == '') { - $attributi[] = 'type'; - $valori['type'] = 'file'; - $html .= ' - '; - } - // Visualizzazione immagine e spunta per cancellazione - else { - $valori['class'][] = 'img-thumbnail'; - $valori['class'][] = 'img-responsive'; - $html .= ' -
- - - '; - } - - unset($value); - - break; - - default: - $html .= ' '.$value."\n"; - break; - } - - if (isset($json['icon-after'])) { - $html .= ' - '.$json['icon-after'].''; - } - - if (isset($json['icon-before']) || isset($json['icon-after'])) { - $html .= ' -
'; - } - - $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 ' - - - - - - - '; - - foreach ($rs as $r) { - echo ' - - - - - - '; - } - - echo ' -
'.tr('Descrizione').''.tr('File').''.tr('Data').'#
'.$r['nome'].' - '.$r['filename'].' - '.\Translator::timestampToLocale($r['created_at']).' - - - -
'; - } - - 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);