bahnauskunft_alert.php

alert.php

<?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);
    }
}
  • bahnauskunft_alert.php.txt
  • Zuletzt geändert: 09.10.2022 19:11
  • von whupfeld