Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

bahnauskunft_alert.php [20.02.2018 22:10] (aktuell)
whupfeld angelegt
Zeile 1: Zeile 1:
 +====== alert.php ======
 +<code 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);​
 +    }
 +}
 +
 +</​code>​
  • bahnauskunft_alert.php.txt
  • Zuletzt geändert: 20.02.2018 22:10
  • von whupfeld