'kujawsko-pomorskie', 'Kuyavian-Pomeranian' => 'kujawsko-pomorskie', 'Kujawsko-Pomorskie' => 'kujawsko-pomorskie', 'Lesser Poland' => 'małopolskie', 'Lodz' => 'łódzkie', 'Łódź' => 'łódzkie', 'Lower Silesia' => 'dolnośląskie', 'Lower Silesian' => 'dolnośląskie', 'Lublin' => 'lubelskie', 'Lubelskie' => 'lubelskie', 'Lubuskie' => 'lubuskie', 'Mazovia' => 'mazowieckie', 'Masovian' => 'mazowieckie', 'Mazowieckie' => 'mazowieckie', 'Opole' => 'opolskie', 'Subcarpathia' => 'podkarpackie', 'Podkarpackie' => 'podkarpackie', 'Podlachia' => 'podlaskie', 'Pomerania' => 'pomorskie', 'Pomorskie' => 'pomorskie', 'Silesia' => 'śląskie', 'Swietokrzyskie' => 'świętokrzyskie', 'Warmia and Masuria' => 'warmińsko-mazurskie', 'Western Pomerania' => 'zachodniopomorskie', 'Greater Poland' => 'wielkopolskie', 'Wielkopolskie' => 'wielkopolskie', ); static function register_cmd() { return array( 'pogoda' => 'cmd_pogoda', 'p' => 'cmd_pogoda', 'weather' => 'cmd_pogoda', 'miasto' => 'cmd_miasto', 'm' => 'cmd_miasto', 'temp' => 'cmd_pogoda', 'temperatura' => 'cmd_pogoda', ); } static function help($cmd=NULL) { if($cmd === NULL) { GGapi::putRichText('pogoda ', TRUE); GGapi::putRichText('[miasto]', FALSE, TRUE); GGapi::putRichText("\n".' Podaje pogodę dla miasta'."\n"); GGapi::putRichText('miasto ', TRUE); GGapi::putRichText('miasto', FALSE, TRUE); GGapi::putRichText("\n".' Ustala domyślne miasto dla funkcji pogoda'."\n\n"); } elseif(substr($cmd, 0, 1)=='m') { GGapi::putRichText('miasto ', TRUE); GGapi::putRichText('miasto', FALSE, TRUE); GGapi::putRichText(' (alias: '); GGapi::putRichText('m', TRUE); GGapi::putRichText(')'."\n".' Ustawia domyślne '); GGapi::putRichText('miasto', FALSE, TRUE); GGapi::putRichText(' dla funkcji pogoda dla danego numeru Gadu-Gadu.'); } else { GGapi::putRichText('pogoda ', TRUE); GGapi::putRichText('miasto', FALSE, TRUE); GGapi::putRichText(' (alias: '); GGapi::putRichText('p', TRUE); GGapi::putRichText(')'."\n".' Podaje pogodę dla danego miasta na najbliższe dni. Domyślne miasto można ustawić komendą '); GGapi::putRichText('miasto', TRUE); } } static function cmd_pogoda($name, $arg) { if(empty($arg)) { $arg = database::get($_GET['from'], 'pogoda', 'miasto'); if(empty($arg)) { $arg = GGapi::getPublicData(); $arg = trim($arg['city']); if(empty($arg)) { $arg = 'Warszawa'; $forced = TRUE; } GGapi::putText('Nie ustawiono miasta (pomoc - wpisz: help miasto) - '.(!$forced ? 'na podstawie danych z katalogu publicznego ' : '').'wybieram '.$arg."\n\n"); } } $dane = @file_get_contents('http://www.google.pl/ig/api?weather='.urlencode(ucwords(funcs::utfToAscii($arg)))); if(!$dane) { GGapi::putText('Przepraszamy, nie udało się połączyć z serwisem'); return; } $dane = iconv('iso-8859-2', 'utf-8', $dane); $dane = @simplexml_load_string($dane); if(!$dane) { GGapi::putText('Przepraszamy, błąd przy pobieraniu danych'); return; } if($dane->weather->problem_cause) { GGapi::putText('Problem w serwisie bądź danego miasta nie ma w bazie'."\n\n".'Przykład:'."\n".'pogoda Warszawa'."\n".'pogoda Kraków'); return; } $short2day = array( 'pon.' => 'Poniedziałek', 'wt.' => 'Wtorek', 'śr.' => 'Środa', 'czw.' => 'Czwartek', 'pt.' => 'Piątek', 'sob.' => 'Sobota', 'niedz.' => 'Niedziela', ); $region = substr(strstr($dane->weather->forecast_information->city['data'], ', '), 2); $region = trim(str_replace('Voivodeship', '', $region)); if(isset(self::$wojewodztwa[$region])) { $region = 'województwo '.self::$wojewodztwa[$region]; } $miasto = trim((string)$dane->weather->forecast_information->postal_code['data']); if(($a=strpos($miasto, '-'))!==FALSE) { $miasto = substr($miasto, 0, $a).'-'.ucfirst(substr($miasto, $a+1)); } GGapi::putRichText('Pogoda dla miasta '.$miasto.', '.$region."\n\n", TRUE); GGapi::putRichText('Teraz'."\n", TRUE); $icon = (string)$dane->weather->current_conditions->icon['data']; if(!empty($icon)) { if(!file_exists('./data/pogoda/'.basename($icon))) { $img = @file_get_contents($icon); if($img) { file_put_contents('./data/pogoda/'.basename($icon), $img); } } GGapi::putImage('./data/pogoda/'.basename($icon)); $txt = "\n"; } $condition = (string)$dane->weather->current_conditions->condition['data']; GGapi::putRichText($txt.($condition ? $condition."\n" : '').'Temp.: '.($dane->weather->current_conditions->temp_c['data']).'°C'."\n".($dane->weather->current_conditions->humidity['data'])."\n".($dane->weather->current_conditions->wind_condition['data'])); $num = TRUE; foreach($dane->weather->forecast_conditions as $day) { GGapi::putRichText("\n\n".($num ? 'Później' : $short2day[(string)$day->day_of_week['data']])."\n", TRUE); if(!file_exists('./data/pogoda/'.basename($day->icon['data']))) { $img = @file_get_contents($day->icon['data']); if($img) { file_put_contents('./data/pogoda/'.basename($day->icon['data']), $img); } } GGapi::putImage('./data/pogoda/'.basename($day->icon['data'])); GGapi::putRichText("\n".($day->condition['data'])."\n".'Temp. od '.($day->low['data']).'°C do '.($day->high['data']).'°C'); $num = FALSE; } } static function cmd_miasto($name, $arg) { $arg = trim(funcs::utfToAscii($arg)); if(empty($arg)) { $arg = database::get($_GET['from'], 'pogoda', 'miasto'); if(!empty($arg)) { GGapi::putText('Aktualnie ustawione miasto to: '.$arg); return; } $arg = GGapi::getPublicData(); $arg = funcs::utfToAscii($arg['city']); if(empty($arg)) { GGapi::putText('Nie podano wymaganego argumentu '); GGapi::putRichText('miasto', FALSE, TRUE); return; } GGapi::putText('Z katalogu publicznego pobrano miasto '.$arg."\n\n"); } $data = @file_get_contents('http://ws.geonames.org/search?name='.urlencode($arg)); if($data) { $data = simplexml_load_string($data); if($data && $data->totalResultsCount > 0) { $data = $data->geoname[0]; } else { GGapi::putText('Podane miasto nie zostało odnalezione!'); return; } } else { GGapi::putText('Wystąpił błąd przy wyszukiwaniu miasta. Spróbuj ponownie później.'); return; } if(!$data->geonameId || $data->geonameId=='756135') { $data = new SimpleXMLElement('Warszawa52.2521.0756135PLPoland'); } GGapi::putText('Miasto zostało ustawione na '.(string)$data->name); database::add($_GET['from'], 'pogoda', 'miasto', (string)$data->name); database::add($_GET['from'], 'pogoda', 'kraj', (string)$data->countryName); database::add($_GET['from'], 'pogoda', 'cc', (string)$data->countryCode); database::add($_GET['from'], 'pogoda', 'geo', array('lat' => (string)$data->lat, 'lon' => (string)$data->lng)); } } ?>