Hallo Leute,
ich bastel für meinen Shop an einer Funktion um den Liefertag zu berechnen,
dabei sollen die Deutschlandweiten Feiertage berücksichtigt werden.
Meine Frage?
Mir geht es darum neue Denkanstöße zu bekommen um den Code zuverbessern
da mir bei den Datums funktionen der kopf raucht
ich bastel für meinen Shop an einer Funktion um den Liefertag zu berechnen,
dabei sollen die Deutschlandweiten Feiertage berücksichtigt werden.
Meine Frage?
Mir geht es darum neue Denkanstöße zu bekommen um den Code zuverbessern
da mir bei den Datums funktionen der kopf raucht

PHP-Code:
if (!isset($xtPlugin->active_modules['sc_shippingtime'])){
$show_box = false;} else {
global $page;
$timeAct = time()+10800;
$today = getdate();
$stunde = $today['hours'];
$min = $today['minutes'];
$aStunde = ("$stunde.$min");
$tag = $today['mday'];
$weekday = $today['weekday'];
$monat = $today['mon'];
$jahr = $today['year'];
// Parameter in richtiges Format bringen
if(strlen($tag) == 1) {
$tag = "0$tag";
}
if(strlen($monat) == 1) {
$monat = "0$monat";
}
// Wochentag berechnen
$datum = getdate(mktime(0, 0, 0, $monat, $tag, $jahr));
$wochentag = $datum['wday'];
// PrĂ¼fen, ob Wochenende und Zeitfenster setzen
if($wochentag == 0) {$limit = 'true';
} elseif ($wochentag == 6) {$sTimeLimit = 9;
} else {$sTimeLimit = 15; $inwoche = 'ja';}
//Vergangenne Zeit vom Limit bis 24 UHR
$timeActH = strftime('%H', $timeAct);
$timeActM = strftime('%M', $timeAct);
$timeActUnix = mktime($timeActH,$timeActM,0,0,0,0);
$sTimeLimitUnix = mktime($sTimeLimit,0,0,0,0,0);
$timeAfterLimit = ($timeActUnix-$sTimeLimitUnix);
// Feste Feiertage werden nach dem Schema ddmm eingetragen
$feiertage[] = "0101"; // Neujahrstag
$feiertage[] = "0105"; // Tag der Arbeit
$feiertage[] = "0310"; // Tag der Deutschen Einheit
$feiertage[] = "2512"; // Erster Weihnachtstag
$feiertage[] = "2612"; // Zweiter Weihnachtstag
// Bewegliche Feiertage berechnen
$tage = 60 * 60 * 24;
$ostersonntag = easter_date($jahr);
$feiertage[] = date("dm", $ostersonntag - 2 * $tage); // Karfreitag
$feiertage[] = date("dm", $ostersonntag + 1 * $tage); // Ostermontag
$feiertage[] = date("dm", $ostersonntag + 39 * $tage); // Himmelfahrt
$feiertage[] = date("dm", $ostersonntag + 50 * $tage); // Pfingstmontag
// PrĂ¼fen, ob Feiertag true false
$code = $tag.$monat;
if(in_array($code, $feiertage)) {
$feiertag = 'ja';
} else {
$feiertag = 'nein';
}
// Maindays auf Aktuelle Zeit setzen und Lieferzeitberechnung
$manidays = $timeAct;
$vergangeneZeit = 60*60*$stunde;
if($sTimeLimit <= $aStunde){$limit = 'true';} else {$limit = 'false';}
if($feiertag == 'nein' && $limit == 'false'){
switch ($wochentag) {
case 5:
$LieferdatumUnix = $manidays + 86400 - $vergangeneZeit;
break;
case 6:
$LieferdatumUnix = $manidays + 172800 - $vergangeneZeit;
break;
case 0:
$LieferdatumUnix = $manidays + 172800 - $vergangeneZeit;
break;
default:
$LieferdatumUnix = $manidays + 86400 - $vergangeneZeit;
} }
if($feiertag == 'nein' && $limit == 'true'){
switch ($wochentag) {
case 5:
$LieferdatumUnix = $manidays + 259200 - $vergangeneZeit;
break;
case 6:
$LieferdatumUnix = $manidays + 259200 - $vergangeneZeit;
break;
case 0:
$LieferdatumUnix = $manidays + 172800 - $vergangeneZeit;
break;
default:
$LieferdatumUnix = $manidays + 172800 - $vergangeneZeit;
} }
if($feiertag == 'ja'){
switch ($wochentag) {
case 5:
$LieferdatumUnix = $manidays + 432000 - $vergangeneZeit;
break;
case 6:
$LieferdatumUnix = $manidays + 345600 - $vergangeneZeit;
break;
case 0:
$LieferdatumUnix = $manidays + 259200 - $vergangeneZeit;
break;
default:
$LieferdatumUnix = $manidays + 172800 - $vergangeneZeit;
} }
// Zeitlimit fĂ¼r Bestellung berechnen
$orderTimelimit = (60*60*$sTimeLimit) - $timeAct;
$Lieferdatum = utf8_encode(strftime('%A, %d. %B', $LieferdatumUnix));
$orderTimelimitH = strftime('%H', $orderTimelimit);
$orderTimelimitM = strftime('%M', $orderTimelimit);
if($orderTimelimitH[0] == 0){$orderTimelimitH = substr($orderTimelimitH, -1);}
if($orderTimelimitM[0] == 0){$orderTimelimitM = substr($orderTimelimitM, -1);}
$Page_nombre = $page->page_name;
$tpl_data = array('feiertag'=>$feiertag,'Lieferdatum'=>$Lieferdatum,'HLimit'=>$orderTimelimitH,'MLimit'=>$orderTimelimitM, 'Page_nombre'=>$Page_nombre);
$show_box = true;}
Kommentar