Non puoi selezionare più di 25 argomenti
Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
1942 righe
69 KiB
1942 righe
69 KiB
<?php |
|
|
|
/* |
|
* To change this license header, choose License Headers in Project Properties. |
|
* To change this template file, choose Tools | Templates |
|
* and open the template in the editor. |
|
*/ |
|
|
|
/** |
|
* Description of Utils |
|
* |
|
* @author Anselmo |
|
*/ |
|
class Utils { |
|
|
|
public static function getModevariabili($variabili) { |
|
$var = $variabili; |
|
if ($var == "") { |
|
$var = NULL; |
|
} else { |
|
$var = $var; |
|
} |
|
return $var; |
|
} |
|
|
|
public static function getModevariabiliNumber($variabili) { |
|
$var = $variabili; |
|
if ($var == "") { |
|
$var = 0; |
|
} else { |
|
$var = $var; |
|
} |
|
return $var; |
|
} |
|
|
|
public static function getModevariabiliDate($variabili) { |
|
$var = $variabili; |
|
if (empty($var)) { |
|
$periodo = NULL; |
|
} else { |
|
$periodo = strtotime($var); |
|
$periodo = date("Y-m-d", $periodo); |
|
} |
|
return $periodo; |
|
} |
|
|
|
public static function is_base64_encoded($data) { |
|
// if (preg_match('%^[a-zA-Z0-9/+]*={0,2}$%', $data)) { |
|
if ($data === base64_encode(base64_decode($data))) { |
|
return TRUE; |
|
} else { |
|
return FALSE; |
|
} |
|
} |
|
|
|
/* get value of field from Request */ |
|
|
|
public static function getBaseCoded($field = '') { |
|
$response = ''; |
|
if ($field != '') { |
|
if (isset($_REQUEST[$field]) && self::is_base64_encoded($_REQUEST[$field])) { |
|
$response = base64_decode($_REQUEST[$field]); |
|
} else { |
|
$response = $_REQUEST[$field]; |
|
} |
|
} |
|
return $response; |
|
} |
|
|
|
/* field is value to filter */ |
|
|
|
public static function getValueBaseCoded($field = '') { |
|
$response = ''; |
|
if ($field != '' && self::is_base64_encoded($field)) { |
|
$response = base64_decode($field); |
|
} else { |
|
$response = $field; |
|
} |
|
return $response; |
|
} |
|
|
|
//nel file controlli.php |
|
|
|
/** |
|
* Funzione dell'invio dell'email dopo la registrazione dell'utente |
|
* @param type $email |
|
* @param type $username |
|
* @param type $password |
|
* @param type $codiceGenerato |
|
* @return int |
|
*/ |
|
public static function invioMailRegUtente($email, $username, $password, $codiceGenerato) { |
|
|
|
if (!INVIO_EMAIL) |
|
return 1; |
|
|
|
$testo = '<b>Benvenuto nel portale ' . APP_NAME . '</b><br> |
|
Ecco di tuoi dati di accesso<br> |
|
<table style="width: 65%;"> |
|
<tbody> |
|
<tr> |
|
<td width="20%">Link di accesso:</td> |
|
<td width="80%"> <b>' . BASE_HTTP . '</b></td> |
|
</tr> |
|
<tr> |
|
<td width="20%">Username:</td> |
|
<td width="80%"> <b>' . $username . '</b></td> |
|
</tr> |
|
<tr> |
|
<td width="20%">Password:</td> |
|
<td width="80%"><b>' . $password . '</b></td> |
|
</tr> |
|
<tr> |
|
<td width="20%"> Codice Da inserire:</td> |
|
<td width="80%"><b>' . $codiceGenerato . '</b></td> |
|
</tr> |
|
</tbody> |
|
</table> |
|
<br> |
|
<table style="width: 100%;"> |
|
<tbody> |
|
<tr> |
|
<td> </td> |
|
<td><img src="' . BASE_HTTP . 'app-assets/images/logo/logoFV.png"></td> |
|
<td> </td> |
|
</tr> |
|
</tbody> |
|
</table> |
|
'; |
|
|
|
date_default_timezone_set('Etc/UTC'); |
|
$mail = new PHPMailer; |
|
$mail->IsSMTP(); |
|
$mail->CharSet = "UTF-8"; |
|
$mail->SMTPDebug = $GLOBALS['EMAIL_CONFIG']['DEBUG']; |
|
$mail->Debugoutput = 'html'; |
|
$mail->Host = $GLOBALS['EMAIL_CONFIG']['HOST']; |
|
$mail->Port = $GLOBALS['EMAIL_CONFIG']['PORT']; |
|
$mail->SMTPSecure = $GLOBALS['EMAIL_CONFIG']['SMTP_SECURE']; |
|
$mail->SMTPAuth = $GLOBALS['EMAIL_CONFIG']['SMTP_AUTH']; |
|
$mail->Username = $GLOBALS['EMAIL_CONFIG']['USERNAME']; |
|
$mail->Password = $GLOBALS['EMAIL_CONFIG']['PASSWORD']; |
|
$mail->setFrom($GLOBALS['EMAIL_CONFIG']['FROM'], $GLOBALS['EMAIL_CONFIG']['FROM_DESC']); |
|
$mail->addAddress($email, $email); |
|
$mail->Subject = $GLOBALS['EMAIL_CONFIG']['SUBJECT']; |
|
$mail->msgHTML($testo); |
|
$mail->AltBody = $testo; |
|
if (!$mail->send()) { |
|
$value = "Mailer Error: " . $mail->ErrorInfo; |
|
Utils::print_array($value); |
|
$value = 0; |
|
} else { |
|
$value = 1; |
|
} |
|
return $value; |
|
} |
|
|
|
/** |
|
* Funzione per l'invio delle email dopo la richiesta di reset password dell'utente |
|
* @param type $email |
|
* @param type $username |
|
* @param type $password |
|
* @return int |
|
*/ |
|
public static function invioMailResetPswUtente($email, $username, $password) { |
|
|
|
if (!INVIO_EMAIL) |
|
return 1; |
|
|
|
$testo = '<b>' . APP_NAME . '</b><br> |
|
La password è stata modificata<br> |
|
di seguito i dati di accesso<br> |
|
<table style="width: 65%;"> |
|
<tbody> |
|
<tr> |
|
<td width="20%">Link di accesso:</td> |
|
<td width="80%"> <b>' . BASE_HTTP . '</b></td> |
|
</tr> |
|
<tr> |
|
<td width="20%">Username:</td> |
|
<td width="80%"> <b>' . $username . '</b></td> |
|
</tr> |
|
<tr> |
|
<td width="20%">Password:</td> |
|
<td width="80%"><b>' . $password . '</b></td> |
|
</tr> |
|
</tbody> |
|
</table> |
|
<br> |
|
<table style="width: 100%;"> |
|
<tbody> |
|
<tr> |
|
<td> </td> |
|
<td><img src="' . BASE_HTTP . 'app-assets/images/logo/logoFV.png"></td> |
|
<td> </td> |
|
</tr> |
|
</tbody> |
|
</table> |
|
'; |
|
|
|
date_default_timezone_set('Etc/UTC'); |
|
$mail = new PHPMailer; |
|
$mail->IsSMTP(); |
|
$mail->CharSet = "UTF-8"; |
|
$mail->SMTPDebug = $GLOBALS['EMAIL_CONFIG']['DEBUG']; |
|
$mail->Debugoutput = 'html'; |
|
$mail->Host = $GLOBALS['EMAIL_CONFIG']['HOST']; |
|
$mail->Port = $GLOBALS['EMAIL_CONFIG']['PORT']; |
|
$mail->SMTPSecure = $GLOBALS['EMAIL_CONFIG']['SMTP_SECURE']; |
|
$mail->SMTPAuth = $GLOBALS['EMAIL_CONFIG']['SMTP_AUTH']; |
|
$mail->Username = $GLOBALS['EMAIL_CONFIG']['USERNAME']; |
|
$mail->Password = $GLOBALS['EMAIL_CONFIG']['PASSWORD']; |
|
$mail->setFrom($GLOBALS['EMAIL_CONFIG']['FROM'], $GLOBALS['EMAIL_CONFIG']['FROM_DESC']); |
|
$mail->addAddress($email, $email); |
|
$mail->Subject = $GLOBALS['EMAIL_CONFIG']['SUBJECT']; |
|
$mail->msgHTML($testo); |
|
$mail->AltBody = $testo; |
|
if (!$mail->send()) { |
|
$value = "Mailer Error: " . $mail->ErrorInfo; |
|
Utils::print_array($value); |
|
$value = 0; |
|
} else { |
|
$value = 1; |
|
} |
|
return $value; |
|
} |
|
|
|
/** |
|
* Funzione invio email per la registrazione di un nuovo operatore |
|
* @global type $GLOBALS |
|
* @param type $email |
|
* @param type $username |
|
* @param type $password |
|
* @return int |
|
*/ |
|
public static function invioMailRegOperatore($email, $username, $password) { |
|
global $GLOBALS; |
|
|
|
if (!INVIO_EMAIL) { |
|
$value['esito'] = 1; |
|
return $value; |
|
} |
|
|
|
$testo = '<b>Benvenuto nel portale ' . APP_NAME . '</b><br> |
|
Ecco di tuoi dati di accesso<br> |
|
<table style="width: 65%;"> |
|
<tbody> |
|
<tr> |
|
<td width="20%">Link di accesso:</td> |
|
<td width="80%"> <b>' . BASE_HTTP . 'admin/</b></td> |
|
</tr> |
|
<tr> |
|
<td width="20%">Username:</td> |
|
<td width="80%"> <b>' . $username . '</b></td> |
|
</tr> |
|
<tr> |
|
<td width="20%">Password:</td> |
|
<td width="80%"><b>' . $password . '</b></td> |
|
</tr> |
|
</tbody> |
|
</table> |
|
<br> |
|
<table style="width: 100%;"> |
|
<tbody> |
|
<tr> |
|
<td> </td> |
|
<td><img src="' . BASE_HTTP . 'app-assets/images/logo/logoFV.png"></td> |
|
<td> </td> |
|
</tr> |
|
</tbody> |
|
</table> |
|
'; |
|
date_default_timezone_set('Etc/UTC'); |
|
$mail = new PHPMailer; |
|
$mail->IsSMTP(); |
|
$mail->CharSet = "UTF-8"; |
|
$mail->SMTPDebug = $GLOBALS['EMAIL_CONFIG']['DEBUG']; |
|
$mail->Debugoutput = 'html'; |
|
$mail->Host = $GLOBALS['EMAIL_CONFIG']['HOST']; |
|
$mail->Port = $GLOBALS['EMAIL_CONFIG']['PORT']; |
|
$mail->SMTPSecure = $GLOBALS['EMAIL_CONFIG']['SMTP_SECURE']; |
|
$mail->SMTPAuth = $GLOBALS['EMAIL_CONFIG']['SMTP_AUTH']; |
|
$mail->Username = $GLOBALS['EMAIL_CONFIG']['USERNAME']; |
|
$mail->Password = $GLOBALS['EMAIL_CONFIG']['PASSWORD']; |
|
$mail->setFrom($GLOBALS['EMAIL_CONFIG']['FROM'], $GLOBALS['EMAIL_CONFIG']['FROM_DESC']); |
|
$mail->addAddress($email, $email); |
|
$mail->Subject = $GLOBALS['EMAIL_CONFIG']['SUBJECT']; |
|
$mail->msgHTML($testo); |
|
$mail->AltBody = $testo; |
|
if (!$mail->send()) { |
|
$value['descrizioneErrore'] = "Mailer Error: " . $mail->ErrorInfo; |
|
$value['esito'] = 0; |
|
} else { |
|
$value['esito'] = 1; |
|
} |
|
return $value; |
|
} |
|
|
|
/** |
|
* Funzione dell'invio della mei l dopo la richiesta di recupero password |
|
* @param type $email |
|
* @param type $username |
|
* @param type $password |
|
* @return int |
|
*/ |
|
public static function invioMailResetPswOperatore($email, $username, $password) { |
|
|
|
if (!INVIO_EMAIL) |
|
return 1; |
|
|
|
$testo = '<b>' . APP_NAME . '</b><br> |
|
La password è stata modificata<br> |
|
di seguito i dati di accesso<br> |
|
<table style="width: 65%;"> |
|
<tbody> |
|
<tr> |
|
<td width="20%">Link di accesso:</td> |
|
<td width="80%"> <b>' . BASE_HTTP . 'admin/</b></td> |
|
</tr> |
|
<tr> |
|
<td width="20%">Username:</td> |
|
<td width="80%"> <b>' . $username . '</b></td> |
|
</tr> |
|
<tr> |
|
<td width="20%">Password:</td> |
|
<td width="80%"><b>' . $password . '</b></td> |
|
</tr> |
|
</tbody> |
|
</table> |
|
<br> |
|
<table style="width: 100%;"> |
|
<tbody> |
|
<tr> |
|
<td> </td> |
|
<td><img src="' . BASE_HTTP . 'app-assets/images/logo/logoFV.png"></td> |
|
<td> </td> |
|
</tr> |
|
</tbody> |
|
</table> |
|
'; |
|
|
|
date_default_timezone_set('Etc/UTC'); |
|
$mail = new PHPMailer; |
|
$mail->IsSMTP(); |
|
$mail->CharSet = "UTF-8"; |
|
$mail->SMTPDebug = $GLOBALS['EMAIL_CONFIG']['DEBUG']; |
|
$mail->Debugoutput = 'html'; |
|
$mail->Host = $GLOBALS['EMAIL_CONFIG']['HOST']; |
|
$mail->Port = $GLOBALS['EMAIL_CONFIG']['PORT']; |
|
$mail->SMTPSecure = $GLOBALS['EMAIL_CONFIG']['SMTP_SECURE']; |
|
$mail->SMTPAuth = $GLOBALS['EMAIL_CONFIG']['SMTP_AUTH']; |
|
$mail->Username = $GLOBALS['EMAIL_CONFIG']['USERNAME']; |
|
$mail->Password = $GLOBALS['EMAIL_CONFIG']['PASSWORD']; |
|
$mail->setFrom($GLOBALS['EMAIL_CONFIG']['FROM'], $GLOBALS['EMAIL_CONFIG']['FROM_DESC']); |
|
$mail->addAddress($email, $email); |
|
$mail->Subject = $GLOBALS['EMAIL_CONFIG']['SUBJECT']; |
|
$mail->msgHTML($testo); |
|
$mail->AltBody = $testo; |
|
if (!$mail->send()) { |
|
$value = "Mailer Error: " . $mail->ErrorInfo; |
|
Utils::print_array($value); |
|
$value = 0; |
|
} else { |
|
$value = 1; |
|
} |
|
return $value; |
|
} |
|
|
|
public static function isNull($input) { |
|
if (!empty($input)) { |
|
return $input; |
|
} else { |
|
|
|
return NULL; |
|
} |
|
} |
|
|
|
public static function isNullData($input) { |
|
|
|
if (!empty($input)) { |
|
return $input; |
|
} else { |
|
return "STR"; |
|
} |
|
} |
|
|
|
public static function generateCodice($length = 8) { |
|
|
|
$password = ''; |
|
|
|
$possibleChars = '0123456789'; |
|
|
|
$i = 0; |
|
|
|
while ($i < $length) { |
|
|
|
$char = substr($possibleChars, mt_rand(0, strlen($possibleChars) - 1), 1); |
|
|
|
if (!strstr($password, $char)) { |
|
$password .= $char; |
|
$i++; |
|
} |
|
} |
|
|
|
return $password; |
|
} |
|
|
|
public static function generatePassword($length = 8) { |
|
|
|
$password = ''; |
|
|
|
$possibleChars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@'; |
|
|
|
$i = 0; |
|
|
|
while ($i < $length) { |
|
|
|
$char = substr($possibleChars, mt_rand(0, strlen($possibleChars) - 1), 1); |
|
|
|
if (!strstr($password, $char)) { |
|
$password .= $char; |
|
$i++; |
|
} |
|
} |
|
|
|
return $password; |
|
} |
|
|
|
public static function calcolaGiorni($scadenza, $data) { |
|
$startTimeStamp = strtotime($data); |
|
$endTimeStamp = strtotime($scadenza); |
|
$timeDiff = abs($endTimeStamp - $startTimeStamp); |
|
$numberDays = $timeDiff / 86400; // 86400 seconds in one day |
|
// and you might want to convert to integer |
|
$numberDays = intval($numberDays); |
|
|
|
return $numberDays; |
|
} |
|
|
|
public static function convertiProfilo($ruolo) { |
|
$d = ""; |
|
switch ($ruolo) { |
|
case 1: $d = "SUPER ADMIN"; |
|
break; |
|
case 2: $d = "ADMIN"; |
|
break; |
|
case 3: $d = "OPERATORE"; |
|
break; |
|
} |
|
return $d; |
|
} |
|
|
|
public static function time12to24($time = null) { |
|
$result = ''; |
|
if ($time != null) { |
|
$ora_ampm = explode(' ', $time); |
|
$ora = explode(':', $ora_ampm[0]); |
|
if ($ora_ampm[1] == 'PM') { |
|
$ora[0] = $ora[0] + 12; |
|
} |
|
$result = $ora[0] . ':' . $ora[1]; |
|
} |
|
return $result; |
|
} |
|
|
|
public static function is_date($date) { |
|
$date = str_replace(array('\'', '-', '.', ','), '/', $date); |
|
$date = explode('/', $date); |
|
|
|
if (count($date) == 1 // No tokens |
|
and is_numeric($date[0]) |
|
and $date[0] < 20991231 and ( checkdate(substr($date[0], 4, 2) |
|
, substr($date[0], 6, 2) |
|
, substr($date[0], 0, 4))) |
|
) { |
|
return true; |
|
} |
|
|
|
if (count($date) == 3 |
|
and is_numeric($date[0]) |
|
and is_numeric($date[1]) |
|
and is_numeric($date[2]) and ( checkdate($date[0], $date[1], $date[2]) //mmddyyyy |
|
or checkdate($date[1], $date[0], $date[2]) //ddmmyyyy |
|
or checkdate($date[1], $date[2], $date[0])) //yyyymmdd |
|
) { |
|
return true; |
|
} |
|
|
|
return false; |
|
} |
|
|
|
public static function convertiData($originalDate) { |
|
$newDate = date("d/m/Y", strtotime($originalDate)); |
|
return $newDate; |
|
} |
|
|
|
public static function convertiDataConOra($originalDate) { |
|
$newDate = date("d/m/Y H:i:s", strtotime($originalDate)); |
|
return $newDate; |
|
} |
|
|
|
public static function convertiDataUSA($originalDate) { |
|
list ($giorno, $mese, $anno) = split('[/.-]', $originalDate); |
|
return $anno . "/" . $mese . "/" . $giorno; |
|
} |
|
|
|
public static function getMyIp() { |
|
$ip = getenv('HTTP_CLIENT_IP') ?: getenv('HTTP_X_FORWARDED_FOR') ?: getenv('HTTP_X_FORWARDED') ?: getenv('HTTP_FORWARDED_FOR') ?: getenv('HTTP_FORWARDED') ?: getenv('REMOTE_ADDR'); |
|
return $ip; |
|
} |
|
|
|
public static function addLog($db, $id_utente, $username, $ruolo, $evento) { |
|
|
|
//myIp |
|
$mio_ip = getMyIp(); |
|
$evento = addslashes($evento); |
|
return mysqli_query($db, "INSERT INTO log_sistema (ID_UTENTE,NOME_OPERATORE,RUOLO,INDIRIZZO_IP,EVENTO) VALUES($id_utente,'$username',$ruolo,'$mio_ip','$evento')"); |
|
} |
|
|
|
public static function isIspettore() { |
|
return $_SESSION['id_gruppo'] == GRUPPO_ISPETTORE_SANITARIO; |
|
} |
|
|
|
public static function getFilterProvinciaAuthLogged() { |
|
$provincia = ''; |
|
if ($_SESSION['id_gruppo'] == GRUPPO_ISPETTORE_SANITARIO || $_SESSION['id_gruppo'] == GRUPPO_CAPO_PROVINCIALE) { |
|
$provincia = strtolower($_SESSION['provincia_ap']); |
|
} |
|
return $provincia; |
|
} |
|
|
|
public static function getProvFromString($prov = '') { |
|
$response = ''; |
|
if ($prov != '') { |
|
$var = explode("(", $prov); |
|
$te = $var[1]; |
|
$te = explode(")", $te); |
|
$response = $te[0]; |
|
} |
|
return $response; |
|
} |
|
|
|
|
|
|
|
public static function checkLogin() { |
|
if (!isset($_SESSION['ID'])) { |
|
header("Location: " . BASE_HTTP . "login_spid.php"); |
|
} |
|
} |
|
|
|
/** |
|
* Controllo se ho impostata la sessione per poter accedere ai servizi |
|
* @return boolean |
|
*/ |
|
public static function canAccess() { |
|
$access = false; |
|
if (isset($_SESSION['ID']) && intval($_SESSION['ID']) > 0) { |
|
$access = true; |
|
} |
|
return $access; |
|
} |
|
|
|
public static function getUTF8($element = '') { |
|
$response = $element; |
|
if (!is_array($element)) { |
|
$response = utf8_encode($element); |
|
} |
|
return $response; |
|
} |
|
|
|
/** |
|
* Inizializza le proprieta' di un oggetto con i valori di un array associativo |
|
* |
|
* @param mixed $obj L'oggetto da inizializzare, deve essere passato by-ref |
|
* @param array $row L'array associativo da cui recuperare i valori |
|
* @param mixed $callbackOnExists (Facoltativo) Metodo dell'oggetto da richiamare quando si deve assegnare il valore alla proprieta' |
|
*/ |
|
public static function FillObjectFromRow(&$obj, $row, $stripSlashes = false, $callbackOnExists = false) { |
|
$props = get_class_vars(get_class($obj)); |
|
//echo "<pre>".print_r($props, true)."</pre>"; |
|
foreach ($props as $prop => $value) { |
|
if ($row != null && array_key_exists($prop, $row)) { |
|
if (!$callbackOnExists) |
|
$obj->$prop = ($stripSlashes ? stripslashes($row[$prop]) : $row[$prop]); |
|
else |
|
$obj->$callbackOnExists($prop, utf8_encode($row[$prop])); |
|
} |
|
} |
|
} |
|
|
|
public static function prepareKeyArray(&$src) { |
|
if (is_array($src)) { |
|
foreach ($src as $k => $v) { |
|
$kn = str_replace('-', '', $k); |
|
$newsrc[$kn] = Utils::prepareKeyArray($v); |
|
} |
|
} else { |
|
$newsrc = $src; |
|
} |
|
|
|
//Utils::print_array($newsrc); |
|
return $newsrc; |
|
} |
|
|
|
// Funzione per Le notifiche |
|
// Settaggi |
|
// visibile_utente=0 L'utente non vede la notifica (AZIENDA) |
|
// visibile_utente=1 // visibile per utente |
|
// lettura_utente=0 l'utente non ha ancora visualizzato |
|
// lettura_utente=1 l'utente ha visualizzato la notifica |
|
|
|
function setNotifica($descrizione = null, $id_ditta = 0, $id_operatore = 0, $visibile = 1, $lettura_utente = 0, $id_destinatario = 0, $id_laboratorio = 0) { |
|
global $con, $LoggedAccount; |
|
$date = date("Y-m-d"); |
|
$queryNotifica = $con->prepare("INSERT INTO notifica(descrizione, id_operatore, id_utente,data_creazione,visibile_utente,lettura_utente,id_destinatario, id_laboratorio)VALUES (:descrizione,:id_operatore,:id_utente,:data_creazione,:visibile_utente,:lettura_utente,:id_destinatario, :id_laboratorio)"); |
|
$queryNotifica->bindParam(":descrizione", $descrizione); |
|
$queryNotifica->bindParam(":id_operatore", $LoggedAccount->id); |
|
$queryNotifica->bindParam(":id_utente", $id_ditta); |
|
$queryNotifica->bindParam(":data_creazione", $date); |
|
$queryNotifica->bindParam(":visibile_utente", $visibile); |
|
$queryNotifica->bindParam(":lettura_utente", $lettura_utente); |
|
$queryNotifica->bindParam(":id_destinatario", $id_destinatario); |
|
$queryNotifica->bindParam(":id_laboratorio", $id_laboratorio); |
|
try { |
|
$return = $queryNotifica->execute(); |
|
$return['esito'] = 1; |
|
} catch (Exception $exc) { |
|
$return['esito'] = -999; |
|
$return['descrizioneErrore'] = $exc->getMessage(); |
|
} |
|
return $return; |
|
} |
|
|
|
public static function GetAge($dataNascita) { |
|
if ($dataNascita == "" || $dataNascita == '00/00/0000' || $dataNascita == '0000-00-00') |
|
return 0; |
|
// Ricavo giorno, mese e anno |
|
list($giorno, $mese, $anno) = explode("/", Utils::FormatDate($dataNascita, DATE_FORMAT_ITA)); |
|
// Calcolo anni |
|
$eta = date('Y') - $anno; |
|
// Tolgo 1 se ad esempio sono X anni e 11 mesi |
|
if (date('m') < $mese) |
|
$eta--; |
|
// Stessa cosa per i giorni |
|
elseif (date('m') == $mese && date('d') < $giorno) |
|
$eta--; |
|
return $eta; |
|
} |
|
|
|
public static function GetValidName($oldName) { |
|
$newName = ""; |
|
$name = $oldName; |
|
for ($i = 0; $i < strlen($name); $i++) { |
|
$char = substr($name, $i, 1); |
|
if (!preg_match("/^[a-zA-Z0-9]$/", $char)) |
|
$char = "_"; |
|
$newName .= $char; |
|
} |
|
return $newName; |
|
} |
|
|
|
/** |
|
* |
|
* @param type $oldName |
|
* @param type $newExt |
|
* @param type $arrayExt estensioni da controllare di secondo livello nel filename es: array('.pdf','.doc','.zip') |
|
* @return type |
|
*/ |
|
public static function GetValidFilename($oldName, $newExt = "", $arrayExt = array('.pdf')) { |
|
$newName = ""; |
|
$name = $oldName; |
|
$ext = self::GetFilenameExtension($name); |
|
if ($ext != "") { |
|
$name = substr($name, 0, strlen($name) - strlen($ext)); |
|
$ext2 = self::GetFilenameExtension($name); |
|
if (in_array($ext2, $arrayExt)) { |
|
$name = substr($name, 0, strlen($name) - strlen($ext2)); |
|
$ext = $ext2 . $ext; |
|
} |
|
} |
|
for ($i = 0; $i < strlen($name); $i++) { |
|
$char = substr($name, $i, 1); |
|
if (!preg_match("/^[a-zA-Z0-9-]$/", $char)) |
|
$char = "_"; |
|
$newName .= $char; |
|
} |
|
$newName = str_replace(" ", "_", $newName); |
|
$newName .= ($newExt != "" ? $newExt : $ext); |
|
return $newName; |
|
} |
|
|
|
public static function GetFilenameExtension($filename) { |
|
$i = strrpos($filename, "."); |
|
if ($i === false) |
|
return ""; |
|
return substr($filename, $i); |
|
} |
|
|
|
public static function InsertArrayIndex($array, $new_element, $index) { |
|
/* * * get the start of the array ** */ |
|
$start = array_slice($array, 0, $index); |
|
/* * * get the end of the array ** */ |
|
$end = array_slice($array, $index); |
|
/* * * add the new element to the array ** */ |
|
$start[] = $new_element; |
|
/* * * glue them back together and return ** */ |
|
return array_merge($start, $end); |
|
} |
|
|
|
public static function EncodeJavascript($text, $escapeChar = '"') { |
|
if ($escapeChar == '"') |
|
return str_replace($escapeChar, '\\"', $text); |
|
elseif ($escapeChar == '"') |
|
return str_replace($escapeChar, "\\'", $text); |
|
return $text; |
|
} |
|
|
|
/** |
|
$interval can be: |
|
yyyy - Number of full years |
|
q - Number of full quarters |
|
m - Number of full months |
|
y - Difference between day numbers (eg 1st Jan 2004 is "1", the first day. 2nd Feb 2003 is "33". The datediff is "-32".) |
|
d - Number of full days |
|
w - Number of full weekdays |
|
ww - Number of full weeks |
|
h - Number of full hours |
|
n - Number of full minutes |
|
s - Number of full seconds (default) |
|
*/ |
|
public static function DateDiff($interval, $datefrom, $dateto, $using_timestamps = false, $return_absolute_diff = true) { |
|
if (!$using_timestamps) { |
|
$datefrom = strtotime(str_replace("/", "-", $datefrom), 0); |
|
$dateto = strtotime(str_replace("/", "-", $dateto), 0); |
|
} |
|
|
|
$difference = $dateto - $datefrom; // Difference in seconds |
|
switch ($interval) { |
|
case 'yyyy': // Number of full years |
|
$years_difference = floor($difference / 31536000); |
|
if (mktime(date("H", $datefrom), date("i", $datefrom), date("s", $datefrom), date("n", $datefrom), date("j", $datefrom), date("Y", $datefrom) + $years_difference) > $dateto) { |
|
$years_difference--; |
|
} |
|
if (mktime(date("H", $dateto), date("i", $dateto), date("s", $dateto), date("n", $dateto), date("j", $dateto), date("Y", $dateto) - ($years_difference + 1)) > $datefrom) { |
|
$years_difference++; |
|
} |
|
$datediff = $years_difference; |
|
break; |
|
case "q": // Number of full quarters |
|
$quarters_difference = floor($difference / 8035200); |
|
while (mktime(date("H", $datefrom), date("i", $datefrom), date("s", $datefrom), date("n", $datefrom) + ($quarters_difference * 3), date("j", $dateto), date("Y", $datefrom)) < $dateto) { |
|
$months_difference++; |
|
} |
|
$quarters_difference--; |
|
$datediff = $quarters_difference; |
|
break; |
|
case "m": // Number of full months |
|
$months_difference = floor($difference / 2678400); |
|
while (mktime(date("H", $datefrom), date("i", $datefrom), date("s", $datefrom), date("n", $datefrom) + ($months_difference), date("j", $dateto), date("Y", $datefrom)) < $dateto) { |
|
$months_difference++; |
|
} |
|
$months_difference--; |
|
$datediff = $months_difference; |
|
break; |
|
case 'y': // Difference between day numbers |
|
$datediff = date("z", $dateto) - date("z", $datefrom); |
|
break; |
|
case "d": // Number of full days |
|
$datediff = floor($difference / 86400); |
|
break; |
|
case "w": // Number of full weekdays |
|
$days_difference = floor($difference / 86400); |
|
$weeks_difference = floor($days_difference / 7); // Complete weeks |
|
$first_day = date("w", $datefrom); |
|
$days_remainder = floor($days_difference % 7); |
|
$odd_days = $first_day + $days_remainder; // Do we have a Saturday or Sunday in the remainder? |
|
if ($odd_days > 7) { |
|
// Sunday |
|
$days_remainder--; |
|
} |
|
if ($odd_days > 6) { |
|
// Saturday |
|
$days_remainder--; |
|
} |
|
$datediff = ($weeks_difference * 5) + $days_remainder; |
|
break; |
|
case "ww": // Number of full weeks |
|
$datediff = floor($difference / 604800); |
|
break; |
|
case "h": // Number of full hours |
|
$datediff = floor($difference / 3600); |
|
break; |
|
case "n": // Number of full minutes |
|
$datediff = floor($difference / 60); |
|
break; |
|
default: // Number of full seconds (default) |
|
$datediff = $difference; |
|
break; |
|
} |
|
return $return_absolute_diff ? abs($datediff) : $datediff; |
|
} |
|
|
|
function GetTimestamp($data, $add_days = 0, $debug = false) { |
|
|
|
if (strpos($data, " ") === false) { |
|
$a_data = $data; |
|
$a_time = "00:00"; |
|
} else { |
|
$a_data = substr($data, 0, strpos($data, " ")); |
|
$a_time = substr($data, strpos($data, " ") + 1, 8); |
|
} |
|
|
|
$a_data = explode("/", str_replace("-", "/", $a_data)); |
|
$a_time = explode(":", str_replace(".", ":", $a_time)); |
|
if (strlen($a_data[0]) == 4) { |
|
// Arriva in formato ISO |
|
$timestamp = mktime($a_time[0], $a_time[1], $a_time[2], $a_data[1], $add_days + $a_data[2], $a_data[0]); |
|
} else { |
|
// Arriva in formato ITA |
|
$timestamp = mktime($a_time[0], $a_time[1], $a_time[2], $a_data[1], $add_days + $a_data[0], $a_data[2]); |
|
} |
|
|
|
return $timestamp; |
|
} |
|
|
|
/** |
|
* Data una stringa, ne restituisce la data corrispondente nel formato richiesto. |
|
* |
|
* @param string $data La stringa contenente la data in formato italiano |
|
* @param mixed $format Deve essere DATE_FORMAT_ITA oppure DATE_FORMAT_ISO |
|
* @return string |
|
*/ |
|
public static function FormatDate($data = null, $format = DATE_FORMAT_ITA) { |
|
if ($data == '') |
|
return ""; |
|
if ($data == null) |
|
$data = date("d/m/Y"); |
|
$len = strlen($data); |
|
if ($len != 10 && $len != 16 && $len != 19) |
|
return $data; |
|
if ($len == 10) { |
|
list($d1, $d2, $d3) = explode("/", str_replace("-", "/", $data)); |
|
if (strlen($d1) == 4) { |
|
$year = $d1; |
|
$month = $d2; |
|
$day = $d3; |
|
} else { |
|
$day = $d1; |
|
$month = $d2; |
|
$year = $d3; |
|
} |
|
//echo "F: ".$format; exit; |
|
switch ($format) { |
|
case DATE_FORMAT_ITA: |
|
return sprintf("%s/%s/%s", $day, $month, $year); |
|
case DATE_FORMAT_ISO: |
|
return sprintf("%s-%s-%s", $year, $month, $day); |
|
case DATE_FORMAT_ITA_WITHOUT_SEP: |
|
return sprintf("%s%s%s", $day, $month, $year); |
|
default: |
|
$timestamp = mktime(0, 0, 0, $month, $day, $year); |
|
return strftime($format, $timestamp); |
|
} |
|
} else { |
|
$array = explode(" ", $data); |
|
$date = $array[0]; |
|
$ora = $array[1]; |
|
list($d1, $d2, $d3) = explode("/", str_replace("-", "/", $date)); |
|
list($hour, $minute) = explode(":", str_replace(".", ":", $ora)); |
|
if (strlen($d1) == 4) { |
|
$year = $d1; |
|
$month = $d2; |
|
$day = $d3; |
|
} else { |
|
$day = $d1; |
|
$month = $d2; |
|
$year = $d3; |
|
} |
|
switch ($format) { |
|
case DATE_FORMAT_ITA: |
|
return sprintf("%s/%s/%s %s:%s:00", $day, $month, $year, $hour, $minute); |
|
case DATE_FORMAT_ISO: |
|
return sprintf("%s-%s-%s %s:%s:00", $year, $month, $day, $hour, $minute); |
|
case DATE_FORMAT_ITA_WITHOUT_SEP: |
|
return sprintf("%s%s%s", $day, $month, $year, $hour, $minute); |
|
default: |
|
$timestamp = mktime(0, 0, 0, $month, $day, $year); |
|
return strftime($format, $timestamp); |
|
} |
|
} |
|
} |
|
|
|
/** |
|
* Redireziona il browser all'indirizzo specificato |
|
* |
|
* @param string $url Indirizzo verso cui redirezionare |
|
*/ |
|
public static function RedirectTo($url) { |
|
ob_clean(); |
|
header("Location: " . $url); |
|
exit(); |
|
} |
|
|
|
/** |
|
* Restituisce un array associativo da un oggetto recuperandone le proprieta' |
|
* |
|
* @param mixed $obj Oggetto da cui ricavare l'array |
|
* @return array Array associativo con le proprieta' e relativi valori |
|
* |
|
*/ |
|
public static function ObjectToArray($obj) { |
|
$array = array(); |
|
$props = get_class_vars(get_class($obj)); |
|
foreach ($props as $prop => $value) { |
|
$array[$prop] = $obj->$prop; |
|
} |
|
return $array; |
|
} |
|
|
|
public static function CreateRecursiveTree(&$tree, $a) { |
|
foreach ($a as $k => $v) { |
|
if (!array_key_exists($k, $tree)) { |
|
$tree[$k] = $v; |
|
} else { |
|
if (is_array($v)) { |
|
Utils::CreateRecursiveTree($tree[$k], $v); |
|
} |
|
} |
|
} |
|
} |
|
|
|
public static function array_values_recursive($array) { |
|
$temp = array(); |
|
foreach ($array as $key => $value) { |
|
|
|
if (is_numeric($key)) { |
|
$temp[] = is_array($value) ? Utils::array_values_recursive($value) : $value; |
|
} else { |
|
$temp[$key] = is_array($value) ? Utils::array_values_recursive($value) : $value; |
|
} |
|
} |
|
return $temp; |
|
} |
|
|
|
public static function GetInizioSettimana($Data) { |
|
$myDate = strtotime($Data); |
|
$giornoSettimana = date("w", $myDate); |
|
$differenzaGiorni = $giornoSettimana - 1; |
|
$giornoCheFu = date("Y-m-d", strtotime($Data . "-" . $differenzaGiorni . " days")); |
|
return $giornoCheFu; |
|
} |
|
|
|
public static function GetFineSettimana($Data) { |
|
//$myDate = strtotime($Data); |
|
$giornoSettimana = date("w", $Data); |
|
$giornoCheSara = date("Y-m-d", strtotime($Data . "+" . $giornoSettimana . " days")); |
|
return $giornoCheSara; |
|
} |
|
|
|
public static function AddTime($Start, $Adding, $unit, $diff = "+") { |
|
|
|
$Start = strtotime($Start); |
|
switch ($unit) { |
|
case "hours": |
|
$etime = strtotime("$diff $Adding hours", $Start); |
|
return date('H:i:s', $etime); |
|
case "minutes": |
|
$etime = strtotime("$diff $Adding minutes", $Start); |
|
return date('H:i:s', $etime); |
|
case "seconds": |
|
$etime = strtotime("$diff $Adding seconds", $Start); |
|
return date('H:i:s', $etime); |
|
} |
|
} |
|
|
|
public static function GetGiornoSettimana($data, $all = false) { |
|
if ($data == "") |
|
return ""; |
|
$giorni = array('Domenica', 'Lunedì', 'Martedì', 'Mercoledì', |
|
'Giovedì', 'Venerdì', 'Sabato'); |
|
$data = Utils::FormatDate($data, DATE_FORMAT_ISO); |
|
if ($all) |
|
return $giorni[date('w', strtotime($data))]; |
|
else |
|
return substr($giorni[date('w', strtotime($data))], 0, 3); |
|
} |
|
|
|
public static function pdo_debugStrParams($stmt) { |
|
ob_start(); |
|
$stmt->debugDumpParams(); |
|
$r = ob_get_contents(); |
|
ob_end_clean(); |
|
return $r; |
|
} |
|
|
|
public static function get_filter_string64_get($valore) { |
|
$options = array('options' => array('default' => NULL)); |
|
$valid = filter_input(INPUT_GET, $valore, FILTER_SANITIZE_STRING, $options); |
|
return base64_decode($valid); // Default will return |
|
} |
|
|
|
public static function get_filter_string64($valore) { |
|
$options = array('options' => array('default' => NULL)); |
|
$valid = filter_input(INPUT_POST, $valore, FILTER_SANITIZE_STRING, $options); |
|
return base64_decode($valid); // Default will return |
|
} |
|
|
|
public static function get_filter_int($valore) { |
|
$options = array('options' => array('default' => NULL)); |
|
$valid = filter_input(INPUT_POST, $valore, FILTER_VALIDATE_INT, $options); |
|
if ($valid == "") { |
|
$valid = NULL; |
|
} |
|
return $valid; // Default will return |
|
} |
|
|
|
/** |
|
* Filtra gli input stringa $_POST |
|
* @param type $valore; se $post è true $valore deve essere il nome della chiave POST altrimenti deve essere la variabile |
|
* @param type $post; true = gestisce il INPUT_POST; false gestice il valore della variabile $valore |
|
* @return type |
|
*/ |
|
public static function get_filter_string($valore, $array = false) { |
|
$options = array('options' => array('default' => NULL)); |
|
if (!$array) { |
|
$valid = filter_input(INPUT_POST, $valore, FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES); |
|
} else { |
|
$valid = filter_input(INPUT_POST, $valore, FILTER_SANITIZE_STRING, FILTER_REQUIRE_ARRAY); |
|
} |
|
if ($valid == "") { |
|
$valid = NULL; |
|
} |
|
return $valid; // Default will return |
|
} |
|
|
|
// public static function get_filter_array_string($valore) { |
|
// $options = array($valore => array( |
|
// 'filter'=>FILTER_VALIDATE_REGEXP | FILTER_SANITIZE_STRING, |
|
// 'flags'=>FILTER_FLAG_STRIP_HIGH | FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_BACKTICK, |
|
// 'options'=>array('regexp'=>"/t(.*)/"), |
|
// )); |
|
// $valid = filter_input_array(INPUT_POST, $options); |
|
// if ($valid == "") { |
|
// $valid = NULL; |
|
// } |
|
// return $valid; // Default will return |
|
// } |
|
|
|
/** |
|
* Passando le variabili della classe viene costruita la sintassi della stringa sql (INSERT O UPDATE) |
|
* @param type $table |
|
* @param type $vars |
|
* @param type $varKeyAutoincrement nome colonna chiave autoincrement |
|
* @return string |
|
*/ |
|
public static function prepareQuery($table, $vars, $varKeyAutoincrement = 'ID') { |
|
$sottrai = (array_key_exists($varKeyAutoincrement, $vars) ? 1 : 0); |
|
if ($vars[$varKeyAutoincrement] > 0) { |
|
$sql = "UPDATE " . $table . " SET "; |
|
$i = 0; |
|
foreach ($vars as $k => $v) { |
|
if ($k == $varKeyAutoincrement) |
|
continue; |
|
$i++; |
|
$sql .= $k . "=:" . $k; |
|
if ($i < count($vars) - $sottrai) |
|
$sql .= ", "; |
|
} |
|
$sql .= " WHERE " . $varKeyAutoincrement . " = :" . $varKeyAutoincrement; |
|
} else { |
|
$sql = "INSERT INTO " . $table; |
|
$i = 0; |
|
foreach ($vars as $k => $v) { |
|
if ($k == $varKeyAutoincrement) |
|
continue; |
|
$i++; |
|
if ($i == 1) |
|
$sql .= " ("; |
|
$sql .= $k; |
|
if ($i < count($vars) - $sottrai) |
|
$sql .= ", "; |
|
} |
|
$sql .= ") VALUES ("; |
|
$ii = 0; |
|
foreach ($vars as $k => $v) { |
|
if ($k == $varKeyAutoincrement) |
|
continue; |
|
$ii++; |
|
$sql .= ":" . $k . " "; |
|
if ($ii < count($vars) - $sottrai) |
|
$sql .= ", "; |
|
} |
|
$sql .= ") "; |
|
$sql .= ($get_return ? " RETURNING " . $varKeyAutoincrement : ''); |
|
} |
|
return $sql; |
|
} |
|
|
|
public static function getDateField($key, $value) { |
|
$pos = strpos($key, "data_"); |
|
if (($pos !== false) && ($value == "")) { |
|
$value = NULL; |
|
} |
|
return $value; |
|
} |
|
|
|
public static function getFromReq($param, $defval = null) { |
|
return (isset($_REQUEST[$param]) ? trim($_REQUEST[$param]) : $defval); |
|
} |
|
|
|
public static function checkStringField($string, $defRet = null) { |
|
$ret = $defRet; |
|
if ($string != null && trim($string) != '') { |
|
$ret = $string; |
|
} |
|
return $ret; |
|
} |
|
|
|
public static function recJsonResponse($count, $row, $page, $record) { |
|
$result = array(); |
|
$result[] = array( |
|
'totrec' => $count, |
|
'recs' => $record, |
|
'page' => $page, |
|
'row' => $row |
|
); |
|
return json_encode($result); |
|
} |
|
|
|
public static function saveJsonResponse($response) { |
|
$result = array(); |
|
|
|
$result[] = array( |
|
'status' => $count, |
|
'recs' => $record, |
|
'page' => $page, |
|
'row' => $row |
|
); |
|
return json_encode($result); |
|
} |
|
|
|
public static function print_array($array = array()) { |
|
echo "<PRE>" . print_r($array, true) . "</PRE>"; |
|
} |
|
|
|
public static function print_xml($xml = '') { |
|
echo "<PRE>" . htmlentities($xml) . "</PRE>"; |
|
} |
|
|
|
public static function normalizeGps($gps) { |
|
if (strpos($gps, 'N') !== false) { |
|
$gps = str_ireplace("' ", "", trim($gps)); |
|
$gps = str_ireplace(". ", "", trim($gps)); |
|
$gps = str_ireplace(".", "", trim($gps)); |
|
$gps = str_ireplace("\"", "", trim($gps)); |
|
$gps = str_ireplace("° ", ".", trim($gps)); |
|
$gps = str_ireplace("E", "", trim($gps)); |
|
$coord = explode("N", $gps); |
|
} else { |
|
$coord = explode(", ", $gps); |
|
} |
|
|
|
$lat[0] = trim($coord[0]); |
|
$lat[1] = trim($coord[1]); |
|
|
|
return $lat; |
|
} |
|
|
|
/* |
|
* Funzione per il controllo dei dati ricevuti |
|
*/ |
|
|
|
public static function requestDati($array = "") { |
|
$lunghezza = count($array); |
|
$ritorno = array(); |
|
foreach ($array as $key => $element) { |
|
$nuovoValorNumeric = ""; |
|
$nuovoValorString = ""; |
|
if (is_numeric($element) && substr($element, 0, 1) != '0') { |
|
$nuovoValorNumeric = trim(Utils::get_filter_int_No_Input($element)); |
|
$ritorno[$key] = $nuovoValorNumeric; |
|
} else { |
|
if ($key != "action" && $key != "module" && $key != "password") { |
|
$nuovoValorString = trim((Utils::get_filter_string_No_Input($element))); |
|
$ritorno[$key] = $nuovoValorString; |
|
} |
|
// if ($key == "username" || $key == "USERNAME" || $key=="NOME_UTENTE") { |
|
// $nuovoValorString = trim(strtolower(Utils::get_filter_string_No_Input($element))); |
|
// $ritorno[$key] = $nuovoValorString; |
|
// } |
|
} |
|
} |
|
return $ritorno; |
|
} |
|
|
|
/* |
|
* funzione di invio sms |
|
*/ |
|
|
|
function sendsmsOtp($otp, $numerosms) { |
|
$userSms = $GLOBALS["SMS_CONFIG"]['USERSMS']; |
|
$pwdSms = $GLOBALS["SMS_CONFIG"]['PWDSMS']; |
|
$urlSms = $GLOBALS["SMS_CONFIG"]['URLSMS']; |
|
$senderSms = $GLOBALS["SMS_CONFIG"]['SENDERSMS']; //MAX 10CHAR |
|
$testoSms = "Sipars - OTP :" . $otp; |
|
|
|
$postfields = array( |
|
smsUSER => $userSms, |
|
smsPASSWORD => $pwdSms, |
|
smsTEXT => $testoSms, |
|
smsSENDER => $senderSms, |
|
smsGATEWAY => "M", |
|
// smsNUMBER => '+39' . $numerosms); |
|
smsNUMBER => '+1111111111'); |
|
$ch = curl_init(); |
|
curl_setopt($ch, CURLOPT_URL, $urlSms); |
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); |
|
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); |
|
curl_setopt($ch, CURLOPT_POST, 1); |
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields); |
|
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // On dev server only! |
|
$result = curl_exec($ch); |
|
$xml = htmlentities($result); |
|
$substr = '+Ok'; |
|
if (strpos($xml, $substr) !== false) { |
|
return 1; |
|
} else { |
|
return 0; |
|
} |
|
} |
|
|
|
/* |
|
* Creazione Otp |
|
*/ |
|
|
|
public static function createOtp() { |
|
$otp = substr(number_format(time() * rand(), 0, '', ''), 0, 6); |
|
return $otp; |
|
} |
|
|
|
/* |
|
* Restituisce i valori da una funzione non da input |
|
*/ |
|
|
|
public static function get_filter_int_No_Input($valore) { |
|
$options = array('options' => array('default' => NULL)); |
|
$valid = filter_var($valore, FILTER_VALIDATE_INT, $options); |
|
if ($valid == "") { |
|
$valid = NULL; |
|
} |
|
return $valid; // Default will return |
|
} |
|
|
|
public static function get_filter_string_No_Input($valore) { |
|
$options = array('options' => array('default' => NULL)); |
|
$valid = filter_var($valore, FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES); |
|
if ($valid == "") { |
|
$valid = NULL; |
|
} |
|
return $valid; // Default will return |
|
} |
|
|
|
public static function verifyErroriGoogle($valore) { |
|
$messaggio = ""; |
|
switch ($valore) { |
|
case "EMAIL_EXISTS": |
|
$messaggio = EMAIL_EXISTS; |
|
break; |
|
case "OPERATION_NOT_ALLOWED": |
|
$messaggio = OPERATION_NOT_ALLOWED; |
|
break; |
|
case "TOO_MANY_ATTEMPTS_TRY_LATER": |
|
$messaggio = TOO_MANY_ATTEMPTS_TRY_LATER; |
|
break; |
|
case "EMAIL_NOT_FOUND": |
|
$messaggio = EMAIL_NOT_FOUND; |
|
break; |
|
case "INVALID_PASSWORD": |
|
$messaggio = INVALID_PASSWORD; |
|
break; |
|
case "USER_DISABLED": |
|
$messaggio = USER_DISABLED; |
|
break; |
|
case "INVALID_ID_TOKEN": |
|
$messaggio = INVALID_ID_TOKEN; |
|
break; |
|
case "USER_NOT_FOUND": |
|
$messaggio = USER_NOT_FOUND; |
|
break; |
|
case "WEAK_PASSWORD": |
|
$messaggio = WEAK_PASSWORD; |
|
break; |
|
} |
|
return $messaggio; // Default will return |
|
} |
|
|
|
/* |
|
* |
|
* Registrazione Utente |
|
* |
|
*/ |
|
|
|
public static function signUpFirebase($email = "", $password = "") { |
|
$return = array(); |
|
$endpoint = LINK_FIREBASE . "accounts:signUp?key=" . API_FIREBASE_KEY; |
|
$postvars = json_encode(array( |
|
email => $email, |
|
password => $password, |
|
returnSecureToken => false |
|
)); |
|
$ch = curl_init(); |
|
curl_setopt($ch, CURLOPT_URL, $endpoint); |
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); |
|
curl_setopt($ch, CURLOPT_POST, 1); |
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $postvars); |
|
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); |
|
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json')); |
|
$result = curl_exec($ch); |
|
$arrayresponse = json_decode($result, true); |
|
$http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE); |
|
$curl_errno = curl_errno($ch); |
|
if ($http_status == 200) { |
|
$return['esito'] = 1; |
|
$return['dati'] = $arrayresponse; |
|
} else { |
|
if (is_array($arrayresponse['error'])) { |
|
$return['esito'] = -999; |
|
$return['erroreDescrizione'] = Utils::verifyErroriGoogle($arrayresponse['error']['message']); |
|
} else { |
|
$return['esito'] = -999; |
|
$return['erroreDescrizione'] = "Servizio Momentaneamente Non Disponibile"; |
|
} |
|
} |
|
curl_close($ch); |
|
return ($return); |
|
} |
|
|
|
/* |
|
* |
|
* Invio Mail di Verifica Utente |
|
* |
|
*/ |
|
|
|
public static function sendVerificationMailFirebase($idToken = "") { |
|
$return = array(); |
|
$endpoint = LINK_FIREBASE . "accounts:sendOobCode?key=" . API_FIREBASE_KEY; |
|
$postvars = json_encode(array( |
|
idToken => $idToken, |
|
requestType => "VERIFY_EMAIL", |
|
// returnSecureToken => true |
|
)); |
|
$ch = curl_init(); |
|
curl_setopt($ch, CURLOPT_URL, $endpoint); |
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); |
|
curl_setopt($ch, CURLOPT_POST, 1); |
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $postvars); |
|
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); |
|
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json')); |
|
$result = curl_exec($ch); |
|
$arrayresponse = json_decode($result, true); |
|
$http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE); |
|
$curl_errno = curl_errno($ch); |
|
|
|
// print_r($result); |
|
|
|
if ($http_status == 200) { |
|
$return['esito'] = 1; |
|
$return['dati'] = $arrayresponse; |
|
} else { |
|
if (is_array($arrayresponse['error'])) { |
|
$return['esito'] = -999; |
|
$return['erroreDescrizione'] = Utils::verifyErroriGoogle($arrayresponse['error']['message']); |
|
} else { |
|
$return['esito'] = -999; |
|
$return['erroreDescrizione'] = "Servizio Momentaneamente Non Disponibile"; |
|
} |
|
} |
|
curl_close($ch); |
|
return ($return); |
|
} |
|
|
|
/* |
|
* |
|
* Login Firebase |
|
* "e-mail" ------------------>L'email con cui l'utente sta effettuando l'accesso. |
|
* "password" --------------------> La password per l'account. |
|
* "returnSecureToken" ------------------> booleano Se restituire o meno un ID e aggiornare il token. Dovrebbe essere sempre vero. |
|
*/ |
|
|
|
public static function loginFirebase($email = "", $password = "") { |
|
$return = array(); |
|
$endpoint = LINK_FIREBASE . "accounts:signInWithPassword?key=" . API_FIREBASE_KEY; |
|
$postvars = json_encode(array( |
|
email => $email, |
|
password => $password, |
|
returnSecureToken => true |
|
)); |
|
$ch = curl_init(); |
|
curl_setopt($ch, CURLOPT_URL, $endpoint); |
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); |
|
curl_setopt($ch, CURLOPT_POST, 1); |
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $postvars); |
|
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); |
|
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json')); |
|
$result = curl_exec($ch); |
|
$arrayresponse = json_decode($result, true); |
|
$http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE); |
|
$curl_errno = curl_errno($ch); |
|
if ($http_status == 200) { |
|
$return['esito'] = 1; |
|
$return['dati'] = $arrayresponse; |
|
} else { |
|
if (is_array($arrayresponse['error'])) { |
|
$return['esito'] = -999; |
|
$return['erroreDescrizione'] = Utils::verifyErroriGoogle($arrayresponse['error']['message']); |
|
} else { |
|
$return['esito'] = -999; |
|
$return['erroreDescrizione'] = "Servizio Momentaneamente Non Disponibile"; |
|
} |
|
} |
|
curl_close($ch); |
|
return ($return); |
|
} |
|
|
|
/* |
|
* |
|
* Load Utente Firebase |
|
* IDToken corda Il token ID Firebase dell'account. |
|
* get user data |
|
*/ |
|
|
|
public static function loadUtenteFirebase($IDToken = "") { |
|
$return = array(); |
|
$endpoint = LINK_FIREBASE . "accounts:lookup?key=" . API_FIREBASE_KEY; |
|
$postvars = json_encode(array( |
|
idToken => $IDToken, |
|
)); |
|
$ch = curl_init(); |
|
curl_setopt($ch, CURLOPT_URL, $endpoint); |
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); |
|
curl_setopt($ch, CURLOPT_POST, 1); |
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $postvars); |
|
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); |
|
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json')); |
|
$result = curl_exec($ch); |
|
$arrayresponse = json_decode($result, true); |
|
$http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE); |
|
$curl_errno = curl_errno($ch); |
|
if ($http_status == 200) { |
|
$return['esito'] = 1; |
|
$return['dati'] = $arrayresponse; |
|
} else { |
|
Utils::print_array($arrayresponse); |
|
if (is_array($arrayresponse['error'])) { |
|
$return['esito'] = -999; |
|
$return['erroreDescrizione'] = Utils::verifyErroriGoogle($arrayresponse['error']['message']); |
|
} else { |
|
$return['esito'] = -999; |
|
$return['erroreDescrizione'] = "Servizio Momentaneamente Non Disponibile"; |
|
} |
|
} |
|
curl_close($ch); |
|
return ($return); |
|
} |
|
|
|
public static function deleteUtenteFirebase($IDToken = "") { |
|
$return = array(); |
|
$endpoint = LINK_FIREBASE . "accounts:delete?key=" . API_FIREBASE_KEY; |
|
$postvars = json_encode(array( |
|
idToken => $IDToken, |
|
)); |
|
$ch = curl_init(); |
|
curl_setopt($ch, CURLOPT_URL, $endpoint); |
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); |
|
curl_setopt($ch, CURLOPT_POST, 1); |
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $postvars); |
|
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); |
|
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json')); |
|
$result = curl_exec($ch); |
|
$arrayresponse = json_decode($result, true); |
|
$http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE); |
|
$curl_errno = curl_errno($ch); |
|
if ($http_status == 200) { |
|
$return['esito'] = 1; |
|
$return['dati'] = $arrayresponse; |
|
} else { |
|
if (is_array($arrayresponse['error'])) { |
|
$return['esito'] = -999; |
|
$return['erroreDescrizione'] = Utils::verifyErroriGoogle($arrayresponse['error']['message']); |
|
} else { |
|
$return['esito'] = -999; |
|
$return['erroreDescrizione'] = "Servizio Momentaneamente Non Disponibile"; |
|
} |
|
} |
|
curl_close($ch); |
|
return ($return); |
|
} |
|
|
|
public static function getUserDataFirebase($idToken = "") { |
|
$return = array(); |
|
$endpoint = LINK_FIREBASE . "accounts:lookup?key=" . API_FIREBASE_KEY; |
|
$postvars = json_encode(array( |
|
idToken => $idToken |
|
)); |
|
$ch = curl_init(); |
|
curl_setopt($ch, CURLOPT_URL, $endpoint); |
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); |
|
curl_setopt($ch, CURLOPT_POST, 1); |
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $postvars); |
|
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); |
|
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json')); |
|
$result = curl_exec($ch); |
|
$arrayresponse = json_decode($result, true); |
|
$http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE); |
|
$curl_errno = curl_errno($ch); |
|
if ($http_status == 200) { |
|
$return['esito'] = 1; |
|
$return['dati'] = $arrayresponse; |
|
} else { |
|
if (is_array($arrayresponse['error'])) { |
|
$return['esito'] = -999; |
|
$return['erroreDescrizione'] = Utils::verifyErroriGoogle($arrayresponse['error']['message']); |
|
} else { |
|
$return['esito'] = -999; |
|
$return['erroreDescrizione'] = "Servizio Momentaneamente Non Disponibile"; |
|
} |
|
} |
|
curl_close($ch); |
|
return ($return); |
|
} |
|
|
|
public static function sendPwdResetFirebase($email = "") { |
|
$return = array(); |
|
$endpoint = LINK_FIREBASE . "accounts:sendOobCode?key=" . API_FIREBASE_KEY; |
|
$postvars = json_encode(array( |
|
requestType => "PASSWORD_RESET", |
|
email => $email, |
|
)); |
|
$ch = curl_init(); |
|
curl_setopt($ch, CURLOPT_URL, $endpoint); |
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); |
|
curl_setopt($ch, CURLOPT_POST, 1); |
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $postvars); |
|
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); |
|
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json')); |
|
$result = curl_exec($ch); |
|
$arrayresponse = json_decode($result, true); |
|
$http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE); |
|
$curl_errno = curl_errno($ch); |
|
if ($http_status == 200) { |
|
$return['esito'] = 1; |
|
$return['dati'] = $arrayresponse; |
|
} else { |
|
// Utils::print_array($arrayresponse); |
|
if (is_array($arrayresponse['error'])) { |
|
$return['esito'] = -999; |
|
$return['erroreDescrizione'] = Utils::verifyErroriGoogle($arrayresponse['error']['message']); |
|
} else { |
|
$return['esito'] = -999; |
|
$return['erroreDescrizione'] = "Servizio Momentaneamente Non Disponibile"; |
|
} |
|
} |
|
curl_close($ch); |
|
return ($return); |
|
} |
|
|
|
/* |
|
* Controllo se L'utente ha preso visione dell'accettazione dei dati |
|
*/ |
|
|
|
public static function checkViewConsent() { |
|
global $LoggedAccount; |
|
|
|
if ($_SERVER['REQUEST_URI'] != PERCORSO_CONSENSO) { |
|
if ($LoggedAccount->CONSENSO == 0) { |
|
header("Location:" . BASE_HTTP . 'modules/aziende/consenso.php'); |
|
} |
|
} |
|
} |
|
|
|
public static function dateOracleTimeStamp($data = "") { |
|
$converteddate = DateTime::createFromFormat("d-M-y h.i.s.u A", $data); |
|
$DateTime = $converteddate->format('d-m-Y H:i:s.u'); |
|
return $DateTime; |
|
} |
|
|
|
/** |
|
* Restituisce il contenuto di un tag |
|
* @param type $string |
|
* @param type $tag_open |
|
* @param type $tag_close |
|
* @return type |
|
*/ |
|
public static function tag_contents($string, $tag_open, $tag_close) { |
|
foreach (explode($tag_open, $string) as $key => $value) { |
|
if (strpos($value, $tag_close) !== FALSE) { |
|
$result[] = substr($value, 0, strpos($value, $tag_close)); |
|
} |
|
} |
|
return $result; |
|
} |
|
|
|
/** |
|
* Verifico se il certificato del file firmato p7m è valido e se il codice fiscale del firmatario corrisponde al codice fiscale dell'utente loggato |
|
* @global type $LoggedAccount utente loggato |
|
* @param type $leggoCertificato certificato estratto |
|
* @return string |
|
*/ |
|
public static function verifyCertificato($leggoCertificato) { |
|
global $LoggedAccount; |
|
$return = array(); |
|
$return['esito'] = -999; |
|
$return['descrizioneErrore'] = "Al momento non è possibile completare l'operazione"; |
|
$errori = array(); |
|
$cerco = self::tag_contents($leggoCertificato, "-----BEGIN CERTIFICATE-----", "-----END CERTIFICATE-----"); |
|
foreach ($cerco as $scorrolefirme) { |
|
$datiCertificatoSearch = openssl_x509_parse("-----BEGIN CERTIFICATE-----\n" . trim($scorrolefirme) . "\n-----END CERTIFICATE-----"); |
|
if ($LoggedAccount->CODICE_FISCALE == self::extractCf($datiCertificatoSearch['subject']['serialNumber'])) { |
|
$verifyValidCertificateDate = self::verifyValidCertificateDate($datiCertificatoSearch['validFrom_time_t'], $datiCertificatoSearch['validTo_time_t']); |
|
if ($verifyValidCertificateDate['esito'] == 1) { |
|
$return['esito'] = 1; |
|
$return['descrizioneErrore'] = ""; |
|
} else { |
|
$return['esito'] = -999; |
|
$return['descrizioneErrore'] = "Certificato di firma digitale scaduto"; |
|
} |
|
return $return; |
|
} else { |
|
$return['esito'] = -999; |
|
$return['descrizioneErrore'] = "Errore 1: Il codice fiscale del soggetto firmatario del certificato " |
|
. "di firma, non è il medesimo dell'utente loggato"; |
|
} |
|
} |
|
return $return; |
|
} |
|
|
|
/** |
|
* Estrai li codice fiscale dal tag del certificato p7m |
|
* @param type $codice_fiscale |
|
* @return type |
|
*/ |
|
public static function extractCf($codice_fiscale) { |
|
$cfrevisitedexplode = explode("-", $codice_fiscale); |
|
if ($cfrevisitedexplode[1] == "") { |
|
$cfrevisitedexplode = explode(":", $codice_fiscale); |
|
$cfrevisited = $cfrevisitedexplode[1]; |
|
} else { |
|
$cfrevisited = $cfrevisitedexplode[1]; |
|
} |
|
return $cfrevisited; |
|
} |
|
|
|
/** |
|
* Verifica la scadenza del certificato p7m |
|
* @param type $validFrom |
|
* @param type $validTo |
|
* @return string |
|
*/ |
|
public static function verifyValidCertificateDate($validFrom, $validTo) { |
|
$dataAttuale = time(); |
|
if ($dataAttuale >= $validFrom && $dataAttuale <= $validTo) { |
|
$return['esito'] = 1; |
|
$return['descrizioneErrore'] = ""; |
|
} else { |
|
$return['esito'] = -999; |
|
$return['descrizioneErrore'] = "Certificato Scaduto"; |
|
} |
|
return $return; |
|
} |
|
|
|
public static function verifyCertificatoOLD($datiCertificato = "") { |
|
global $LoggedAccount; |
|
$dataAttuale = time(); |
|
$validFrom = $datiCertificato['validFrom_time_t']; |
|
$validTo = $datiCertificato['validTo_time_t']; |
|
if ($dataAttuale >= $validFrom && $dataAttuale <= $validTo) { |
|
|
|
} else { |
|
$return['esito'] = -999; |
|
$return['descrizioneErrore'] = "Certificato di firma digitale scaduto"; |
|
} |
|
|
|
return $return; |
|
} |
|
|
|
public static function verifyCertificatoRevisore($datiCertificato = "") { |
|
global $LoggedAccount; |
|
$dataAttuale = time(); |
|
$validFrom = $datiCertificato['validFrom_time_t']; |
|
$validTo = $datiCertificato['validTo_time_t']; |
|
if ($dataAttuale >= $validFrom && $dataAttuale <= $validTo) { |
|
$return['esito'] = 1; |
|
} else { |
|
$return['esito'] = -999; |
|
$return['descrizioneErrore'] = "Certificato di firma digitale scaduto"; |
|
} |
|
|
|
return $return; |
|
} |
|
|
|
/** |
|
* Funzione per lo spelling dei numeri |
|
* @param type $num |
|
* @param type $centOOttanta |
|
* @return string |
|
*/ |
|
public static function spell_my_int($num, $centOOttanta = false) { |
|
$num = (int) $num; |
|
$mono = array("", "uno", "due", "tre", "quattro", "cinque", "sei", "sette", "otto", "nove"); |
|
$duplo = array("dieci", "undici", "dodici", "{$mono[3]}dici", "quattordici", "quindici", "sedici", "dicias{$mono[7]}", "dici{$mono[8]}", "dician{$mono[9]}"); |
|
$deca = array("", $duplo[0], "venti", "{$mono[3]}nta", "quaranta", "cinquanta", "sessanta", "settanta", "ottanta", "novanta"); |
|
$cento = array("cent", "cento"); |
|
$mili = array( |
|
0 => array("", "mille", "milione", "miliardo", "bilione", "biliardo"), |
|
1 => array("", "mila", "milioni", "miliardi", "bilioni", "biliardi") |
|
); |
|
$max = pow(10, count($mili[0]) * 3) - 1; |
|
if (!is_numeric($num)) { |
|
return "Non è un numero!"; |
|
} elseif ($num < 0) { |
|
return "Numero negativo!"; |
|
} elseif ($num > $max) { |
|
return "Limite superato!"; |
|
} elseif ($num == 0) { |
|
return "zero"; |
|
} |
|
$result = ""; |
|
$sezione = 0; |
|
$num = (string) $num; |
|
switch (strlen($num) % 3) { |
|
case 1: $num = "00$num"; |
|
break; |
|
case 2: $num = "0$num"; |
|
} |
|
$numlen = strlen($num); |
|
while (($sezione + 1) * 3 <= $numlen) { |
|
$cifra = substr($num, (($numlen - 1) - (($sezione + 1) * 3)) + 1, 3); |
|
$numero = (int) $cifra; |
|
$cifra[0] = (int) $cifra[0]; |
|
$cifra[1] = (int) $cifra[1]; |
|
$cifra[2] = (int) $cifra[2]; |
|
if ($numero <> 0) { |
|
$prime2cifre = (int) ($cifra[1] . $cifra[2]); |
|
if ($prime2cifre < 10) { |
|
$text[2] = $mono[$cifra[2]]; |
|
$text[1] = ""; |
|
} elseif ($prime2cifre < 20) { |
|
$text[2] = ""; |
|
$text[1] = $duplo[$prime2cifre - 10]; |
|
} else { |
|
// ventitre => ventitrè |
|
if ($sezione == 0 && $cifra[2] == 3) { |
|
$text[2] = "trè"; |
|
} else { |
|
$text[2] = $mono[$cifra[2]]; |
|
} |
|
// novantaotto => novantotto |
|
if ($cifra[2] == 1 || $cifra[2] == 8) { |
|
$text[1] = substr($deca[$cifra[1]], 0, -1); |
|
} else { |
|
$text[1] = $deca[$cifra[1]]; |
|
} |
|
} |
|
if ($cifra[0] == 0) { |
|
$text[0] = ""; |
|
} else { |
|
// centoottanta => centottanta |
|
if (!$centOOttanta && $cifra[1] == 8 || ($cifra[1] == 0 && $cifra[2] == 8)) { |
|
$IDcent = 0; |
|
} else { |
|
$IDcent = 1; |
|
} |
|
if ($cifra[0] <> 1) { |
|
$text[0] = $mono[$cifra[0]] . $cento[$IDcent]; |
|
} else { |
|
$text[0] = $cento[$IDcent]; |
|
} |
|
} |
|
// unomille => mille |
|
// miliardo => unmiliardo |
|
if ($numero == 1 && $sezione <> 0) { |
|
if ($sezione >= 2) { |
|
$result = "un" . $mili[0][$sezione] . $result; |
|
} else { |
|
$result = $mili[0][$sezione] . $result; |
|
} |
|
} else { |
|
$result = $text[0] . $text[1] . $text[2] . $mili[1][$sezione] . $result; |
|
} |
|
} |
|
$sezione++; |
|
} |
|
return $result; |
|
} |
|
|
|
public static function getStrReplace($param = "") { |
|
$param = str_replace(".", ",", $param); |
|
return $param; |
|
} |
|
|
|
public static function getJwt($fields = array(), $secretkey = NULL) { |
|
$header = array( |
|
'alg' => 'HS256', |
|
'typ' => 'JWT' |
|
); |
|
// Returns the JSON representation of the header |
|
$header = json_encode($header); |
|
//encodes the $header with base64. |
|
$header = self::base64url_encode($header); |
|
$payload = json_encode($fields); |
|
$payload = self::base64url_encode($payload); |
|
$signature = hash_hmac('SHA256', "$header.$payload", $secretkey, true); |
|
$signature = self::base64url_encode($signature); |
|
$jwtcreated = "$header.$payload.$signature"; |
|
return $jwtcreated; |
|
} |
|
|
|
public static function base64url_encode($data) { |
|
return rtrim(strtr(base64_encode($data), '+/', '-_'), '='); |
|
} |
|
|
|
/** |
|
* Tronca il testo eliminando tutti i tag html contenuti in esso. |
|
* @param mixed $testo This il testo da troncare |
|
* @param mixed $caratteri This il numero dei catarreri da rstituire |
|
* |
|
* @return mixed Restituisce il testo troncato escluso anche dai tag html |
|
* |
|
* */ |
|
public static function troncaTesto($testo, $caratteri = 50) { |
|
$testo = strip_tags($testo); |
|
if (strlen($testo) <= $caratteri) |
|
return $testo; |
|
$nuovo = wordwrap($testo, $caratteri, "|"); |
|
$nuovotesto = explode("|", $nuovo); |
|
return $nuovotesto[0] . "..."; |
|
} |
|
|
|
/** |
|
* |
|
* @return string |
|
*/ |
|
public function randomHex() { |
|
$chars = 'ABCDEF0123456789'; |
|
$color = '#'; |
|
for ($i = 0; $i < 6; $i++) { |
|
$color .= $chars[rand(0, strlen($chars) - 1)]; |
|
} |
|
return $color; |
|
} |
|
|
|
/* |
|
* Controllo la luminosita del colore |
|
*/ |
|
|
|
public static function getContrast50($hexcolor) { |
|
return (hexdec($hexcolor) > 0xffffff / 2) ? '000000' : 'ffffff'; //'black':'white'; |
|
} |
|
|
|
/** |
|
* Restituisce il codice ATECO al netto dei punti e degli zeri finali |
|
* @param type $ateco |
|
* @return type |
|
*/ |
|
public function normalizzaATECO($ateco = '') { |
|
$char = "0"; |
|
$res = ""; |
|
if ($ateco != "") { |
|
//echo "Originale ===> ".$ateco."<br>"; |
|
$ateco = str_ireplace('.', '', $ateco); |
|
//echo "Senza punti ===> ".$ateco2."<br>"; |
|
$ateco = rtrim($ateco, $char); |
|
//echo "Senza zeri finali ===> ".$ateco3."<br>"; |
|
$res = $ateco; |
|
} |
|
return $res; |
|
} |
|
|
|
public static function GetStatoSportello() { |
|
$oggi = new DateTime(); |
|
$response = 0; |
|
$manutenzione = 0; |
|
$preparazione = 0; |
|
$presentazione = 0; |
|
|
|
/* MANUTENZIONE */ |
|
$dtStart = new DateTime(DATA_MANUTENZIONE_INIZIO); |
|
$dtEnd = new DateTime(DATA_MANUTENZIONE_FINE); |
|
$start = Utils::DateDiff('s', $oggi->format('Y-m-d H:i:s'), $dtStart->format('Y-m-d H:i:s'), false, false); |
|
$end = Utils::DateDiff('s', $dtEnd->format('Y-m-d H:i:s'), $oggi->format('Y-m-d H:i:s'), false, false); |
|
if ($start < 0 && $end < 0) { |
|
$manutenzione = 1; |
|
} else { |
|
$manutenzione = 0; |
|
} |
|
/* END MANUTENZIONE */ |
|
|
|
/* PREPARAZIONE */ |
|
$dt_prep_Start = new DateTime(DATA_PREPARAZIONE_INIZIO); |
|
$dt_prep_End = new DateTime(DATA_PREPARAZIONE_FINE); |
|
$start_prep = Utils::DateDiff('s', $oggi->format('Y-m-d H:i:s'), $dt_prep_Start->format('Y-m-d H:i:s'), false, false); |
|
$end_prep = Utils::DateDiff('s', $dt_prep_End->format('Y-m-d H:i:s'), $oggi->format('Y-m-d H:i:s'), false, false); |
|
|
|
if ($start_prep < 0 && $end_prep < 0) { |
|
$preparazione = 1; |
|
} else { |
|
$preparazione = 0; |
|
} |
|
|
|
/* PRESENTAZIONE */ |
|
$dt_pres_Start = new DateTime(DATA_ATTESTATI_INIZIO); |
|
$dt_pres_End = new DateTime(DATA_ATTESTATI_FINE); |
|
$start_pres = Utils::DateDiff('s', $oggi->format('Y-m-d H:i:s'), $dt_pres_Start->format('Y-m-d H:i:s'), false, false); |
|
$end_pres = Utils::DateDiff('s', $dt_pres_End->format('Y-m-d H:i:s'), $oggi->format('Y-m-d H:i:s'), false, false); |
|
|
|
if ($start_pres < 0 && $end_pres < 0) { |
|
$presentazione = 1; |
|
} else { |
|
$presentazione = 0; |
|
} |
|
|
|
/* END PREPARAZIONE */ |
|
|
|
|
|
|
|
if (intval($manutenzione) == 1) {//SPORTELLO_MANUTENZIONE |
|
$response = SPORTELLO_MANUTENZIONE; |
|
} else if (intval($preparazione) == 1) {//SPORTELLO_PREPARAZIONE |
|
$response = SPORTELLO_PREPARAZIONE; |
|
} else if (intval($presentazione) == 1) { |
|
$response = SPORTELLO_PRESENTAZIONE; |
|
} else if (intval($preparazione) == 0 && $end_prep < 0) { |
|
$response = SPORTELLO_PREPARAZIONE_PRE; |
|
} else if (intval($preparazione) == 0 && intval($presentazione) == 0 && $end_pres < 0) { |
|
$response = SPORTELLO_PRESENTAZIONE_PRE; |
|
} else if (intval($preparazione) == 0 && intval($presentazione) == 0 && $end_pres > 0) { |
|
$response = SPORTELLO_PRESENTAZIONE_POST; |
|
} |
|
return $response; |
|
} |
|
|
|
}
|
|
|