Modul zeigt im Zeitraum vom 1. Advent bis zum 2. Weihnachtsfeiertag einen Adventskranz mit brennenden Kerzen. Ein "Countdown" zählt die Tage bis zum Heiligen Abend . https://sandbox.dceserver.de/module/ewiger-adventskranz/index.html
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

152 lines
4.8 KiB

<?php
/**
* Modul Output: Ewiger Advents Kalender
*
* @package Module
* @subpackage calendars
* @version $Rev$
* @author Ortwin Pinke <o.pinke@php-backoffice.de>
* @copyright 2011 PHP-Backoffice
* @link www.php-backoffice.de
* @link http://www.contenido.org
*
* $Id$
*/
$cfgMod = array(
'debug' => false,
'eak_imgset' => 'default/',
'show_countdown' => true
);
// init db-object
if (!is_object($oDb)) {
$oDb = new DB_Contenido();
}
// init template
if (!is_object($oTpl)) {
$oTpl = new Template();
}
$oTpl->reset();
// init debugger
if ($cfgMod['debug']) {
cInclude('classes', 'Debug/DebuggerFactory.class.php');
/* @var $oDebug Debug_VisibleAdv */
$oDebug = DebuggerFactory::getDebugger('visible_adv');
}
$oToday = new DateTime();
if ($cfgMod['debug']) {
if(isset($_GET['dateoffset'])) {
$oToday->modify($_GET['dateoffset']." days");
}
}
$oXmasDate = new DateTime(date("Y")."-12-24 23:59:59");
$oXmasMondayDate = clone $oXmasDate;
$oXmasMondayDate->modify("+2 days");
$oFirstAdventDate = new DateTime(date("Y")."-11-26");
$oFirstAdventDate->modify("next sunday");
$oSecondAdvent = clone $oFirstAdventDate;
$oSecondAdvent->modify("+7 days");
$oThirdAdvent = clone $oSecondAdvent;
$oThirdAdvent->modify("+7 days");
$oFourthAdvent = clone $oThirdAdvent;
$oFourthAdvent->modify("+7 days");
if($oToday <= $oXmasMondayDate && $oToday >= $oFirstAdventDate) {
$sImgPath = $cfgClient[$client]['path']['htmlpath'].getEffectiveSetting('adventskranz', 'imghtmlpath', "images/adventskranz/".$cfgMod['eak_imgset']);
$bShowCountDown = getEffectiveSetting('adventskranz', 'show_countdown', $cfgMod['show_countdown']);
if($oToday >= $oFirstAdventDate && $oToday < $oSecondAdvent) {
$sImgPath .= "advent1.gif";
} else if($oToday >= $oSecondAdvent && $oToday < $oThirdAdvent) {
$sImgPath .= "advent2.gif";
} else if ($oToday >= $oThirdAdvent && $oToday < $oFourthAdvent) {
$sImgPath .= "advent3.gif";
} else {
$sImgPath .= "advent4.gif";
}
echo '<div id="adventskranz" style="position: relative; width: 200px; margin: auto; text-align: center;">'."\n";
echo '<!-- Der Ewige Adventskranz 1.0 fuer Contenido, (c)2011 PHP-Backoffice <www.php-backoffice.de> -->'."\n";
echo '<img src="'.$sImgPath.'" alt="'.mi18n("Der ewige Adventskranz").'" />'."\n";
if($bShowCountDown) {
echo '<p class="eak_countdown">'."\n";
// countdown till xmas
$iDaysTillmas = (int) daysdiff( $oXmasDate->format("Y-m-d"), $oToday->format("Y-m-d"));
if($iDaysTillmas > 1) {
printf(mi18n("Noch %s Tage bis Weihnachten"), $iDaysTillmas);
} else if($iDaysTillmas == 1) {
printf(mi18n("Noch %s Tag bis Weihnachten"), $iDaysTillmas);
} else if($iDaysTillmas === 0) {
echo mi18n("Frohe Weihnacht!<br/>(Heiliger Abend)");
} else {
echo mi18n("Frohe Weihnacht!");
}
echo "</p>"."\n";
}
echo '<div style="position: absolute; width:20px; height:20px; top:0; right: 0;">
<a href="http://sandbox.dceserver.de/deutsch/module/ewiger-adventskranz/index.html" style="color: #aaa; textdecoration: none; cursor: pointer;"
title="Der Ewige Adventskranz 1.0 fuer Contenido (c)2011 PHP-Backoffice">&copy;</a></div>';
echo "</div>"."\n";
}
// show debug & cleanup
if ($cfgMod['debug']) {
$oDebug->add($cfgClient, "cfgClient array");
$oDebug->add($oToday, "Heute DateTime object");
$oDebug->add($oXmasDate, "Xmas DateTime object");
$oDebug->add($oFirstAdventDate, "1. Advent DateTime object");
$oDebug->add($oSecondAdvent, "2. Advent DateTime object");
$oDebug->add($oThirdAdvent, "3. Advent DateTime object");
$oDebug->add($oFourthAdvent, "4. Advent DateTime object");
$oDebug->showAll();
unset($oDebug);
}
unset($cfgMod);
/**
* compare two datetime objects
* workaround of a php-bug in PHP for windows
*
* @author fbastage at yahoo dot com
* @link https://bugs.php.net/bug.php?id=51184
* @param DateTime $dt1
* @param DateTime $dt2
* @param type $timeZone
* @return type
*/
function daysdiff($dt1, $dt2, $timeZone = 'UTC') {
$tZone = new DateTimeZone($timeZone);
$dt1 = new DateTime($dt1, $tZone);
$dt2 = new DateTime($dt2, $tZone);
// use the DateTime datediff function IF we have a non-buggy version
// there is a bug in many Windows implementations that diff() always returns
// 6015
if(version_compare(phpversion(), "5.3", ">=") && $dt1->diff($dt1)->format("%a") != 6015 ) {
return $dt1->diff($dt2)->format("%a");
}
// else let's use our own method
$y1 = $dt1->format('Y');
$y2 = $dt2->format('Y');
$z1 = $dt1->format('z');
$z2 = $dt2->format('z');
$diff = intval($y1 * 365.2425 + $z1) - intval($y2 * 365.2425 + $z2);
return $diff;
}
?>