Files
Kundenverwaltung/incs/funcs.php
T
adminandClaude Opus 5 3dfbf1c9c7 Kunden und Adressen auf Prepared Statements umgebaut
incs/saveNchange.php neu geschrieben: Adressen, Telefonnummern, Kontakte,
Notizen und Konten laufen ueber db_abfrage() mit Platzhaltern, mehrschrittiges
Speichern in einer Transaktion. Weil sich die Speicherfunktionen gegenseitig
aufrufen, klammern beginneSpeichern()/beendeSpeichern() die Verschachtelung;
incs/rechnung.php nutzt sie ebenfalls.

Kunden- und Lieferantenseiten waren zwei fast gleiche Kopien und teilen sich
jetzt partnerAddSeite(), partnerChangeSeite() und partnerShowDaten().

Dabei behoben:
- SQL-Injektion ueber die Suchbegriffe der Kunden-, Lieferanten-, Adress-,
  Kommissions- und Projektsuche sowie ueber die Artikel-Autovervollstaendigung
- gespeichertes XSS: Notizen (nl2br escapt nicht), Bankname, Dokumenttyp,
  Namen und Adressen in allen Trefferlisten
- sites/liefershow.php war unter PHP 8 ein Fatal ($kdnres.id)
- "Telefonnummer loeschen" im Kundenbereich lief in einen Fatal, die Nummern
  einer geloeschten Adresse blieben stehen (Spalte hiess adress_id statt
  adresse_id, mysql_fetch_assoc gibt es nicht mehr)
- Geburtstag ohne Jahr wurde im Formular verschluckt, die IBAN kam beim
  Bearbeiten aus $_GET statt aus dem Konto
- die Versionskette eines Kunden brach nach einem Schritt ab
- Kommissionsadressen speicherten die Ortsangabe der Adresse statt der des
  Telefonformulars und einen Adresstyp als Telefontyp
- Blaettern in den Trefferlisten: ohne ORDER BY konnte dieselbe Zeile zweimal
  oder gar nicht erscheinen; ajax_searchadress() bekam die Seite nicht
- Hauptadresse laesst sich nicht mehr loeschen, Kundendaten nicht mehr ueber
  die Lieferantenseite (und umgekehrt)
