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

}