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$", "extra": "" ]}. * * 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$", "extra": "" ]} * * 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 * * @return bool */ function deltree($path) { trigger_error('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); } }