diff --git a/functions/functions.php b/functions/functions.php index 98c75db..0528dc6 100644 --- a/functions/functions.php +++ b/functions/functions.php @@ -124,682 +124,206 @@ function strtoupperFirstLetter($str) { } // DATE +{ + $GLOBALS['PRINT_MOIS_COURT'] = array( + 1 => 'janv.', + 2 => 'fév.', + 3 => 'mars', + 4 => 'avril', + 5 => 'mai', + 6 => 'juin', + 7 => 'juil.', + 8 => 'août', + 9 => 'sept.', + 10 => 'oct.', + 11 => 'nov.', + 12 => 'déc.' + ); + $GLOBALS['PRINT_MOIS'] = array( + 1 => 'janvier', + 2 => 'février', + 3 => 'mars', + 4 => 'avril', + 5 => 'mai', + 6 => 'juin', + 7 => 'juillet', + 8 => 'août', + 9 => 'septembre', + 10 => 'octobre', + 11 => 'novembre', + 12 => 'décembre' + ); -function getTime($date,$moment='start',$format=DATE_FORMAT) { // Retourne un timestamp à partir d'une date jj/mm/aaaa - $infos = strptime($date,$format); - if (is_array($infos)) { - if ($moment=='start') { - return mktime( - '0', - '0', - '0', - ($infos['tm_mon']+1), - $infos['tm_mday'], - (1900+$infos['tm_year']) - ); - } - elseif ($moment=='end') { - return mktime( - '23', - '59', - '59', - ($infos['tm_mon']+1), - $infos['tm_mday'], - (1900+$infos['tm_year']) - ); - } - return mktime( - $infos['tm_hour'], - $infos['tm_min'], - $infos['tm_sec'], - ($infos['tm_mon']+1), - $infos['tm_mday'], - (1900+$infos['tm_year']) - ); - } - return NULL; + $GLOBALS['PRINT_JOUR_INI'] = array( + 0 => 'D.', + 1 => 'L.', + 2 => 'Ma.', + 3 => 'Me.', + 4 => 'J.', + 5 => 'V.', + 6 => 'S.' + ); + + $GLOBALS['PRINT_JOUR_COURT'] = array( + 0 => 'dim.', + 1 => 'lun.', + 2 => 'mar.', + 3 => 'mer.', + 4 => 'jeu.', + 5 => 'ven.', + 6 => 'sam.' + ); + $GLOBALS['PRINT_JOUR'] = array( + 0 => 'dimanche', + 1 => 'lundi', + 2 => 'mardi', + 3 => 'mercredi', + 4 => 'jeudi', + 5 => 'vendredi', + 6 => 'samedi' + ); + + $GLOBALS['DATE_FORMATS'] = array( + 'date' => "d/m/Y", + 'datetime' => "d/m/Y - H:i", + 'mysql_date' => "Y-m-d", + 'mysql_datetime' => "Y-m-d H:i:s", + 'strdate' => "Y-m-d", + 'strdatetime' => "Y-m-d_H.i.s", + 'time' => "H:i", + 'print_time' => "H:i", + 'mois' => "m-d" + ); + } -function getDateTxt($timestamp,$format=DATE_FORMAT) { - if ($timestamp==0) { - return ''; - } - return strftime($format,(int)$timestamp); +function dateFormatHasDate($format) { + return $format=='date' + || $format=='datetime' + || $format=='mysql_date' + || $format=='mysql_datetime' + || $format=='strdate' + || $format=='strdatetime' + || $format=='timestamp'; +} +function dateFormatHasTime($format) { + return $format=='datetime' || $format=='mysql_datetime' || $format=='strdatetime' || $format=='timestamp'; } -$GLOBALS['PRINT_MOIS_COURT'] = array( - 1 => 'janv.', - 2 => 'fév.', - 3 => 'mars', - 4 => 'avril', - 5 => 'mai', - 6 => 'juin', - 7 => 'juil.', - 8 => 'août', - 9 => 'sept.', - 10 => 'oct.', - 11 => 'nov.', - 12 => 'déc.' -); -$GLOBALS['PRINT_MOIS'] = array( - 1 => 'janvier', - 2 => 'février', - 3 => 'mars', - 4 => 'avril', - 5 => 'mai', - 6 => 'juin', - 7 => 'juillet', - 8 => 'août', - 9 => 'septembre', - 10 => 'octobre', - 11 => 'novembre', - 12 => 'décembre' -); +function parseDate($dateTxt='', $format="mysql_datetime", $moment=false, $dateTimeZoneTxt = "Europe/Paris") { + $dateObj = false; + $dateTimeZone = new DateTimeZone( $dateTimeZoneTxt ); + + if($dateTxt=="now") $dateObj = new DateTime('now', $dateTimeZone); + else if($format=="timestamp" && (int)$dateTxt>0) $dateObj = new DateTime('@'.$dateTxt, $dateTimeZone); + else if($dateTxt!='' && intval($dateTxt)!=0) { + if(array_key_exists($format, $GLOBALS['DATE_FORMATS'])) $dateObj = DateTime::createFromFormat($GLOBALS['DATE_FORMATS'][$format], $dateTxt, $dateTimeZone); + } + + if(!isValidDateObj($dateObj)) return false; + + if($moment=="start" || !dateFormatHasTime($format)) $dateObj->setTime(0, 0, 0); + else if($moment=="end") $dateObj->setTime(23, 59, 59); + + return $dateObj; +} -$GLOBALS['PRINT_JOUR_INI'] = array( - 0 => 'D.', - 1 => 'L.', - 2 => 'Ma.', - 3 => 'Me.', - 4 => 'J.', - 5 => 'V.', - 6 => 'S.' -); +function isValidDateObj($dateObj) { return $dateObj!==false && $dateObj!==NULL && $dateObj instanceof DateTime; } -$GLOBALS['PRINT_JOUR_COURT'] = array( - 0 => 'dim.', - 1 => 'lun.', - 2 => 'mar.', - 3 => 'mer.', - 4 => 'jeu.', - 5 => 'ven.', - 6 => 'sam.' -); -$GLOBALS['PRINT_JOUR'] = array( - 0 => 'dimanche', - 1 => 'lundi', - 2 => 'mardi', - 3 => 'mercredi', - 4 => 'jeudi', - 5=> 'vendredi', - 6 => 'samedi' -); +function isValidDate($dateTxt, $format = 'mysql_datetime', $dateTimeZoneTxt = "Europe/Paris") { + $dateObj = parseDate($dateTxt, $format, $dateTimeZoneTxt); + return isValidDateObj($dateObj); +} function checkDateFormat($date, $format = 'mysql_datetime', $default = NULL) { - if($default == "now") $default = formatDate('', $format); + if($default == "now") $default = formatDate('now', $format); return isValidDate($date, $format) ? $date : $default; } -function isValidDate($date, $format = 'mysql_datetime') { - if(!$date || is_null($date)) return false; - $f = "Y-m-d"; +function formatDate($dateTxt='', $originalFormat="mysql_datetime", $destinationFormat="datetime", $moment=false, $dateTimeZoneTxt = "Europe/Paris") { + $dateObj = parseDate($dateTxt, $originalFormat, $moment, $dateTimeZoneTxt); + return formatDateObj($dateObj, $destinationFormat); +} + +function formatDateObj($dateObj, $format="datetime", $moment=false) { + if(!isValidDateObj($dateObj)) return ""; + + if($moment=="start") $dateobj->setTime(0, 0, 0); + else if($moment=="end") $dateobj->setTime(23, 59, 59); + + if(array_key_exists($format, $GLOBALS['DATE_FORMATS'])) return $dateObj->format( $GLOBALS['DATE_FORMATS'][$format] ); + + $j = $GLOBALS['PRINT_JOUR'][ intval($dateObj->format("w")) ]; + $d = intval( $dateObj->format("j") ); + $m = $GLOBALS['PRINT_MOIS_COURT'][ intval($dateObj->format("m")) ]; + $y = intval( $dateObj->format("Y") ); + $t = $dateObj->format("H")."h".((int)$dateObj->format("i")>0 ? $dateObj->format("i") : ""); + switch($format) { - case 'date': $f = "d/m/Y"; break; - case 'datetime': $f = "d/m/Y - H:i"; break; - case 'mysql_date': $f = "Y-m-d"; break; - case 'mysql_datetime': $f = "Y-m-d H:i:s"; break; - case 'strdatetime': $f = "Y-m-d_H.i.s"; break; - default; $f = "Y-m-d"; - } - $d = DateTime::createFromFormat($f, $date); - if($d && $d->format($f) == $date) return true; - return false; -} - -function getRequestDate($name, $format="mysql_date") { - if(isset($_REQUEST[$name]) && $_REQUEST[$name]!="") return checkDateFormat($_REQUEST[$name], $format); - return NULL; -} - -function buildDate($day = 0, $month = 0, $year = 0, $forceBuild = false, $default = NULL) { - $date = $default; - - if((int)$year>0) { - $date = $year; - if((int)$month>0 && (int)$month<13) { - $date .= "-".sprintf("%02d", $month); - $nbJ = cal_days_in_month(CAL_GREGORIAN, $month, $year); - if((int)$day>0 && (int)$day<($nbJ+1)) { - $date .= "-".sprintf("%02d", $day); - } - else if($forceBuild) $date .= "-1"; - } - else if($forceBuild) $date .= "-1-1"; - } - return $date; -} - -function buildDatePrint ($day = 0, $month = 0, $year = 0, $default = ".") { - $date = $default; - if((int)$year>0) { - $date = $year; - if((int)$month>0 && (int)$month<13) { - $date = $GLOBALS['PRINT_MOIS'][$month]." ".$date; - $nbJ = cal_days_in_month(CAL_GREGORIAN, $month, $year); - if((int)$day>0 && (int)$day<($nbJ+1)) { - $d = $year."-".sprintf("%02d", $month)."-".sprintf("%02d", $day); - $date = formatDate($d, 'mysql_date', 'print_date_with_day'); - } - } - } - return $date; -} - -function buildDatePrintShort ($day = 0, $month = 0, $year = 0, $default = ".") { - $date = $default; - if((int)$year>0) { - $date = $year; - if((int)$month>0 && (int)$month<13) { - $date = $GLOBALS['PRINT_MOIS'][$month]." ".$date; - $nbJ = cal_days_in_month(CAL_GREGORIAN, $month, $year); - if((int)$day>0 && (int)$day<($nbJ+1)) { - $d = $year."-".sprintf("%02d", $month)."-".sprintf("%02d", $day); - $date = formatDate($d, 'mysql_date', 'date'); - } - } - } - return $date; -} - -function checkExplodeDate($day = 0, $month = 0, $year = 0, $default = NULL) { - $r = array( - "day" => $default, - "month" => $default, - "year" => $default, - "date" => $default - ); - - if((int)$year>0 && $year<2101) { - $r["year"] = $year; - if((int)$month>0 && (int)$month<13) { - $r["month"] = $month; - $nbJ = cal_days_in_month(CAL_GREGORIAN, $month, $year); - if((int)$day>0 && (int)$day<($nbJ+1)) $r["day"] = $day; - } + case 'print_date': return "$d $m $y"; break; // "j mois annee" + case 'print_date_with_day': return "$j $d $m $y"; break; // "jour j mois annee" + case 'print_datetime': return "$d $m $y à $t"; break; // "j mois annee à heure h min" + case 'timestamp': return $dateObj->getTimestamp(); break; // timestamp } - $r['date'] = buildDate($r["day"], $r["month"], $r["year"], true); - - return $r; + return ""; } -function formatDate($original='', $originalFormat="mysql_datetime", $destinationFormat="datetime", $moment=false) { - $infos = false; - if($original!='' && intVal($original)!=0) { - switch($originalFormat) { - case 'date': - $originalFormat = "%d/%m/%Y"; - $infos = strptime($original,$originalFormat); - break; - case 'datetime': - $originalFormat = "%d/%m/%Y - %H:%M"; - $infos = strptime($original,$originalFormat); - break; - case 'mysql_date': - $originalFormat = "%Y-%m-%d"; - $infos = strptime($original,$originalFormat); - break; - case 'mysql_datetime': - $originalFormat = "%Y-%m-%d %H:%M:%S"; - $infos = strptime($original,$originalFormat); - break; - case 'strdatetime': - $originalFormat = "%Y-%m-%d_%H.%M.%S"; - $infos['tm_mday_week'] = sprintf("%02d", $infos['tm_mday']); - break; - case 'timestamp': - $infos = array( - 'tm_hour' => date('G',$original), - 'tm_min' => intval( date('i',$original) ), - 'tm_sec' => intval( date('s',$original) ), - 'tm_mday' => date('j',$original), - 'tm_wday' => date('N',$original), - 'tm_mon' => date('n',$original)-1, - 'tm_year' => date('Y',$original)-1900 - ); - if($infos["tm_wday"]==7) $infos["tm_wday"] = 0; - //echo($original.' : '.$infos['tm_year'].' '); - break; - default; - $infos = strptime(strftime("%c"),"%c"); - } - - if($originalFormat=="date" || $originalFormat=="mysql_date" || ($moment=="start" || $moment=="end")) { - if($moment=="start") { - $infos['tm_hour'] = 0; - $infos['tm_min'] = 0; - $infos['tm_sec'] = 0; - } - else { - $infos['tm_hour'] = 23; - $infos['tm_min'] = 59; - $infos['tm_sec'] = 59; - } - } - } - else { - $infos = strptime(strftime("%c"),"%c"); - } - $infos['tm_hour'] = sprintf("%02d", $infos['tm_hour']); - $infos['tm_min'] = sprintf("%02d", $infos['tm_min']); - $infos['tm_sec'] = sprintf("%02d", $infos['tm_sec']); - $infos['tm_mday'] = sprintf("%02d", $infos['tm_mday']); - $infos['tm_mon'] = sprintf("%02d", ($infos['tm_mon']+1)); - $infos['tm_year'] = (1900+$infos['tm_year']); - - //echo($original.' : '.$infos['tm_year'].' '); - - switch($destinationFormat) { - case 'date': // "%d/%m/%Y" - return $infos['tm_mday']."/".$infos['tm_mon']."/".$infos['tm_year']; - break; - case 'time': // "%d/%m/%Y" - return $infos['tm_hour'].":".$infos['tm_min']; - break; - case '%m-%d': - return $infos['tm_mon']."-".$infos['tm_mday']; - break; - case 'strdate': // "%Y-%m-%d" - return $infos['tm_year']."-".$infos['tm_mon']."-".$infos['tm_mday']; - break; - case 'strdatetime': // "%Y-%m-%d_%H.%M.%S" - return $infos['tm_year']."-".$infos['tm_mon']."-".$infos['tm_mday']."_".$infos['tm_hour'].".".$infos['tm_min'].".".$infos['tm_sec']; - break; - case 'datetime': // "%d/%m/%Y - %H:%M" - return $infos['tm_mday']."/".$infos['tm_mon']."/".$infos['tm_year']." - ".$infos['tm_hour'].":".$infos['tm_min']; - break; - case 'print_date': // "j mois annee" - return $infos['tm_mday']." ".$GLOBALS['PRINT_MOIS_COURT'][intVal($infos['tm_mon'])]." ".$infos['tm_year']; - break; - case 'print_time': // "%H:%M" - return $infos['tm_hour'].":".$infos['tm_min']; - break; - case 'print_date_with_day': // "jour j mois annee" - return $GLOBALS['PRINT_JOUR'][$infos['tm_wday']]." ".$infos['tm_mday']." ".$GLOBALS['PRINT_MOIS_COURT'][intVal($infos['tm_mon'])]." ".$infos['tm_year']; - break; - case 'print_datetime': // "j mois annee à heure h min" - return $infos['tm_mday']." ".$GLOBALS['PRINT_MOIS_COURT'][intVal($infos['tm_mon'])]." ".$infos['tm_year']." à ".$infos['tm_hour']."h".$infos['tm_min']; - break; - case 'mysql_date': // "%Y-%m-%d" - return $infos['tm_year']."-".$infos['tm_mon']."-".$infos['tm_mday']; - break; - case 'mysql_datetime': //"%Y-%m-%d %H:%M:%S" - return $infos['tm_year']."-".$infos['tm_mon']."-".$infos['tm_mday']." ".$infos['tm_hour'].":".$infos['tm_min'].":".$infos['tm_sec']; - break; - case 'timestamp': //timestamp - return mktime(intval($infos['tm_hour']),intval($infos['tm_min']),intval($infos['tm_sec']),intval($infos['tm_mon']),intval($infos['tm_mday']),intval($infos['tm_year'])); - break; - default; - return ""; - } -} - -function formatPeriode($originalDeb='', $originalFin='', $originalFormat="mysql_datetime", $time=true) { +function formatPeriode($dateTxtDeb='', $dateTxtFin='', $format="mysql_datetime", $time=true, $dateTimeZoneTxt = "Europe/Paris") { // DEBUT - $infosDeb = false; - if($originalDeb!='' && intVal($originalDeb)!=0) { - switch($originalFormat) { - case 'date': - $infosDeb = strptime($originalDeb,"%d/%m/%Y"); - break; - case 'datetime': - $infosDeb = strptime($originalDeb,"%d/%m/%Y - %H:%M"); - break; - case 'mysql_date': - $infosDeb = strptime($originalDeb,"%Y-%m-%d"); - break; - case 'mysql_datetime': - $infosDeb = strptime($originalDeb,"%Y-%m-%d %H:%M:%S"); - break; - case 'timestamp': - $infosDeb = array( - 'tm_hour' => date('G',$originalDeb), - 'tm_min' => intval( date('i',$originalDeb) ), - 'tm_sec' => intval( date('s',$originalDeb) ), - 'tm_mday' => date('j',$originalDeb), - 'tm_mon' => date('n',$originalDeb)-1, - 'tm_year' => date('Y',$originalDeb)-1900 - ); - break; - default; - $infosDeb = strptime(strftime("%c"),"%c"); - } - - if($originalFormat=="date" || $originalFormat=="mysql_date") { - $infosDeb['tm_hour'] = 0; - $infosDeb['tm_min'] = 0; - $infosDeb['tm_sec'] = 0; - } - } - else { - $infosDeb = strptime(strftime("%c"),"%c"); - } - - $infosDeb['tm_hour'] = sprintf("%02d", $infosDeb['tm_hour']); - $infosDeb['tm_min'] = sprintf("%02d", $infosDeb['tm_min']); - $infosDeb['tm_sec'] = sprintf("%02d", $infosDeb['tm_sec']); - $infosDeb['tm_mday'] = sprintf("%02d", $infosDeb['tm_mday']); - $infosDeb['tm_mon'] = sprintf("%02d", ($infosDeb['tm_mon']+1)); - $infosDeb['tm_year'] = (1900+$infosDeb['tm_year']); + $deb = parseDate($dateTxtDeb, $format, $dateTimeZoneTxt); + if(!$deb) return ""; // FIN - $infosFin = false; - if($originalFin && ($originalFin!='' && intVal($originalFin)!=0)) { - switch($originalFormat) { - case 'date': - $infosFin = strptime($originalFin,"%d/%m/%Y"); - break; - case 'datetime': - $infosFin = strptime($originalFin,"%d/%m/%Y - %H:%M"); - break; - case 'mysql_date': - $infosFin = strptime($originalFin,"%Y-%m-%d"); - break; - case 'mysql_datetime': - $infosFin = strptime($originalFin,"%Y-%m-%d %H:%M:%S"); - break; - case 'timestamp': - $infosFin = array( - 'tm_hour' => date('G',$originalFin), - 'tm_min' => intval( date('i',$originalFin) ), - 'tm_sec' => intval( date('s',$originalFin) ), - 'tm_mday' => date('j',$originalFin), - 'tm_mon' => date('n',$originalFin)-1, - 'tm_year' => date('Y',$originalFin)-1900 - ); - break; - default; - $infosFin = strptime(strftime("%c"),"%c"); - } - - if($originalFormat=="date" || $originalFormat=="mysql_date") { - $infosFin['tm_hour'] = 0; - $infosFin['tm_min'] = 0; - $infosFin['tm_sec'] = 0; - } - } + $fin = parseDate($dateTxtFin, $format, $dateTimeZoneTxt); - if(!$infosFin) { - if($time && ($originalFormat!="date" && $originalFormat!="mysql_date")) return 'le '.$infosDeb['tm_mday']." ".$GLOBALS['PRINT_MOIS_COURT'][intVal($infosDeb['tm_mon'])]." ".$infosDeb['tm_year']." à ".$infosDeb['tm_hour']."h".$infosDeb['tm_min']; - else return 'le '.$infosDeb['tm_mday']." ".$GLOBALS['PRINT_MOIS_COURT'][intVal($infosDeb['tm_mon'])]." ".$infosDeb['tm_year']; + if($time) $time = dateFormatHasTime($format); + + $deb_day = intval( $deb->format("j") ); + $deb_month = $GLOBALS['PRINT_MOIS_COURT'][ intval($deb->format("m")) ]; + $deb_year = intval( $deb->format("Y") ); + $deb_date = "$deb_day $deb_month $deb_year"; + $deb_time = $deb->format("H")."h".(intval($deb->format("i"))>0 ? $deb->format("i") : ""); + + $ret = ""; + if(!$fin) { + $ret = "le ".$deb_date; + if($time) $ret .= " à ".$deb_time; } else { - $infosFin['tm_hour'] = sprintf("%02d", $infosFin['tm_hour']); - $infosFin['tm_min'] = sprintf("%02d", $infosFin['tm_min']); - $infosFin['tm_sec'] = sprintf("%02d", $infosFin['tm_sec']); - $infosFin['tm_mday'] = sprintf("%02d", $infosFin['tm_mday']); - $infosFin['tm_mon'] = sprintf("%02d", ($infosFin['tm_mon']+1)); - $infosFin['tm_year'] = (1900+$infosFin['tm_year']); + $same_date = $deb->format('mysql_date') == $fin->format('mysql_date'); + $same_time = $time ? $debut->format('time') == $fin->format('time') : false; + $same_month = $deb->format('Y-m') == $fin->format('Y-m'); + $same_year = $deb->format('Y') == $fin->format('Y'); - if($time && ($originalFormat!="date" && $originalFormat!="mysql_date")) { - if($infosDeb['tm_hour']==$infosFin['tm_hour'] - && $infosDeb['tm_min']==$infosFin['tm_min'] - && $infosDeb['tm_mday']==$infosFin['tm_mday'] - && $infosDeb['tm_mon']==$infosFin['tm_mon'] - && $infosDeb['tm_year']==$infosFin['tm_year']) { - // MEME JOUR, MEME HEURE - return 'le '.$infosDeb['tm_mday']." ".$GLOBALS['PRINT_MOIS_COURT'][intVal($infosDeb['tm_mon'])]." ".$infosDeb['tm_year']." à ".$infosDeb['tm_hour']."h".$infosDeb['tm_min']; + $fin_day = intval( $fin->format("j") );; + $fin_month = $GLOBALS['PRINT_MOIS_COURT'][ intval($fin->format("m")) ]; + $fin_year = intval( $fin->format("Y") ); + $fin_date = "$fin_day $fin_month $fin_year"; + $fin_time = $fin->format("H")."h".(intval($fin->format("i"))>0 ? $fin->format("i") : ""); + + if($same_date) { // MEME JOUR + $ret = "le ".$deb_date; + if($time) { + if($same_time) $ret .= " à ".$deb_time; // MEME HEURE + else $ret .= " de ".$deb_time." à ".$fin_time; // HEURE DIFFERENTE } - elseif($infosDeb['tm_mday']==$infosFin['tm_mday'] - && $infosDeb['tm_mon']==$infosFin['tm_mon'] - && $infosDeb['tm_year']==$infosFin['tm_year']) { - // MEME JOUR, HEURE DIFF - return 'le '.$infosDeb['tm_mday']." ".$GLOBALS['PRINT_MOIS_COURT'][intVal($infosDeb['tm_mon'])]." ".$infosDeb['tm_year']." de ".$infosDeb['tm_hour']."h".$infosDeb['tm_min']." à ".$infosFin['tm_hour']."h".$infosFin['tm_min']; - } - elseif($infosDeb['tm_mon']==$infosFin['tm_mon'] - && $infosDeb['tm_year']==$infosFin['tm_year']) { - // MEME MOIS, JOUR & HEURE DIFF - return 'du '.$infosDeb['tm_mday']." à ".$infosDeb['tm_hour']."h".$infosDeb['tm_min']." au ".$infosFin['tm_mday']." ".$GLOBALS['PRINT_MOIS_COURT'][intVal($infosFin['tm_mon'])]." ".$infosFin['tm_year']." à ".$infosFin['tm_hour']."h".$infosFin['tm_min']; - } - elseif($infosDeb['tm_year']==$infosFin['tm_year']) { - // MEME ANNEE, JOUR/MOIS & HEURE DIFF - return 'du '.$infosDeb['tm_mday']." ".$GLOBALS['PRINT_MOIS_COURT'][intVal($infosDeb['tm_mon'])]." à ".$infosDeb['tm_hour']."h".$infosDeb['tm_min']." au ".$infosFin['tm_mday']." ".$GLOBALS['PRINT_MOIS_COURT'][intVal($infosFin['tm_mon'])]." ".$infosFin['tm_year']." à ".$infosFin['tm_hour']."h".$infosFin['tm_min']; - } - else { - return 'du '.$infosDeb['tm_mday']." ".$GLOBALS['PRINT_MOIS_COURT'][intVal($infosDeb['tm_mon'])]." ".$infosDeb['tm_year']." à ".$infosDeb['tm_hour']."h".$infosDeb['tm_min']." au ".$infosFin['tm_mday']." ".$GLOBALS['PRINT_MOIS_COURT'][intVal($infosFin['tm_mon'])]." ".$infosFin['tm_year']." à ".$infosFin['tm_hour']."h".$infosFin['tm_min']; - } - + } + else if($same_month) { // MEME MOIS + if($time) $ret = "du $deb_day à $deb_time au $fin_date à $fin_time"; + else $ret = "du $deb_day au $fin_date"; + } + else if($same_year) { // MEME ANNEE + if($time) $ret = "du $deb_day $deb_month à $deb_time au ".$fin_date." à ".$fin_time; + else $ret = "du $deb_day $deb_month au $fin_date"; } else { - if($infosDeb['tm_mday']==$infosFin['tm_mday'] - && $infosDeb['tm_mon']==$infosFin['tm_mon'] - && $infosDeb['tm_year']==$infosFin['tm_year']) { - // MEME JOUR - return 'le '.$infosDeb['tm_mday']." ".$GLOBALS['PRINT_MOIS_COURT'][intVal($infosFin['tm_mon'])]." ".$infosFin['tm_year']; - } - elseif($infosDeb['tm_mon']==$infosFin['tm_mon'] - && $infosDeb['tm_year']==$infosFin['tm_year']) { - // MEME MOIS, JOUR DIFF - return 'du '.$infosDeb['tm_mday']." au ".$infosFin['tm_mday']." ".$GLOBALS['PRINT_MOIS_COURT'][intVal($infosFin['tm_mon'])]." ".$infosFin['tm_year']; - } - elseif($infosDeb['tm_year']==$infosFin['tm_year']) { - // MEME ANNEE, JOUR/MOIS - return 'du '.$infosDeb['tm_mday']." ".$GLOBALS['PRINT_MOIS_COURT'][intVal($infosDeb['tm_mon'])]." au ".$infosFin['tm_mday']." ".$GLOBALS['PRINT_MOIS_COURT'][intVal($infosFin['tm_mon'])]." ".$infosFin['tm_year']; - } - else { - return 'du '.$infosDeb['tm_mday']." ".$GLOBALS['PRINT_MOIS_COURT'][intVal($infosDeb['tm_mon'])]." ".$infosDeb['tm_year']." au ".$infosFin['tm_mday']." ".$GLOBALS['PRINT_MOIS_COURT'][intVal($infosFin['tm_mon'])]." ".$infosFin['tm_year']; - } + if($time) $ret = "du $deb_date à $deb_time au ".$fin_date." à ".$fin_time; + else $ret = "du $deb_date au $fin_date"; } } -} - -function getPeriode($target=false,$duree="3m") { - if(!$target) $target=strftime("%d/%m/%Y"); - - $targetDT = new DateTime(formatDate($target,"date","mysql_datetime"), new DateTimeZone(DATE_TIME_ZONE)); - - $limit1 = new DateTime("now", new DateTimeZone(DATE_TIME_ZONE)); - $limit1->setDate($targetDT->format("Y"), $targetDT->format("m"), 0); - $limit1->setTime(0,0,0); - - $limit2 = new DateTime("now", new DateTimeZone(DATE_TIME_ZONE)); - $limit2->setDate($targetDT->format("Y"), $targetDT->format("m"), $targetDT->format("t")); - $limit2->setTime(23,59,59); - - $int = new DateInterval('P0M'); - - switch($_SESSION['periode_view']) { - case "1m": - $int = new DateInterval('P1M'); - break; - case "3m": - $int = new DateInterval('P3M'); - break; - case "6m": - $int = new DateInterval('P6M'); - break; - case "1y": - $int = new DateInterval('P1Y'); - break; - } - - $limit1->sub($int); - $limit2->add($int); - return array( - "start" => array( - 'datetime' => $limit1, - 'mysql_date' => $limit1->format('Y-m-d H:i:s') - ), - "end" => array( - 'datetime' => $limit2, - 'mysql_date' => $limit2->format('Y-m-d H:i:s') - ) - ); -} - -function getPeriodeJoursFeries($debut,$fin,$format="Y-m-d") { - $liste = array(); - - $dt = new DateTime($debut, new DateTimeZone("Europe/Paris")); - $dt->setTime(0, 0, 0); - $ft = new DateTime($fin, new DateTimeZone("Europe/Paris")); - $ft->setTime(23,59, 59); - - $ndt = clone $dt; - while($ndt < $ft) { - $jf = getYearJoursFeries($ndt->format('Y'),$format); - foreach($jf as $k => $j) { - if( $j['datetime'] >= $dt && $j['datetime'] <= $ft ) $liste[$k] = $j; - } - $ndt->add( new DateInterval('P1Y') ); - $ndt->setDate((int)$ndt->format('Y'),1,1); - } - - ksort($liste); - - return $liste; -} - -function getYearJoursFeries($year=false,$format="Y-m-d") { - if(!$year) $year = intval(date('Y')); - $liste = array(); - - $date = new DateTime(); - $date->setTimezone(new DateTimeZone('Europe/Paris')); - $date->setTime(0,0,0); - - $easter_date = new DateTime('@' . easter_date($year)); - $easter_date->setTimezone(new DateTimeZone('Europe/Paris')); - $easter_date->setTime(0,0,0); - - // Jour de l'an - 1er janvier - $date->setDate($year, 1, 1); - $liste[ $date->format($format) ] = array( - 'datetime' => clone $date, - 'description' => "Jour de l'An" - ); - // Fête du travail - 1er mai - $date->setDate($year, 5, 1); - $liste[ $date->format($format) ] = array( - 'datetime' => clone $date, - 'description' => "Fête du Travail" - ); - // Victoire des alliés - 8 mai 1945 - $date->setDate($year, 5, 8); - $liste[ $date->format($format) ] = array( - 'datetime' => clone $date, - 'description' => "Victoire des Alliés - 8 mai 1945" - ); - // Fête nationale - 14 juillet - $date->setDate($year, 7, 14); - $liste[ $date->format($format) ] = array( - 'datetime' => clone $date, - 'description' => "Fête Nationale" - ); - // Assomption - 15 août - $date->setDate($year, 8, 15); - $liste[ $date->format($format) ] = array( - 'datetime' => clone $date, - 'description' => "Assomption" - ); - // Toussaint - 1er novembre - $date->setDate($year, 11, 1); - $liste[ $date->format($format) ] = array( - 'datetime' => clone $date, - 'description' => "Toussaint" - ); - // Armistice 1ère Guerre Mondiale - 11 novembre - $date->setDate($year, 11, 11); - $liste[ $date->format($format) ] = array( - 'datetime' => clone $date, - 'description' => "Armistice 1ère Guerre Mondiale" - ); - // Noël - 25 décembre - $date->setDate($year, 12, 25); - $liste[ $date->format($format) ] = array( - 'datetime' => clone $date, - 'description' => "Noël" - ); - // Lundi de Pâques - lendemain du dimanche de Pâques - $date = clone $easter_date; - $date->add(new DateInterval('P1D')); - $liste[ $date->format($format) ] = array( - 'datetime' => clone $date, - 'description' => "Lundi de Pâques" - ); - // Jeudi de l'ascension - 10 jours avant le Dimanche de Pentecôte - $date = clone $easter_date; - $date->add(new DateInterval('P39D')); - $liste[ $date->format($format) ] = array( - 'datetime' => clone $date, - 'description' => "Jeudi de l'Ascension" - ); - // Lundi de Pentecôte - lendemain de la Pentecôte - 7 semaines après le lundi de pâque - $date = clone $easter_date; - $date->add(new DateInterval('P50D')); - $liste[ $date->format($format) ] = array( - 'datetime' => clone $date, - 'description' => "Lundi de Pentecôte" - ); - return $liste; -} - -function diffNbJours($debut, $fin,$format='date') { - //60 secondes X 60 minutes X 24 heures dans une journée - $nbSecondes= 60*60*24; - - $debut_s = formatDate($debut,$format,'strdate'); - $fin_s = formatDate($fin,$format,'strdate'); - - $debut_ts = strtotime($debut_s); - $fin_ts = strtotime($fin_s); - - $diff = $fin_ts - $debut_ts; - - return floor($diff / $nbSecondes)+1; -} - -function diffNbJours2($debut, $fin) { - $dt1 = new DateTime($debut); - $dt1->setTime(0, 0, 0); - $dt2 = new DateTime($fin); - $dt2->setTime(23,59, 59); - $itv = date_diff($dt1, $dt2); - return intval($itv->format('%a'))+1; -} - -function getNbOpenDays($date_start, $date_end) { - // $date_depart && $date_end au format YYYY-MM-DD - - $dtd = date_create($date_start); - $dtd->setTime(0, 0, 0); - $dtf = date_create($date_end); - $dtf->setTime(0, 0, 0); - $dtf->modify( '+1 day' ); - - $arr_bank_holidays = array(); // Tableau des jours feriés - - // On boucle dans le cas où l'année de départ serait différente de l'année d'arrivée - $diff_year = $dtf->format('Y') - $dtd->format('Y'); - for ($i = 0; $i <= $diff_year; $i++) { - $year = (int)$dtd->format('Y') + $i; - // Liste des jours feriés - $arr_bank_holidays[] = '1_1_'.$year; // Jour de l'an - $arr_bank_holidays[] = '1_5_'.$year; // Fete du travail - $arr_bank_holidays[] = '8_5_'.$year; // Victoire 1945 - $arr_bank_holidays[] = '14_7_'.$year; // Fete nationale - $arr_bank_holidays[] = '15_8_'.$year; // Assomption - $arr_bank_holidays[] = '1_11_'.$year; // Toussaint - $arr_bank_holidays[] = '11_11_'.$year; // Armistice 1918 - $arr_bank_holidays[] = '25_12_'.$year; // Noel - - // Récupération de paques. Permet ensuite d'obtenir le jour de l'ascension et celui de la pentecote - $easter = easter_date($year); - $arr_bank_holidays[] = date('j_n_'.$year, $easter + 86400); // Paques - $arr_bank_holidays[] = date('j_n_'.$year, $easter + (86400*39)); // Ascension - $arr_bank_holidays[] = date('j_n_'.$year, $easter + (86400*50)); // Pentecote - } - - $nb_days_open = 0; - - foreach (new DatePeriod($dtd, new DateInterval('P1D'), $dtf) as $dt) { - $dt = new DateTime($dt->format('Y-m-d'), new DateTimeZone("Europe/Paris")); - // Si le jour suivant n'est ni un dimanche (0) ou un samedi (6), ni un jour férié, on incrémente les jours ouvrés - if (!in_array($dt->format('w'), array(0, 6)) && !in_array($dt->format('j_n_Y'), $arr_bank_holidays)) $nb_days_open++; - } - - return $nb_days_open; + return $ret; } /*** REMPLACE SYMBOLES ***/ diff --git a/functions/functions_contrats.php b/functions/functions_contrats.php index dd3a1cc..f94eac9 100644 --- a/functions/functions_contrats.php +++ b/functions/functions_contrats.php @@ -288,8 +288,8 @@ function eraseContrat($id) { function printContratsList($list) { $GLOBALS['smarty'] -> assign('logo', "file://".PUBLIC_HTML_ADMIN_PATH."/img/logo.png"); - $GLOBALS['smarty'] -> assign('date', formatDate('', '', 'print_date')); - $GLOBALS['smarty'] -> assign('time', formatDate('', '', 'print_time')); + $GLOBALS['smarty'] -> assign('date', formatDate('now', false, 'print_date')); + $GLOBALS['smarty'] -> assign('time', formatDate('now', false, 'print_time')); $GLOBALS['smarty'] -> assign('cssFiles',array( "file://".PUBLIC_HTML_ADMIN_PATH."css/bootstrap_print_light.css", "file://".PUBLIC_HTML_ADMIN_PATH."css/print.css" @@ -351,7 +351,7 @@ function printContratsList($list) { $dompdf->setOptions($options); $dompdf->render(); - $dompdf->stream("Liste des contrats (".formatDate('', '', 'strdate').").pdf"); + $dompdf->stream("Liste des contrats (".formatDate('now', false, 'strdate').").pdf"); die(); } diff --git a/functions/functions_legumes.php b/functions/functions_legumes.php index 3d5bcc5..59d12b5 100644 --- a/functions/functions_legumes.php +++ b/functions/functions_legumes.php @@ -280,11 +280,11 @@ function getLegumeTarif($legume, $groupe, $date=false, $groupe_exclusif=true) { // DATE if($date == 'next') { - $date = formatDate('', '', 'mysql_date'); + $date = formatDate('now', false, 'mysql_date'); $sql .= " AND ".LEGUMES_TARIFS_TABLE.".`date`>'".$date."'"; } else { - if(!isValidDate($date, "mysql_date")) $date = formatDate('', '', 'mysql_date'); + if(!isValidDate($date, "mysql_date")) $date = formatDate('now', false, 'mysql_date'); $sql .= " AND ".LEGUMES_TARIFS_TABLE.".`date`<='".$date."'"; } @@ -371,8 +371,8 @@ function eraseLegumeTarif($id) { function printLegumesList() { $GLOBALS['smarty'] -> assign('logo', "file://".PUBLIC_HTML_ADMIN_PATH."/img/logo.png"); - $GLOBALS['smarty'] -> assign('date', formatDate('', '', 'print_date')); - $GLOBALS['smarty'] -> assign('time', formatDate('', '', 'print_time')); + $GLOBALS['smarty'] -> assign('date', formatDate('now', false, 'print_date')); + $GLOBALS['smarty'] -> assign('time', formatDate('now', false, 'print_time')); $GLOBALS['smarty'] -> assign('cssFiles',array( "file://".PUBLIC_HTML_ADMIN_PATH."css/bootstrap_print_light.css", "file://".PUBLIC_HTML_ADMIN_PATH."css/print.css" @@ -388,6 +388,6 @@ function printLegumesList() { $dompdf->setOptions($options); $dompdf->render(); - $dompdf->stream("Liste des légumes (".formatDate('', '', 'strdate').").pdf"); + $dompdf->stream("Liste des légumes (".formatDate('now', false, 'strdate').").pdf"); exit(); }