Jacek Kowalski
2016-02-15 eac90243793cf8ba3da2117ac2d76efbcec24e53
modules/30_pogoda/handler.php
@@ -7,7 +7,7 @@
      $arg = trim($msg->args);
      
      $out = new BotMsg();
      $loc = FALSE;
      
      if(empty($arg)) {
         $msg->session->setClass('pogoda');
@@ -37,22 +37,13 @@
            catch(Exception $e) {
            }
            
            $forced = FALSE;
            if(empty($arg)) {
               $arg = 'Warszawa';
               $forced = TRUE;
            }
            
            $out->a('<p>Nie ustawiono miasta (pomoc - wpisz: help miasto) - '.(!$forced ? 'na podstawie danych z katalogu publicznego ' : '').'wybieram miasto '.$arg.'</p>'."\n\n");
            $loc = new api_geonames();
            $loc = $loc->search($arg);
            if($loc === FALSE) {
               return new BotMsg('Nie udało się pobrać danych o podanym miejscu - spróbuj ponownie za około 10 minut.');
            }
            elseif($loc === NULL) {
               return new BotMsg('Dla podanego miejsca nie udało się uzyskać współrzędnych geograficznych - spróbuj wpisać inną nazwę.');
            }
         }
         else
         {
@@ -66,6 +57,18 @@
         }
      }
      
      if($loc === FALSE) {
         $loc = new api_geonames();
         $loc = $loc->search($arg);
         if($loc === FALSE) {
            return new BotMsg('Nie udało się pobrać danych o podanym miejscu - spróbuj ponownie za około 10 minut.');
         }
         elseif($loc === NULL) {
            return new BotMsg('Dla podanego miejsca nie udało się uzyskać współrzędnych geograficznych - spróbuj wpisać inną nazwę.');
         }
      }
      $api = yrno_weather($loc['lat'], $loc['lng']);
      if($api == FALSE) {
         return new BotMsg('Nie udało się pobrać danych o pogodzie - spróbuj ponownie za około 10 minut.');
@@ -73,13 +76,14 @@
      
      $out->a('<p>Pogoda dla '.htmlspecialchars($loc['name']).', '.htmlspecialchars($loc['countryName']).'.</p>'."\n\n");
      
      $icon = $api->symbols[$api->getCurrentIcon()];
      $icon = (int)$api->getCurrentIcon();
      $weather = $api->getCurrentWeather();
      
      $out->a('<p><b>Teraz</b><br />'."\n"
         . $icon.'<br />'."\n"
         . '<img src="./data/pogoda/'.$icon.'.png" /><br />'."\n"
         . api_yrno_parse::$symbols[$icon].'<br />'."\n"
         . 'Temp.: '.htmlspecialchars($weather['temp']).'°C<br />'."\n"
         . 'Wiatr: '.htmlspecialchars($weather['wind']).' km/h, '.$api->wind($weather['wind']).'<br />'."\n"
         . 'Wiatr: '.htmlspecialchars($weather['wind_speed']).' km/h, '.api_yrno_parse::wind($weather['wind_dir']).'<br />'."\n"
         . 'Ciśnienie: '.htmlspecialchars($weather['pressure']).' hPa</p>'."\n\n");
      
      $when = time();
@@ -104,12 +108,20 @@
   
   function getHTMLforWeather($name, $icons, $weather) {
      $html = '<p><b>'.$name.'</b><br />'."\n";
      $desc = array();
      $curr = 0;
      foreach($icons as $icon) {
         if(is_file('./data/pogoda/'.htmlspecialchars($icon).'.png')) {
            $html .= '<img src="./data/pogoda/'.htmlspecialchars($icon).'.png" alt="" /> ';
         $icon = (int)$icon;
         if(is_file('./data/pogoda/'.$icon.'.png')) {
            $html .= '<img src="./data/pogoda/'.$icon.'.png" alt="" /> ';
            if($icon != $curr) {
               $desc[] = api_yrno_parse::$symbols[$icon];
               $curr = $icon;
            }
         }
      }
      $html .= '<br />'."\n"
         . implode(' / ', $desc).'<br />'."\n"
         . 'Temp.: '.$this->getHTMLforRange($weather['temp']['day']).'°C (w nocy: '.$this->getHTMLforRange($weather['temp']['night']).'°C)<br />'."\n"
         . 'Wiatr: '.$this->getHTMLforRange($weather['wind']['day']).' km/h (w nocy: '.$this->getHTMLforRange($weather['wind']['night']).' km/h)</p>'."\n\n";
      
@@ -127,9 +139,11 @@
         $arg = trim($msg->args);
      }
      
      $out = new BotMsg();
      if(empty($arg)) {
         if(isset($this->session->miasto)) {
            return new BotMsg('Aktualnie ustawione miejsce to: '.htmlspecialchars($this->session->miasto).', '.htmlspecialchars($this->session->countryName));
         if(isset($msg->session->miasto)) {
            return new BotMsg('Aktualnie ustawione miejsce to: '.htmlspecialchars($msg->session->miasto).', '.htmlspecialchars($msg->session->kraj));
         }
         
         try {
@@ -149,7 +163,7 @@
      }
      else
      {
         $out = new BotMsg();
      }
      
      $api = new api_geonames();
@@ -167,9 +181,8 @@
      $msg->session->cc = $dane['countryCode'];
      $msg->session->geo = array('lat' => $dane['lat'], 'lon' => $dane['lng']);
      
      $out->a('<p>Ustawiono miejsce: '.htmlspecialchars($this->session->miasto).', '.htmlspecialchars($this->session->countryName).'</p>');
      $out->a('<p>Ustawiono miejsce: '.htmlspecialchars($msg->session->miasto).', '.htmlspecialchars($msg->session->kraj).'</p>');
      
      return $out;
   }
}
?>