2014-06-17 09:31:45 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Wetter
|
|
|
|
*/
|
|
|
|
class wetter {
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Erhalte die Wetterdaten und baue ein Array
|
|
|
|
*
|
|
|
|
* @param string Stadtname
|
|
|
|
* @return array Wetterdaten
|
|
|
|
*/
|
2014-06-18 08:24:29 +00:00
|
|
|
public function getWeather(){
|
2014-06-17 09:31:45 +00:00
|
|
|
// JSON holen
|
|
|
|
$json_string = file_get_contents('api.json');
|
2014-06-17 09:59:01 +00:00
|
|
|
$json_gelesen = json_decode($json_string, true);
|
2014-06-17 09:31:45 +00:00
|
|
|
|
|
|
|
// Daten aus JSON für die nächsten vier Tage holen
|
|
|
|
for($i = 0; $i <= 9; $i++){
|
2014-06-17 09:59:01 +00:00
|
|
|
$regen[$i] = $json_gelesen['forecast']['simpleforecast']
|
2014-06-17 09:31:45 +00:00
|
|
|
['forecastday'][$i]['pop'];
|
2014-06-17 09:59:01 +00:00
|
|
|
$icon[$i] = $json_gelesen['forecast']['simpleforecast']
|
2014-06-17 09:31:45 +00:00
|
|
|
['forecastday'][$i]['icon_url'];
|
2014-06-17 09:59:01 +00:00
|
|
|
$tag[$i] = $json_gelesen['forecast']['simpleforecast']
|
2014-06-17 09:31:45 +00:00
|
|
|
['forecastday'][$i]['date']['weekday'];
|
2014-06-17 09:59:01 +00:00
|
|
|
$tempMax[$i] = $json_gelesen['forecast']['simpleforecast']
|
2014-06-17 09:31:45 +00:00
|
|
|
['forecastday'][$i]['high']['celsius'];
|
2014-06-17 09:59:01 +00:00
|
|
|
$wind[$i] = $json_gelesen['forecast']['simpleforecast']
|
|
|
|
['forecastday'][$i]['avewind']['kph'];
|
2014-06-17 09:31:45 +00:00
|
|
|
|
2014-06-18 08:24:29 +00:00
|
|
|
$fahrrad = $this->getEmpfehlung($i, $regen[$i], $tempMax[$i],
|
|
|
|
$wind[$i]);
|
2014-06-17 09:31:45 +00:00
|
|
|
|
|
|
|
// Array mit den Daten für einen Tag zusammenbauen
|
|
|
|
$wetter[$i] =
|
|
|
|
array(
|
2014-06-17 09:59:01 +00:00
|
|
|
'regen' => $regen[$i],
|
2014-06-17 09:31:45 +00:00
|
|
|
'icon' => $icon[$i],
|
2014-06-17 09:59:01 +00:00
|
|
|
'tag' => $tag[$i],
|
|
|
|
'tempMax' => $tempMax[$i],
|
2014-06-17 09:31:45 +00:00
|
|
|
'rad' => $fahrrad,
|
2014-06-17 09:59:01 +00:00
|
|
|
'wind' => $wind[$i]
|
2014-06-17 09:31:45 +00:00
|
|
|
);
|
|
|
|
|
|
|
|
// Arrays miteinander verknüpfen
|
|
|
|
if(isset($wetter[$i-1])){
|
|
|
|
array_merge($wetter[$i-1], $wetter[$i]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return $wetter;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Erstelle eine Tabellenzeile aus einem Array
|
|
|
|
*
|
|
|
|
* @param array array Auszuwertendes Array mit den Daten
|
|
|
|
* @param schluessel string Schlüssel nach dem im Array gesucht wird
|
|
|
|
* @param stringVor string Zeichen die vor dem String auftauchen sollen
|
|
|
|
* @param stringNach string Zeichen die nach dem String auftauchen sollen
|
|
|
|
* @param first string Was soll einmalig am Anfang stehen
|
|
|
|
*
|
|
|
|
* @return string
|
|
|
|
*/
|
2014-06-18 08:24:29 +00:00
|
|
|
public function makeTable($array, $schluessel, $stringVor = NULL,
|
2014-06-17 09:31:45 +00:00
|
|
|
$stringNach = NULL, $first = NULL){
|
|
|
|
|
|
|
|
$string = '<td>'.$first.'</td>';
|
|
|
|
|
|
|
|
foreach($array as $daten){
|
|
|
|
$string .= '<td>';
|
|
|
|
$string .= $stringVor . $daten[$schluessel] . $stringNach;
|
|
|
|
$string .= '</td>';
|
|
|
|
}
|
|
|
|
|
|
|
|
return '
|
|
|
|
<tr>' . $string . '</tr>
|
|
|
|
';
|
|
|
|
}
|
2014-06-18 08:24:29 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Filtere POST auf Integer
|
|
|
|
* @param string $name Variablenname
|
|
|
|
* @return int
|
|
|
|
*/
|
|
|
|
public function filter_post_int($name){
|
|
|
|
return filter_input(INPUT_POST, $name, FILTER_SANITIZE_NUMBER_INT);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Filtere POST auf Integer
|
|
|
|
* @param string $name Variablenname
|
|
|
|
* @return int
|
|
|
|
*/
|
|
|
|
public function filter_cookie_int($name){
|
|
|
|
return filter_input(INPUT_COOKIE, $name, FILTER_SANITIZE_NUMBER_INT);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Gib eine Empfehlung anhander der Nutzereinstellungenab, ob Rad gefahren
|
|
|
|
* werden kann.
|
|
|
|
* @param int $i Laufvariable
|
|
|
|
* @param int $regen aktueller Vorhersagewert für den Regen
|
|
|
|
* @param int $temp aktueller Vorhersagewert für die Temperatur
|
|
|
|
* @param int $wind aktueller Vorhersagewert für die Windgeschwindigkeit
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
protected function getEmpfehlung($i, $regen, $temp, $wind){
|
|
|
|
|
|
|
|
// Werte einrichten
|
|
|
|
// Regen
|
|
|
|
if(isset($_COOKIE['regen'])){
|
|
|
|
$regenWert = $this->filter_cookie_int('regen');
|
|
|
|
}else{
|
|
|
|
$regenWert = 55;
|
|
|
|
}
|
|
|
|
|
|
|
|
// min. Temperatur
|
|
|
|
if(isset($_COOKIE['templow'])){
|
|
|
|
$tempLowWert = $this->filter_cookie_int('templow');
|
|
|
|
}else{
|
|
|
|
$tempLowWert = 10;
|
|
|
|
}
|
|
|
|
|
|
|
|
// max. Temperatur
|
2014-09-05 13:49:58 +00:00
|
|
|
if(isset($_COOKIE['temphigh'])){
|
|
|
|
$tempMaxWert = $this->filter_cookie_int('temphigh');
|
2014-06-18 08:24:29 +00:00
|
|
|
}else{
|
|
|
|
$tempMaxWert = 27;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Wind
|
|
|
|
if(isset($_COOKIE['wind'])){
|
|
|
|
$windWert = $this->filter_cookie_int('wind');
|
|
|
|
}else{
|
|
|
|
$windWert = 35;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Fahrradwetter? - Grundsätzlich ja.
|
|
|
|
$fahrrad = '<b>Ja</b>';
|
|
|
|
|
|
|
|
// Vielleicht, wenn Regenwahrscheinlichkeit größer als 40% oder
|
|
|
|
// Temperaturen nicht zwischen 15 und 24°C
|
|
|
|
// oder Wind 35 km/h oder schneller
|
2014-09-05 13:49:58 +00:00
|
|
|
if(empty($_COOKIE['wind']) && $regen >= 40 ||
|
|
|
|
empty($_COOKIE['wind']) && $temp <= 15 ||
|
|
|
|
empty($_COOKIE['wind']) && $temp > 24 ||
|
|
|
|
$wind >= $windWert){
|
2014-06-18 08:24:29 +00:00
|
|
|
|
|
|
|
$fahrrad = '<a href="'. WETTERSTATION .'">Vielleicht</a>';
|
|
|
|
}
|
|
|
|
// Kein Fahrradwetter, wenn Regenwahrscheinlichkeit über 55%
|
|
|
|
// oder Temperaturen nicht zwischen 10 und 27°C
|
|
|
|
// oder Wind 40 km/h oder schneller
|
|
|
|
if($temp >= $tempMaxWert || $temp <= $tempLowWert || $regen >= $regenWert
|
|
|
|
|| $wind >= $windWert){
|
|
|
|
|
|
|
|
$fahrrad = 'Nein';
|
|
|
|
}
|
|
|
|
|
|
|
|
return $fahrrad;
|
|
|
|
}
|
2014-06-17 09:31:45 +00:00
|
|
|
}
|