2017-08-04 16:28:16 +02:00
|
|
|
<?php
|
|
|
|
|
2017-12-22 12:11:01 +01:00
|
|
|
// trigger_error(tr('Funzione deprecata!'), E_USER_DEPRECATED);
|
2017-08-04 16:28:16 +02:00
|
|
|
|
2018-03-24 14:24:17 +01:00
|
|
|
/**
|
|
|
|
* Individua il codice successivo.
|
|
|
|
*
|
|
|
|
* @deprecated 2.4
|
|
|
|
*
|
|
|
|
* @param string $str
|
2018-06-26 14:30:26 +02:00
|
|
|
* @param int $qty
|
2018-03-24 14:24:17 +01:00
|
|
|
* @param string $mask
|
|
|
|
*/
|
|
|
|
function get_next_code($str, $qty = 1, $mask = '')
|
|
|
|
{
|
|
|
|
trigger_error(tr('Funzione deprecata!'), E_USER_DEPRECATED);
|
|
|
|
|
|
|
|
return Util\Generator::generate($mask, $str, $qty);
|
|
|
|
}
|
2018-07-08 18:11:17 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* 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.
|
|
|
|
*
|
|
|
|
* @deprecated 2.4.2
|
|
|
|
|
|
|
|
*
|
|
|
|
* @param string $name
|
|
|
|
* @param string $sezione
|
|
|
|
* @param string $descrizione
|
|
|
|
*
|
|
|
|
* @return mixed
|
|
|
|
*/
|
|
|
|
function get_var($nome, $sezione = null, $descrizione = false, $again = false)
|
|
|
|
{
|
2018-07-09 10:44:54 +02:00
|
|
|
return setting($nome, $again);
|
2018-07-08 18:11:17 +02:00
|
|
|
}
|
2018-07-17 12:05:21 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Crea le thumbnails di $filename da dentro $dir e le salva in $dir.
|
|
|
|
*
|
|
|
|
* @param string $tmp
|
|
|
|
* @param string $filename
|
|
|
|
* @param string $dir
|
|
|
|
*
|
|
|
|
* @return bool
|
|
|
|
*/
|
|
|
|
function create_thumbnails($tmp, $filename, $dir)
|
|
|
|
{
|
|
|
|
$infos = pathinfo($filename);
|
|
|
|
$name = $infos['filename'];
|
|
|
|
$extension = strtolower($infos['extension']);
|
|
|
|
|
|
|
|
if (!directory($dir)) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
$driver = extension_loaded('gd') ? 'gd' : 'imagick';
|
|
|
|
Intervention\Image\ImageManagerStatic::configure(['driver' => $driver]);
|
|
|
|
|
|
|
|
$img = Intervention\Image\ImageManagerStatic::make($tmp);
|
|
|
|
|
|
|
|
$img->resize(600, null, function ($constraint) {
|
|
|
|
$constraint->aspectRatio();
|
|
|
|
});
|
|
|
|
$img->save(slashes($dir.'/'.$name.'.'.$extension));
|
|
|
|
|
|
|
|
$img->resize(250, null, function ($constraint) {
|
|
|
|
$constraint->aspectRatio();
|
|
|
|
});
|
|
|
|
$img->save(slashes($dir.'/'.$name.'_thumb250.'.$extension));
|
|
|
|
|
|
|
|
$img->resize(100, null, function ($constraint) {
|
|
|
|
$constraint->aspectRatio();
|
|
|
|
});
|
|
|
|
$img->save(slashes($dir.'/'.$name.'_thumb100.'.$extension));
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Verifica che il nome del file non sia già usato nella cartella inserita, nel qual caso aggiungo un suffisso.
|
|
|
|
*
|
|
|
|
* @param string $filename
|
|
|
|
* @param string $dir
|
|
|
|
*
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
function unique_filename($filename, $dir)
|
|
|
|
{
|
|
|
|
$f = pathinfo($filename);
|
|
|
|
$suffix = 1;
|
|
|
|
while (file_exists($dir.'/'.$filename)) {
|
|
|
|
$filename = $f['filename'].'_'.$suffix.'.'.$f['extension'];
|
|
|
|
++$suffix;
|
|
|
|
}
|
|
|
|
|
|
|
|
return $filename;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Individua la differenza tra le date indicate.
|
|
|
|
* $interval può essere:
|
|
|
|
* 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).
|
|
|
|
*
|
|
|
|
* @param unknown $interval
|
|
|
|
* @param unknown $datefrom
|
|
|
|
* @param unknown $dateto
|
|
|
|
* @param string $using_timestamps
|
|
|
|
*/
|
|
|
|
function datediff($interval, $datefrom, $dateto, $using_timestamps = false)
|
|
|
|
{
|
|
|
|
if (!$using_timestamps) {
|
|
|
|
$datefrom = strtotime($datefrom, 0);
|
|
|
|
$dateto = strtotime($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 $datediff;
|
|
|
|
}
|
2018-11-28 12:28:33 +01:00
|
|
|
|
2018-11-30 16:10:15 +01:00
|
|
|
/*
|
2018-11-28 12:28:33 +01:00
|
|
|
* Porting della funzione random_int() per rendere Mpdf retrocompatibile con PHP 5.6
|
|
|
|
*/
|
|
|
|
if (!function_exists('random_int')) {
|
2018-11-30 16:10:15 +01:00
|
|
|
function random_int($min, $max)
|
|
|
|
{
|
2018-11-28 12:28:33 +01:00
|
|
|
if (!function_exists('mcrypt_create_iv')) {
|
|
|
|
trigger_error(
|
|
|
|
'mcrypt must be loaded for random_int to work',
|
|
|
|
E_USER_WARNING
|
|
|
|
);
|
2018-11-30 16:10:15 +01:00
|
|
|
|
2018-11-28 12:28:33 +01:00
|
|
|
return null;
|
|
|
|
}
|
2018-11-30 16:10:15 +01:00
|
|
|
|
2018-11-28 12:28:33 +01:00
|
|
|
if (!is_int($min) || !is_int($max)) {
|
|
|
|
trigger_error('$min and $max must be integer values', E_USER_NOTICE);
|
2018-11-30 16:10:15 +01:00
|
|
|
$min = (int) $min;
|
|
|
|
$max = (int) $max;
|
2018-11-28 12:28:33 +01:00
|
|
|
}
|
2018-11-30 16:10:15 +01:00
|
|
|
|
2018-11-28 12:28:33 +01:00
|
|
|
if ($min > $max) {
|
|
|
|
trigger_error('$max can\'t be lesser than $min', E_USER_WARNING);
|
2018-11-30 16:10:15 +01:00
|
|
|
|
2018-11-28 12:28:33 +01:00
|
|
|
return null;
|
|
|
|
}
|
2018-11-30 16:10:15 +01:00
|
|
|
|
2018-11-28 12:28:33 +01:00
|
|
|
$range = $counter = $max - $min;
|
|
|
|
$bits = 1;
|
2018-11-30 16:10:15 +01:00
|
|
|
|
2018-11-28 12:28:33 +01:00
|
|
|
while ($counter >>= 1) {
|
|
|
|
++$bits;
|
|
|
|
}
|
2018-11-30 16:10:15 +01:00
|
|
|
|
|
|
|
$bytes = (int) max(ceil($bits / 8), 1);
|
2018-11-28 12:28:33 +01:00
|
|
|
$bitmask = pow(2, $bits) - 1;
|
|
|
|
|
|
|
|
if ($bitmask >= PHP_INT_MAX) {
|
|
|
|
$bitmask = PHP_INT_MAX;
|
|
|
|
}
|
|
|
|
|
|
|
|
do {
|
|
|
|
$result = hexdec(
|
|
|
|
bin2hex(
|
|
|
|
mcrypt_create_iv($bytes, MCRYPT_DEV_URANDOM)
|
|
|
|
)
|
|
|
|
) & $bitmask;
|
|
|
|
} while ($result > $range);
|
|
|
|
|
|
|
|
return $result + $min;
|
|
|
|
}
|
|
|
|
}
|