]> git.mxchange.org Git - friendica-addons.git/blob - openstreetmap/openstreetmap.php
Merge branch 'master' of github.com:annando/friendica-addons
[friendica-addons.git] / openstreetmap / openstreetmap.php
1 <?php
2 /**
3  * Name: OpenStreetMap
4  * Description: Use OpenStreetMap for displaying locations.  After activation the post location just beneath your avatar in your posts will link to openstreetmap.
5  * Version: 1.1
6  * Author: Mike Macgirvin <http://macgirvin.com/profile/mike>
7  * Author: Klaus Weidenbach
8  *
9  */
10
11 function openstreetmap_install() {
12         register_hook('render_location', 'addon/openstreetmap/openstreetmap.php', 'openstreetmap_location');
13         register_hook('page_header', 'addon/openstreetmap/openstreetmap.php', 'openstreetmap_alterheader');\r
14
15         logger("installed openstreetmap");
16 }
17
18 function openstreetmap_uninstall() {
19         unregister_hook('render_location', 'addon/openstreetmap/openstreetmap.php', 'openstreetmap_location');
20         unregister_hook('page_header', 'addon/openstreetmap/openstreetmap.php', 'openstreetmap_alterheader');
21
22         logger("removed openstreetmap");
23 }
24
25 function openstreetmap_alterheader($a, &$navHtml) {
26         $addScriptTag='<script type="text/javascript" src="' . $a->get_baseurl() . '/addon/openstreetmap/openstreetmap.js' . '"></script>' . "\r\n";\r
27         $a->page['htmlhead'] .= $addScriptTag;
28 }
29
30 function openstreetmap_location($a, &$item) {
31
32         //
33
34         if(! (strlen($item['location']) || strlen($item['coord'])))
35                 return;
36
37         /*
38          * Get the configuration variables from the .htconfig file.
39         */
40         $tmsserver = get_config('openstreetmap','tmsserver');
41         if(! $tmsserver)
42                 $tmsserver = 'http://openstreetmap.org';
43         $zoom = get_config('openstreetmap','zoom');
44         if(! $zoom)
45                 $zoom = 17;
46
47         $location = '';
48         $coord = '';
49
50         
51         if($item['location'] && !$item['coord'] && true){ //if only a location is given, find the lat-lon
52                 $geo_account='demo';
53 \r
54                 $s = fetch_url('http://api.geonames.org/search?maxRows=1&fuzzy=0.8&q=' . $item['location']  . '&username=' . $geo_account);\r
55 \r
56                 if($s){\r
57                         $xml = parse_xml_string($s);\r
58 \r
59                         if($xml->geoname->lat && $xml->geoname->lng){\r
60                                 $item['coord'] = $xml->geoname->lat . ' ' . $xml->geoname->lng;
61                         }\r
62                 }
63         }
64
65         $location = (($item['location']) ? '<a target="map" title="' . $item['location'] . '" href="'.$tmsserver.'?q=' . urlencode($item['location']) . '">' . $item['location'] . '</a>' : '');
66
67         if($item['coord']) {
68                 $coords = explode(' ', $item['coord']);
69                 if(count($coords) > 1) {
70                         $coord = '<a target="map" class="OSMMapLink" title="' . $item['coord'] . '" href="'.$tmsserver.'?lat=' . urlencode($coords[0]) . '&lon=' . urlencode($coords[1]) . '&zoom='.$zoom.'"> Map </a>' ;
71                 }
72         }
73         if(strlen($coord)) {
74                 if($location)
75                         $location .= '<br /><span class="smalltext">(' . $coord . ')</span>';
76                 else
77                         $location = '<span class="smalltext">' . $coord . '</span>';
78         }
79         $item['html'] = $location;
80         return;
81 }
82
83
84 function openstreetmap_plugin_admin (&$a, &$o) {
85         $t = get_markup_template( "admin.tpl", "addon/openstreetmap/" );
86         $tmsserver = get_config('openstreetmap','tmsserver');
87         if(! $tmsserver)
88                 $tmsserver = 'http://openstreetmap.org';
89         $zoom = get_config('openstreetmap','zoom');
90         if(! $zoom)
91                 $zoom = 17;
92
93         $o = replace_macros( $t, array(
94                         '$submit' => t('Submit'),
95                         '$tmsserver' => array('tmsserver', t('Tile Server URL'), $tmsserver, t('A list of <a href="http://wiki.openstreetmap.org/wiki/TMS" target="_blank">public tile servers</a>')),
96                         '$zoom' => array('zoom', t('Default zoom'), $zoom, t('The default zoom level. (1:world, 18:highest)')),
97         ));
98 }
99 function openstreetmap_plugin_admin_post (&$a) {
100         $url = ((x($_POST, 'tmsserver')) ? notags(trim($_POST['tmsserver'])) : '');
101         $zoom = ((x($_POST, 'zoom')) ? intval(trim($_POST['zoom'])) : '17');
102         set_config('openstreetmap', 'tmsserver', $url);
103         set_config('openstreetmap', 'zoom', $zoom);
104         info( t('Settings updated.'). EOL);
105 }