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;
  }

}