Files
bm/public_html/public/tickets/calendar.php
2025-09-24 13:26:28 +02:00

129 lines
3.4 KiB
PHP

<?php
/** creates holidays and deletes past holidays
* must be called by a cronjob once a month
*
* @version 2.0.0
* @since 2008-02-13
* @author Martin Lenzelbauer
*
*/
define("ROOT", "../");
require_once(ROOT."include/config.inc.php");
require_once(ROOT."include/db.inc.php");
if(DEBUG){
foreach($_GET as $i=>$j){
$_POST[$i] = urldecode($j);
}
}
switch($_GET['action']){
case "updateCalendar": updateCalendar();
break;
case "load": load();
break;
case "save": save();
break;
}
/** creates new auto-generated holidays and removes past holidays
*/
########################################
function updateCalendar(){
########################################
// delete past holidays
$query = sprintf("DELETE FROM bruckm_ticketcalendar WHERE holiday < NOW()");
$result = dbQuery($query);
// if it is december, create auto-generated holidays for next year
$year = date("Y") + 1;
if (date("m") == 12) {
// create saturdays and sundays
$timestamp = time();
$day = date("w");
$secondsPerDay = 24 * 60 * 60;
if($day == 0) $day = 7;
$timestamp += (6 - $day) * $secondsPerDay;
$maxTimestamp = strtotime($year . "-12-31");
while($timestamp <= $maxTimestamp){
$query = sprintf("INSERT IGNORE INTO bruckm_ticketcalendar (holiday) VALUES (%s)", sqlstring(date("Y-m-d", $timestamp)));
dbQuery($query);
$timestamp += $secondsPerDay;
$query = sprintf("INSERT IGNORE INTO bruckm_ticketcalendar (holiday) VALUES (%s)", sqlstring(date("Y-m-d", $timestamp)));
dbQuery($query);
$timestamp += 6 * $secondsPerDay;
}
// create fixed holidays
$holidays = array ("-01-01",
"-01-06",
"-05-01",
"-08-15",
"-11-01",
"-12-08",
"-12-25",
"-12-26"
);
foreach($holidays as $h){
$query = sprintf("INSERT IGNORE INTO bruckm_ticketcalendar (holiday) VALUES (%s)", sqlstring($year . $h));
dbQuery($query);
}
}
// send mail to admin and office
#@mail(ADMIN, "Bruckmühle Ticketkalender", "Feiertage aktualisiert");
#@mail(OFFICE, "Ticketreservierung: Feiertagskalender", "Der Feiertagskalender für das kommende Jahr wurde erstellt. Bitte fügen Sie gegebenenfalls zusätzliche Feiertage hinzu");
}
/** saves changes to the calendar
*/
########################################
function save(){
########################################
if(!empty($_POST['added'])){
$added = explode("\t", $_POST['added']);
foreach($added as $h){
$query = sprintf("INSERT IGNORE INTO bruckm_ticketcalendar (holiday) VALUES (%s)", sqlstring(date("Y-m-d", $h)));
dbQuery($query);
}
}
if(!empty($_POST['removed'])){
$removed = explode("\t", $_POST['removed']);
foreach($removed as $h){
$query = sprintf("DELETE FROM bruckm_ticketcalendar WHERE holiday = %s", sqlstring(date("Y-m-d", $h)));
dbQuery($query);
}
}
}
/** loads the calendar data
*/
########################################
function load(){
########################################
$query = sprintf("SELECT * FROM bruckm_ticketcalendar WHERE holiday > NOW() ORDER BY holiday ASC");
$result = dbQuery($query);
$xml = '<?xml version="1.0" encoding="utf-8"?>';
$xml .= '<calendar>';
while($line = mysqli_fetch_array($result, MYSQLI_ASSOC)){
$xml .= '<holiday timestamp="' . strtotime($line['holiday']) . '" />';
}
$xml .= '</calendar>';
header('Content-Type: text/xml');
echo $xml;
}
?>