File source
<?php
class WeatherSource{
protected $city;
protected $data;
protected $timestamp = false;
protected $validity = 10;
protected $conditions = Array(
200 => "búrka a ľahký dážď",
201 => "búrka a dážď",
202 => "búrka a silný dážď",
210 => "búrka",
211 => "búrka",
212 => "silná búrka",
221 => "poriadna búrka",
230 => "búrka s mrholením",
231 => "búrka s mrholením",
232 => "búrka s mrholením",
300 => "slabé mrholenie",
301 => "mrholenie",
302 => "silné mrholenie",
311 => "mrholenie a dážď",
312 => "silné mrholenie a dážď",
321 => "prehánky s mrholením",
500 => "slabý dážď",
501 => "dážď",
502 => "silný dážď",
503 => "veľmi silný dážď",
504 => "extrémny dážď",
511 => "krúpy",
520 => "slabé prehánky",
522 => "silné prehánky",
600 => "slabé sneženie",
601 => "sneženie",
602 => "silné sneženie",
611 => "sneh s dažďom",
621 => "snehové prehánky",
701 => "opar",
711 => "dym",
721 => "smog",
731 => "piesočná búrka",
741 => "hmla",
800 => "jasno",
801 => "polojasno",
802 => "polooblačno",
803 => "zamračené",
804 => "zamračené",
900 => "tornádo",
901 => "tropická búrka",
902 => "hurikán",
903 => "zima",
904 => "horúčavy",
905 => "vietor",
906 => "krúpy",
);
function __construct($city){
$this->city = $city;
}
function load(){
$weather = file_get_contents("http://api.openweathermap.org/data/2.5/weather?q=".$this->city."&mode=json");
$weather = json_decode($weather,true);
return Array(
"temp" => $weather["main"]["temp"]-273.15,
"clouds" => $weather["clouds"]["all"],
"wind" => $weather["wind"]["speed"],
"text" => $this->getCondition($weather["weather"]["0"]["id"], $weather["weather"]["0"]["main"]),
"icon" => $weather["weather"][0]["icon"]
);
}
function getCondition($id, $fallback="???"){
$r = $this->conditions[$id];
if(!$r) return $fallback;
return $r;
}
function getData(){
if($this->timestamp && $this->timestamp + $this->validity > Time()){
}else{
$this->data = $this->load();
$this->timestamp = Time();
}
return $this->data;
}
}