commit | author | age
|
2fb07e
|
1 |
<?php |
JK |
2 |
require_once(dirname(__FILE__).'/api_geonames_config.php'); |
|
3 |
|
|
4 |
class api_geonames extends api_geonames_config { |
|
5 |
function search($name) { |
|
6 |
$url = 'http://'.$this->host.'/search?name='.urlencode($name).'&lang=pl&maxrows=3'.($this->username !== NULL ? '&username='.urlencode($this->username) : ''); |
|
7 |
|
|
8 |
try { |
|
9 |
$download = new DownloadHelper($url); |
|
10 |
$data = $download->exec(); |
|
11 |
|
|
12 |
if(!$data) { |
|
13 |
$download->cacheFor(600); |
|
14 |
return FALSE; |
|
15 |
} |
|
16 |
|
|
17 |
libxml_use_internal_errors(); |
48c64f
|
18 |
$data = simplexml_load_string($data); |
2fb07e
|
19 |
libxml_clear_errors(); |
JK |
20 |
|
|
21 |
if(!$data) { |
|
22 |
$download->cacheFor(600); |
|
23 |
return FALSE; |
|
24 |
} |
|
25 |
|
|
26 |
// Trzymaj w cache przez około 278 dni |
|
27 |
$download->cacheFor(1000000); |
|
28 |
|
|
29 |
if($data->geoname[0]->getName() != 'geoname' |
|
30 |
|| $data->geoname[0]->name->getName() != 'name' |
|
31 |
|| $data->geoname[0]->countryName->getName() != 'countryName' |
|
32 |
|| $data->geoname[0]->lat->getName() != 'lat' |
|
33 |
|| $data->geoname[0]->lng->getName() != 'lng') { |
|
34 |
return NULL; |
|
35 |
} |
|
36 |
|
|
37 |
$data = (array)$this->geoname[0]; |
|
38 |
foreach($data as &$value) { |
|
39 |
$value = trim($value); |
|
40 |
} |
|
41 |
unset($value); |
|
42 |
|
|
43 |
if(isset($data['countryName']) && $data['countryName'] == 'Rzeczpospolita Polska') { |
|
44 |
$data['countryName'] = 'Polska'; |
|
45 |
} |
|
46 |
|
|
47 |
return $data; |
|
48 |
} |
|
49 |
catch(Exception $e) { |
|
50 |
return FALSE; |
|
51 |
} |
|
52 |
} |
|
53 |
} |
|
54 |
?> |