<?php /* -------------------------------------------- * Verspätungsalarm - Aufruf in Cronjob * Dieses Skript macht keine Ausgabe * Autor: Walter Hupfeld * Version 0.1 vom 10.10.2017 * zuletzt bearbeitet: 15.10.2017 * -------------------------------------------- */ include('lib/phpbahn.php'); include('lib/mail.php'); include('lib/settings.php'); $bahn = new phpbahn(SETTING_APIKEY); $db = new SQLite3(DB_FILENAME); // Über alle EMail-Adressen iterieren - nur eine E-Mail pro User $strSQL="SELECT email FROM tableAlarm GROUP BY email"; $result = $db->query($strSQL); while ($row=$result->fetchArray()) { $strEmail=$row['email']; //echo $strEmail."<br>"; //Über die Bahnhöfe iterieren - Nutze die Ibnr $strSQL="SELECT ibnr from tableAlarm WHERE email='$strEmail' GROUP BY ibnr"; $result2=$db->query($strSQL); $maxVerspaetung=0; $strMailText=""; while ($row2=$result2->fetchArray()){ $strIbnr=$row2['ibnr']; //echo "-".$strIbnr."<br>"; //$bhf = $bahn->getStation($strStation) ; //reset($bhf); //$ibnr = key($bhf); //$bhf = array_shift($bhf); //echo $ibnr."<br>"; $strSQL="SELECT zug,departure from tableAlarm WHERE email='$strEmail' AND ibnr='$strIbnr'"; $result3=$db->query($strSQL); $arrZuege= array(); while ($row3=$result3->fetchArray()) { //echo "*".$row3['zug']." - ".$row3['departure']."<br>"; array_push($arrZuege,$row3['zug']); } // Jetzt über die aktuelle Stunde und die nächste Stunde iterieren for ($numStunde=0;$numStunde<=1;$numStunde++) { $numZeit = time() + $numStunde*3600; $zuege = $bahn->getTimetable($strIbnr,$numZeit); if(!count($zuege)){ echo "keine Verbindungen"; } //DEBUG: print_r($arrZuege);echo "<hr>"; foreach($zuege as $zug){ $zugname = $zug['zug']['klasse'].$zug['zug']['nummer']; //echo $zugname."<br>\n"; //print_r($arrZuege);echo "<hr>"; if(in_array($zugname, $arrZuege) AND isset($zug['abfahrt']) ) { $timeAbfahrt=$bahn->dateToTimestamp($zug['abfahrt']['zeitGeplant']); $strAbfahrt=date("H:i",$timeAbfahrt); $strStation = $arrStations[$strIbnr]; if(!isset($zug['abfahrt']['zeitAktuell'])){ $verspaetung = 0; }else{ $verspaetung = $bahn->dateToTimestamp($zug['abfahrt']['zeitAktuell'])-$bahn->dateToTimestamp($zug['abfahrt']['zeitGeplant']); $strMailText.="$zugname hat ". ($verspaetung/60) . " Minuten Verspätung ab $strStation.\r\n"; } if ($verspaetung>$maxVerspaetung) $maxVerspaetung=$verspaetung; if ($verspaetung>0) { $strSQL="insert into verspaetungen (zeit,station,zug,verspaetung,email,abfahrt) values (datetime(),'$strStation','$zugname','$verspaetung','$strEmail','$strAbfahrt')"; $db->exec($strSQL); // echo "DEBUG: ".$strSQL."<br>\n"; } } } } } if ($maxVerspaetung>=360) { //echo "Versende Mail an $strEmail mit Verspätungsalarm:<br>"; //echo nl2br($strMailText); alertmail($strEmail,$strMailText); } }