- ajax/auto/* baute JSON von Hand zusammen, ein Anfuehrungszeichen im Ort
  machte die Liste unbrauchbar

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-21 19:47:01 +02:00

889 lines
26 KiB
PHP

<?php
function find_mobile_browser() {
if(preg_match('/(alcatel|android|blackberry|benq|cell|elaine|htc|iemobile|iphone|ipad|ipaq|ipod|j2me|java|midp|mini|mobi|motorola|nokia|palm|panasonic|philips|phone|sagem|sharp|smartphone|sony|symbian|t-mobile|up\.browser|up\.link|vodafone|wap|wireless|xda|zte)/i', $_SERVER['HTTP_USER_AGENT'])) {
return true;
} else {
return false;
}
}
function number_significant($x, $n) {
$x_sci = sprintf("%.".$n."e", $x);
$x_f = rtrim(sprintf("%f", $x_sci),"0");
if ( $x_f[strlen($x_f)-1]=="." ) {
$x_f = trim($x_f,".");
}
$x_f = str_replace(".",",",$x_f);
return $x_f;
}
function rrmdir($dir) {
if (is_dir($dir)) {
$objects = scandir($dir);
foreach ($objects as $object) {
if ($object != "." && $object != "..") {
if (filetype($dir."/".$object) == "dir") rrmdir($dir."/".$object); else unlink($dir."/".$object);
}
}
reset($objects);
rmdir($dir);
}
}
function del_files($path, $pattern) {
$matches = Array();
$entries = Array();
// Fehlt das Verzeichnis, gibt es auch nichts zu loeschen
if(!is_dir($path))
return;
$dir = dir($path);
while ($entry = $dir->read())
{
$fullname = $path . $entry;
if ($entry != '.' && $entry != '..' && is_file($fullname) && preg_match($pattern, $entry))
{
unlink($fullname);
}
}
$dir->close();
}
function search_file($path, $pattern) {
$matches = Array();
$entries = Array();
$ret = "";
// Fehlt das Verzeichnis, gibt es auch nichts zu finden
if(!is_dir($path))
return $ret;
$dir = dir($path);
while ($entry = $dir->read())
{
$fullname = $path . $entry;
if ($entry != '.' && $entry != '..' && is_file($fullname) && preg_match($pattern, $entry))
{
$ret = $fullname;
break;
}
}
$dir->close();
return $ret;
}
function PopulateSessionVars()
{
if(!isset($_SESSION["login"]))
{
$_SESSION['login'] = "invalid";
}
if(!isset($_SESSION["zoom"]))
$_SESSION['zoom'] = 1;
if(!isset($_SESSION["globalNotes"]))
$_SESSION["globalNotes"]="";
if(!isset($_SESSION["privateNotes"]))
$_SESSION["privateNotes"]="";
}
use PHPMailer\PHPMailer\PHPMailer;
function mail_attachment($filename, $path, $mailto, $from_mail, $from_name, $replyto, $subject, $message) {
// SMTP-Zugänge stehen in der externen Config, je Firma ein Eintrag,
// "*" gilt für alle übrigen: array("user" => "...", "pw" => "...")
global $smtp_konten;
if(isset($smtp_konten[$_SESSION["firma"]]))
$konto = $smtp_konten[$_SESSION["firma"]];
elseif(isset($smtp_konten["*"]))
$konto = $smtp_konten["*"];
else
return error("Kein SMTP-Zugang für \"".htmlspecialchars($_SESSION["firma"])."\" in der Konfiguration (\$smtp_konten).");
$mail = new PHPMailer();
$mail->IsSMTP();
//$mail->SMTPDebug = 1;
$mail->Encoding = PHPMailer::ENCODING_BASE64;
$mail->CharSet = 'UTF-8'; // set mailer to use SMTP
$mail->Host = "w0099dc6.kasserver.com"; // specify main and backup server
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->SMTPSecure = "ssl";
$mail->Port = 465;
$mail->Username = $konto["user"];
$mail->Password = $konto["pw"];
$mail->From = $from_mail;
$mail->FromName = $from_name;
$mail->AddAddress($mailto); // name is optional
$mail->AddReplyTo($replyto);
$mail->WordWrap = 50; // set word wrap to 50 characters
$mail->AddAttachment($path.$filename,"Dokument.pdf"); // add attachments
$mail->IsHTML(false); // set email format to HTML
$mail->Subject = $subject;
$mail->Body = $message;
if(!$mail->Send())
{
$err = error("Die E-Mail konnte nicht gesendet werden....<br />Fehler: ".$mail->ErrorInfo);
}
return $err;
/*
$file = $path.$filename;
$file_size = filesize($file);
$handle = fopen($file, "r");
$content = fread($handle, $file_size);
fclose($handle);
$content = chunk_split(base64_encode($content));
$uid = md5(uniqid(time()));
$name = basename($file);
$header = "From: ".$from_name." <".$from_mail.">\n";
$header .= "Reply-To: ".$replyto."\n";
$header .= "MIME-Version: 1.0\n";
$header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\n\n";
$header .= "This is a multi-part message in MIME format.\n";
$header .= "--".$uid."\n";
$header .= "Content-type:text/plain; charset=UTF-8\n";
$header .= "Content-Transfer-Encoding: 7bit\n\n";
$header .= $message."\n\n";
$header .= "--".$uid."\n";
$header .= "Content-Type: application/octet-stream; name=\"".$filename."\"\n"; // use different content types here
$header .= "Content-Transfer-Encoding: base64\n";
$header .= "Content-Disposition: attachment; filename=\"".$filename."\"\n\n";
$header .= $content."\n\n";
$header .= "--".$uid."--";
//mail("m0w1337@gmail.com", $subject, "", $header);
if (!mail($mailto, $subject, "", $header)) {
$err = error("Mail could not be sent, sorry...");
}
return $err;
*/
}
function error($message)
{
global $smarty;
static $numerror = 0;
if(is_object ( $smarty)){
if($numerror < 10000)
{
$smarty->assign("message",$message);
$smarty->assign("msgtype","error");
$smarty->display('message.tpl');
}
else if($numerror ==10000)
{
$smarty->assign("message","über $numerror Fehler... weitere werden nicht gemeldet");
$smarty->assign("msgtype","error");
$smarty->display('message.tpl');
}
}
else{
echo $message;
}
$numerror++;
return 1;
}
function message($message)
{
global $smarty;
static $nummessage = 0;
if($nummessage < 100)
{
$smarty->assign("message",$message);
$smarty->assign("msgtype","message");
$smarty->display('message.tpl');
}
else if($nummessage == 100)
{
$smarty->assign("message","über $nummessage Nachrichten... weitere werden nicht gemeldet");
$smarty->assign("msgtype","error");
$smarty->display('message.tpl');
}
$nummessage++;
return 1;
}
function ok($message)
{
global $smarty;
static $numok = 0;
if($numok < 100)
{
$smarty->assign("message",$message);
$smarty->assign("msgtype","ok");
$smarty->display('message.tpl');
}
else if($numok == 100)
{
$smarty->assign("message","über $numok OK-Meldungen... weitere werden nicht gemeldet");
$smarty->assign("msgtype","error");
$smarty->display('message.tpl');
}
$numok++;
return 1;
}
function doneNreturn($message)
{
global $smarty;
$smarty->assign("message",$message);
$smarty->assign("msgtype","ok");
$smarty->display('message.tpl');
echo "<script>window.location='?action=".$_SESSION["camefrom"]."'</script>";
return 1;
}
function warning($message)
{
global $smarty;
static $numwarning = 0;
if($numwarning < 100)
{
$smarty->assign("message",$message);
$smarty->assign("msgtype","warning");
$smarty->display('message.tpl');
}
else if($numok == 100)
{
$smarty->assign("message","über $numok Warnungen... weitere werden nicht gemeldet");
$smarty->assign("msgtype",error);
$smarty->display('message.tpl');
}
$numwarning++;
return 1;
}
function formaterror($error)
{
$ret = "";
$mysql_error = 1;
if($mysql_error)
{
$ret = "<span class='errortype'>MySQL Fehler:</span><br />";
$ret .= "<span class='errordesc'>".$error."</span><br />";
//$ret .= "<span class='errorline'>In Zeile ".$match[2]."<span>";
}
else
{
$ret = "<span class='errortype'>Unbekannter Fehlertyp:</span><br /><span class='errordesc'>".$error."</span>";
}
return $ret;
}
function displayRights($rights)
{
for($i=0; $i<6; $i++)
{
if($i == 2) //skip angebote
$i = 3;
switch($i)
{
case RIGHTS_KUNDEN:
$group="kunden";
break;
case RIGHTS_TERMINE:
$group="termine";
break;
case RIGHTS_ANGEBOTE:
$group="angebote";
break;
case RIGHTS_LIEFER:
$group="zulieferer";
break;
case RIGHTS_RECHNUNGEN:
$group="rechnungen";
break;
case RIGHTS_SUPERADMIN:
$group="superadmin";
break;
}
switch(substr($rights,$i,1))
{
case RIGHTS_ALL:
$ret.="<img src='pics/rights/".$group."_all.png' class='rightsicon' title='<b>".ucfirst($group).":</b> Anlegen, Löschen, Bearbeiten, Ansehen' />";
break;
case RIGHTS_LOOKCHANGE:
$ret.="<img src='pics/rights/".$group."_change.png' class='rightsicon' title='<b>".ucfirst($group).":</b> Bearbeiten, Ansehen' />";
break;
case RIGHTS_LOOK:
$ret.="<img src='pics/rights/".$group."_look.png' class='rightsicon' title='<b>".ucfirst($group).":</b> Ansehen' />";
break;
case RIGHTS_NONE:
$ret.="<img src='pics/rights/".$group."_none.png' class='rightsicon' title='<b>".ucfirst($group).":</b> Keine Rechte' />";
break;
default:
$ret.="<img src='pics/rights/".$group."_none.png' class='rightsicon' title='<b>".ucfirst($group).":</b> Gemixte Rechte' />";
break;
}
}
return $ret;
}
function checkRightsNInclude()
{
$ret = 0;
if(!strstr($_GET["action"],"kunde"))
{
$_SESSION["search"] = "";
$_SESSION["page"] = "";
$_SESSION["link"] = "";
$_SESSION["field"] = "";
}
switch($_GET["action"])
{
case "kunden":
if(substr($_SESSION["rights"],RIGHTS_KUNDEN,1) & RIGHTS_LOOK)
{
$ret = "./sites/kunden.php";
}
break;
case "stexp":
if(substr($_SESSION["rights"],RIGHTS_RECHNUNGEN,1) & RIGHTS_CHANGE)
{
$ret = "./sites/stexp.php";
}
break;
case "kundenshow":
if(substr($_SESSION["rights"],RIGHTS_KUNDEN,1) & RIGHTS_LOOK)
{
$ret = "./sites/kundenshow.php";
}
break;
case "kundenchange":
if(substr($_SESSION["rights"],RIGHTS_KUNDEN,1) & RIGHTS_ADD)
{
$ret = "./sites/kundenchange.php";
}
elseif(substr($_SESSION["rights"],RIGHTS_KUNDEN,1) & RIGHTS_CHANGE)
{
if(!$_GET["del"])
$ret = "./sites/kundenchange.php";
}
break;
case "kundenadd":
if(substr($_SESSION["rights"],RIGHTS_KUNDEN,1) & RIGHTS_ADD)
{
$ret = "./sites/kundenadd.php";
}
break;
case "projectlist":
if(substr($_SESSION["rights"],RIGHTS_KUNDEN,1) & RIGHTS_ADD)
{
$ret = "./sites/projectlist.php";
}
break;
case "projectadd":
if(substr($_SESSION["rights"],RIGHTS_KUNDEN,1) & RIGHTS_ADD)
{
$ret = "./sites/projectadd.php";
}
break;
case "projectshow":
if(substr($_SESSION["rights"],RIGHTS_KUNDEN,1) & RIGHTS_ADD)
{
$ret = "./sites/projectshow.php";
}
break;
case "projecthours":
if(substr($_SESSION["rights"],RIGHTS_KUNDEN,1) & RIGHTS_ADD)
{
$ret = "./sites/projecthours.php";
}
break;
case "liefer":
if(substr($_SESSION["rights"],RIGHTS_LIEFER,1) & RIGHTS_LOOK)
{
$ret = "./sites/liefer.php";
}
break;
case "liefershow":
if(substr($_SESSION["rights"],RIGHTS_LIEFER,1) & RIGHTS_LOOK)
{
$ret = "./sites/liefershow.php";
}
break;
case "lieferchange":
if(substr($_SESSION["rights"],RIGHTS_LIEFER,1) & RIGHTS_ADD)
{
$ret = "./sites/lieferchange.php";
}
elseif(substr($_SESSION["rights"],RIGHTS_LIEFER,1) & RIGHTS_CHANGE)
{
if(!$_GET["del"])
$ret = "./sites/lieferchange.php";
}
break;
case "lieferadd":
if(substr($_SESSION["rights"],RIGHTS_LIEFER,1) & RIGHTS_ADD)
{
$ret = "./sites/lieferadd.php";
}
break;
case "rechnung":
if(substr($_SESSION["rights"],RIGHTS_RECHNUNGEN,1) & RIGHTS_LOOK)
{
$ret = "./sites/rechnungen.php";
}
break;
case "rechshow":
if(substr($_SESSION["rights"],RIGHTS_RECHNUNGEN,1) & RIGHTS_CHANGE && $_GET["id"])
{
$ret = "./sites/rechshow.php";
}
break;
case "umschlagshow":
if(substr($_SESSION["rights"],RIGHTS_RECHNUNGEN,1) & RIGHTS_CHANGE)
{
$ret = "./sites/umschlagshow.php";
}
break;
case "rechnungadd":
if(substr($_SESSION["rights"],RIGHTS_RECHNUNGEN,1) & RIGHTS_CHANGE && $_GET["id"])
{
$ret = "./sites/rechnungadd.php";
}
if(substr($_SESSION["rights"],RIGHTS_RECHNUNGEN,1) & RIGHTS_ADD)
{
$ret = "./sites/rechnungadd.php";
}
break;
case "suchen":
if(substr($_SESSION["rights"],RIGHTS_RECHNUNGEN,1) & RIGHTS_LOOK && substr($_SESSION["rights"],RIGHTS_KUNDEN,1) & RIGHTS_LOOK)
{
$ret = "./sites/suchen.php";
}
break;
case "zeiten":
if(substr($_SESSION["rights"],RIGHTS_TERMINE,1) & RIGHTS_LOOK)
{
$ret = "./sites/zeiten.php";
}
break;
case "zeitenadd":
if(substr($_SESSION["rights"],RIGHTS_TERMINE,1) & RIGHTS_CHANGE)
{
$ret = "./sites/zeitenadd.php";
}
break;
case "zeitenprint":
if(substr($_SESSION["rights"],RIGHTS_TERMINE,1) & RIGHTS_LOOK)
{
$ret = "./sites/zeitenprint.php";
}
break;
case "termin":
if(substr($_SESSION["rights"],RIGHTS_TERMINE,1) & RIGHTS_LOOK)
{
$ret = "./sites/termin.php";
}
break;
case "terminadd":
if(substr($_SESSION["rights"],RIGHTS_TERMINE,1) & RIGHTS_CHANGE && $_GET["id"])
{
$ret = "./sites/terminadd.php";
}
if(substr($_SESSION["rights"],RIGHTS_TERMINE,1) & RIGHTS_ADD)
{
$ret = "./sites/terminadd.php";
}
break;
case "terminshow":
if(substr($_SESSION["rights"],RIGHTS_TERMINE,1) & RIGHTS_LOOK && $_GET["id"])
{
$ret = "./sites/terminshow.php";
}
break;
case "settings":
$ret = "./sites/settings.php";
break;
case "useradd":
if(substr($_SESSION["rights"],RIGHTS_SUPERADMIN,1) & RIGHTS_CHANGE && $_GET["id"])
{
$ret = "./sites/useradd.php";
}
if(substr($_SESSION["rights"],RIGHTS_SUPERADMIN,1) & RIGHTS_ADD)
{
$ret = "./sites/useradd.php";
}
break;
case "charts":
if(substr($_SESSION["rights"],RIGHTS_KUNDEN,1) & RIGHTS_LOOK && substr($_SESSION["rights"],RIGHTS_RECHNUNGEN,1) & RIGHTS_LOOK)
{
$ret = "./sites/charts.php";
}
break;
case "logout":
$ret = "./sites/logout.php";
break;
case "messages":
$ret = "./sites/messages.php";
break;
case "projectlist":
$ret = "./sites/projectlist.php";
break;
case "userkeys":
if(substr($_SESSION["rights"],RIGHTS_SUPERADMIN,1) & RIGHTS_CHANGE && $_GET["id"])
{
$ret = "./sites/userkeys.php";
}
break;
case "":
$ret = "./sites/start.php";
break;
default:
$ret = "./sites/nothere.php";
break;
}
if(!$ret)
{
$ret = "./sites/norights.php";
}
return $ret;
}
function GetWeather($plz='87509', $land='germany', $icons_src="./pics/icons/weather/", $sprache="de", $ort="")
{
$icons_google = "/ig/images/weather/";
if($ort != "")
{
$station = $ort;
}
else
{
$station = $plz."-".$land;
}
// API-Schlüssel stehen in der externen Config
global $openweathermap_appid, $aeris_client_id, $aeris_client_secret;
$url[0] = "http://api.openweathermap.org/data/2.5/weather?zip=87509,de&APPID=".urlencode($openweathermap_appid);
$url[1] = "http://api.aerisapi.com/forecasts/immenstadt,germany?client_id=".urlencode($aeris_client_id)."&client_secret=".urlencode($aeris_client_secret)."&from=today&to=+6days";
$response = file_get_contents($url[1]);
$json = json_decode($response);
if ($json->success == true) {
for($i=0;$i<7;$i++)
{
// create reference to our returned observation object
$ob = $json->response[0]->main;
$wetter[$i+1]['low'] = $ob->temp_min;
$wetter[$i+1]['high'] = $ob->temp_max;
$wetter[$i+1]['zustand'] = $ob->main;
$wetter[$i+1]['temperatur'] = $ob->temp;
$wetter[$i+1]['luftfeuchtigkeit'] = $ob->humidity;
$wetter[$i+1]['wind'] = $ob->wind->speed;
$wettercond = substr($ob->weatherPrimaryCoded,strrpos($ob->weatherPrimaryCoded,":")+1);
if($wettercond == "CL")
$wetter[$i+1]['icon'] = $icons_src."sunny.png";
elseif($wettercond == "FW")
$wetter[$i+1]['icon'] = $icons_src."mostly_sunny.png";
elseif($wettercond == "SC")
$wetter[$i+1]['icon'] = $icons_src."partly_cloudy.png";
elseif($wettercond == "BK")
$wetter[$i+1]['icon'] = $icons_src."mostly_cloudy.png";
elseif($wettercond == "OV")
$wetter[$i+1]['icon'] = $icons_src."cloudy.png";
elseif($wettercond == "A")
$wetter[$i+1]['icon'] = $icons_src."sleet.png";
elseif($wettercond == "BD")
$wetter[$i+1]['icon'] = $icons_src."dust.png";
elseif($wettercond == "BN")
$wetter[$i+1]['icon'] = $icons_src."haze.png";
elseif($wettercond == "BS")
$wetter[$i+1]['icon'] = $icons_src."snow.png";
elseif($wettercond == "F")
$wetter[$i+1]['icon'] = $icons_src."fog.png";
elseif($wettercond == "FR")
$wetter[$i+1]['icon'] = $icons_src."icy.png";
elseif($wettercond == "H")
$wetter[$i+1]['icon'] = $icons_src."haze.png";
elseif($wettercond == "IC" || $wettercond == "IF" || $wettercond == "IP")
$wetter[$i+1]['icon'] = $icons_src."icy.png";
elseif($wettercond == "K")
$wetter[$i+1]['icon'] = $icons_src."haze.png";
elseif($wettercond == "L" || $wettercond == "RW")
$wetter[$i+1]['icon'] = $icons_src."showers.png";
elseif($wettercond == "R" || $wettercond == "RS" || $wettercond == "SI")
$wetter[$i+1]['icon'] = $icons_src."rain.png";
elseif($wettercond == "WM" || $wettercond == "S" || $wettercond == "SW")
$wetter[$i+1]['icon'] = $icons_src."snow.png";
elseif($wettercond == "T")
$wetter[$i+1]['icon'] = $icons_src."thunderstorm.png";
else
$wetter[$i+1]['icon'] = $icons_src."na.png";
}
}
else {
echo sprintf("An error occurred: %s", $json->error->description);
}
/*
if($weatherXML = @file_get_contents("http://www.google.com/ig/api?weather=".$station."&hl=".$sprache))
{
if($api = simplexml_load_string(utf8_encode($weatherXML)))
{
$wetter = array();
// Allgemeine Informationen
$wetter['stadt'] = $api->weather->forecast_information->city->attributes()->data;
$wetter['datum'] = $api->weather->forecast_information->forecast_date->attributes()->data;
$wetter['zeit'] = $api->weather->forecast_information->current_date_time->attributes()->data;
// Aktuelles Wetter
$wetter[0]['zustand'] = $api->weather->current_conditions->condition->attributes()->data;
$wetter[0]['temperatur'] = $api->weather->current_conditions->temp_c->attributes()->data;
$wetter[0]['luftfeuchtigkeit'] = $api->weather->current_conditions->humidity->attributes()->data;
$wetter[0]['wind'] = $api->weather->current_conditions->wind_condition->attributes()->data;
$wetter[0]['icon'] = str_replace($icons_google, $icons_src, $api->weather->current_conditions->icon->attributes()->data);
$wetter[0]['icon'] = str_replace("gif", "png", $wetter[0]['icon']);
// Wettervorhersage für heute, morgen, übermorgen und in drei Tagen ($wetter[1] bis $wetter[4])
$i=1;
foreach($api->weather->forecast_conditions as $weather)
{
$wetter[$i]['wochentag'] = $weather->day_of_week->attributes()->data;
$wetter[$i]['zustand'] = $weather->condition->attributes()->data;
$wetter[$i]['low'] = $weather->low->attributes()->data;
$wetter[$i]['high'] = $weather->high->attributes()->data;
$wetter[$i]['icon'] = str_replace($icons_google, $icons_src, $weather->icon->attributes()->data);
$wetter[$i]['icon'] = str_replace("gif", "png", $wetter[$i]['icon']);
$i++;
}
}
else
{
for($i=0;$i<5;$i++)
{
$wetter[$i]['icon'] = "./pics/icons/weather/na.png";
$wetter[$i]['low'] = "x";
$wetter[$i]['high'] = "x";
}
}
}
else
{
for($i=0;$i<5;$i++)
{
$wetter[$i]['icon'] = "./pics/icons/weather/na.png";
$wetter[$i]['low'] = "x";
$wetter[$i]['high'] = "x";
}
}
*/
return $wetter;
}
function dispdate_to_mysql_date($date,$end=0)
{
if(strlen($date) == 19)
$date = substr($date,6,4)."-".substr($date,3,2)."-".substr($date,0,2)." ".substr($date,14,5).":00";
else if(strlen($date) == 10){
if($end)
$date = substr($date,6,4)."-".substr($date,3,2)."-".substr($date,0,2)." 23:59:59";
else
$date = substr($date,6,4)."-".substr($date,3,2)."-".substr($date,0,2)." 00:00:00";
}
else
$date = "0000-00-00 00:00:00";
return $date;
}
function mysql_date_to_dispdate($date)
{
if($date == "0000-00-00 00:00:00")
$date = "";
if($date)
$date = substr($date,8,2).".".substr($date,5,2).".".substr($date,0,4)." um ".substr($date,11,5);
return $date;
}
function disppause_to_mins($pause,$end=0)
{
if(strlen($pause) == 5)
$pause = (substr($pause,0,2)*60)+substr($pause,3,2);
else
$pause = 0;
return $pause;
}
function mins_to_disppause($pause)
{
$pause = str_pad(floor($pause/60),2,'0',STR_PAD_LEFT).":".str_pad(($pause%60),2,'0',STR_PAD_LEFT);
return $pause;
}
function ulraubdispdate_to_mysql_date($date)
{
if(strlen($date) == 19)
$date = substr($date,6,4)."-".substr($date,3,2)."-".substr($date,0,2)." 12:00";
else
$date = "0000-00-00 00:00:00";
return $date;
}
function mysql_date_to_urlaubdispdate($date)
{
if($date == "0000-00-00 00:00:00")
$date = "";
if($date)
$date = substr($date,8,2).".".substr($date,5,2).".".substr($date,0,4);
return $date;
}
function mysql_dauer($start,$end)
{
if($start == '0000-00-00 00:00:00' || $end == '0000-00-00 00:00:00')
{
$dauer = '00:00:00';
}
elseif(date_create($start) && date_create($end))
{
$dauer = date_diff(date_create($start),date_create($end));
$him = $dauer->format('%H:%I:00');
if(substr($start,11,8) == "00:00:00" && substr($end,11,8) == "00:00:00")
$days = ($dauer->format('%a'));
else
$days = $dauer->format('%a');
$dauer = ($days*24 + substr($him,0,2)).substr($him,2,6);
}
else
{
$dauer = "00:00:00";
}
return $dauer;
}
function dauer_to_date($start,$dauer)
{
if($dauer == "24:00:00"){
$dauer = "23:59:00";
}
$dauer_split=explode(":",$dauer);
$offsetstr = "+".$dauer_split[0]." hours ".$dauer_split[1]." minutes";
if($start != "0000-00-00 00:00:00")
$enddate = date("Y-m-d H:i:s",strtotime($offsetstr,strtotime($start)));
else
$enddate = "0000-00-00 00:00:00";
return $enddate;
}
function feiertag ($intTag, $intMonat, $intJahr) {
# festliegende Feiertage
if ($intTag==1 AND $intMonat==1) { return "Neujahr"; }
if ($intTag==1 AND $intMonat==5) { return "1. Mai"; }
if ($intTag==6 AND $intMonat==1) { return "Dreikönigstag"; }
if ($intTag==3 AND $intMonat==10) { return "Tag der deutschen Einheit"; }
if ($intTag==1 AND $intMonat==11) { return "Allerheiligen"; }
if ($intTag==25 AND $intMonat==12) { return "1. Weihnachtstag"; }
if ($intTag==26 AND $intMonat==12) { return "2. Weihnachtstag"; }
# nichtfeste Feiertage
if ($intTag==date("j",easter_date($intJahr)) AND $intMonat==date("n",easter_date($intJahr))) {
return "Ostersonntag";
}
if ($intTag==date("j",(easter_date($intJahr)) - 2*86400) AND $intMonat==date("n",(easter_date($intJahr)) - 2*86400)) {
return "Karfreitag";
}
if ($intTag==date("j",(easter_date($intJahr)) + 86400) AND $intMonat==date("n",(easter_date($intJahr)) + 86400)) {
return "Ostermontag";
}
if ($intTag==date("j",(easter_date($intJahr)) + 39*86400) AND $intMonat==date("n",(easter_date($intJahr)) + 39*86400)) {
return "Christi Himmelfahrt";
}
if ($intTag==date("j",(easter_date($intJahr)) + 50*86400) AND $intMonat==date("n",(easter_date($intJahr)) + 50*86400)) {
return "Pfingstmontag";
}
return false;
}
function feiertag_bayern($intTag, $intMonat, $intJahr) {
# festliegende Feiertage
if ($intTag==1 AND $intMonat==1) { return "Neujahr"; }
if ($intTag==1 AND $intMonat==5) { return "1. Mai"; }
if ($intTag==6 AND $intMonat==1) { return "Dreikönigstag"; }
if ($intTag==3 AND $intMonat==10) { return "Tag d. dt. Einh."; }
if ($intTag==1 AND $intMonat==11) { return "Allerheiligen"; }
if ($intTag==25 AND $intMonat==12) { return "1. Weihnachtstag"; }
if ($intTag==26 AND $intMonat==12) { return "2. Weihnachtstag"; }
# nichtfeste Feiertage
if ($intTag==date("j",easter_date($intJahr)) AND $intMonat==date("n",easter_date($intJahr))) {
return "Ostersonntag";
}
if ($intTag==date("j",(easter_date($intJahr)) - 2*86400) AND $intMonat==date("n",(easter_date($intJahr)) - 2*86400)) {
return "Karfreitag";
}
if ($intTag==date("j",(easter_date($intJahr)) + 86400) AND $intMonat==date("n",(easter_date($intJahr)) + 86400)) {
return "Ostermontag";
}
if ($intTag==date("j",(easter_date($intJahr)) + 39*86400) AND $intMonat==date("n",(easter_date($intJahr)) + 39*86400)) {
return "Christi Himmelf.";
}
if ($intTag==date("j",(easter_date($intJahr)) + 50*86400) AND $intMonat==date("n",(easter_date($intJahr)) + 50*86400)) {
return "Pfingstmontag";
}
if ($intTag==date("j",(easter_date($intJahr)) + 60*86400) AND $intMonat==date("n",(easter_date($intJahr)) + 60*86400)) {
return "Fronleichnam";
}
if ($intTag==15 AND $intMonat==8) {
return "Mariä Himmelfahrt";
}
return false;
}
function halbfeiertag ($intTag, $intMonat, $intJahr) {
if ($intTag==8 AND $intMonat==8) {
return "Augsburger Hohes Friedensfest (nur in Augsburg, weltweit der einzige gesetzlich geschützte städtische Feiertag)";
}
if ($intTag==15 AND $intMonat==8) {
return "Mariä Himmelfahrt - in manchen Bundesländern kein Feiertag";
}
if ($intTag==24 AND $intMonat==12) {return "Heiligabend";}
if ($intTag==31 AND $intMonat==12) {return "Silvester";}
if ($intTag==11 AND $intMonat==11) {
return "Faschingsbeginn- in manchen Gegenden kein echter Arbeitstag";
}
if ($intTag==date("j",(easter_date($intJahr)) - 51*86400) AND $intMonat==date("n",(easter_date($intJahr)) - 51*86400)) {
return "Weiberfastnacht, Wieverfastelovend, Fettdonnerstag - in manchen Gegenden kein echter Arbeitstag";
}
if ($intTag==date("j",(easter_date($intJahr)) - 47*86400) AND $intMonat==date("n",(easter_date($intJahr)) - 47*86400)) {
return "Rosenmontag- in manchen Gegenden kein echter Arbeitstag";
}
if ($intTag==date("j",(easter_date($intJahr)) - 46*86400) AND $intMonat==date("n",(easter_date($intJahr)) - 46*86400)) {
return "Faschingsdienstag- in manchen Gegenden kein echter Arbeitstag";
}
if ($intTag==date("j",(easter_date($intJahr)) + 60*86400) AND $intMonat==date("n",(easter_date($intJahr)) + 60*86400)) {
return "Fronleichnam - in manchen Bundesländern kein Feiertag";
}
return false;
}
?>