Bestehende Codebasis als Ausgangsstand aufgenommen. - .gitignore: Kundendaten (uploads_*), Smarty-Compile-Cache (templates_c), Laufzeit-Temp und Datenbank-Dumps ausgeschlossen; Verzeichnisstruktur ueber .gitkeep erhalten - .gitattributes: Zeilenenden normalisiert (LF im Repo), Binaerformate markiert - db-backup.php: MySQL-Zugangsdaten kommen jetzt wie im Rest der Anwendung aus der externen Konfiguration statt hartkodiert aus der Datei; Passwort wird ueber eine temporaere Optionsdatei statt per Kommandozeile uebergeben, Fehler von mysqldump/gzip werden gemeldet, Aufraeumen aelterer Backups berechnet Jahr und Monat konsistent Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
885 lines
26 KiB
PHP
885 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();
|
|
$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();
|
|
$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) {
|
|
|
|
|
|
$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;
|
|
if($_SESSION["firma"] == "Wagner Markisen")
|
|
{
|
|
$mail->Username = "info@wagner-markisen.de"; // SMTP username
|
|
$mail->Password = "m0w1337@RootServer"; // SMTP password
|
|
}
|
|
elseif($_SESSION["firma"] == "Ingenieurbüro Wagner")
|
|
{
|
|
$mail->Username = "m0w1337@gmail.com"; // SMTP username
|
|
$mail->Password = "Gmail@RootServer"; // SMTP password
|
|
}
|
|
else
|
|
{
|
|
$mail->Username = "wagnermarkisen12@googlemail.com"; // SMTP username
|
|
$mail->Password = "m0w1337@RootServer"; // SMTP password
|
|
}
|
|
|
|
$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;
|
|
}
|
|
//$url[0] = "http://api.aerisapi.com/observations/immenstadt,germany?client_id=8JYXl86uUEeoPl40ncnBs&client_secret=RvVVj0K9yFgmp7U8CmgCH57YwGYeyuHjHtrSPxGV";
|
|
$url[0] = "http://api.openweathermap.org/data/2.5/weather?zip=87509,de&APPID=a7be2029b8584f5eeff40ca9789f6435";
|
|
$url[1] = "http://api.aerisapi.com/forecasts/immenstadt,germany?client_id=8JYXl86uUEeoPl40ncnBs&client_secret=RvVVj0K9yFgmp7U8CmgCH57YwGYeyuHjHtrSPxGV&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;
|
|
}
|
|
|
|
|
|
|
|
?>
|