source: subversion/applications/utils/wiki-extensions/SimpleMap/SimpleMap.class.php @ 18339

Last change on this file since 18339 was 14080, checked in by harrywood, 11 years ago

drop support for old style | syntax in both extensions

  • Property svn:executable set to *
File size: 5.5 KB
Line 
1<?php
2# OpenStreetMap Simple Map - MediaWiki extension
3#
4# This defines what happens when <map> tag is placed in the wikitext
5#
6# We show a map based on the lat/lon/zoom data passed in. This extension brings in
7# image generated by the static map image service called 'GetMap' maintained by OJW. 
8#
9# Usage example:
10# <map lat=51.485 lon=-0.15 z=11 w=300 h=200 format=jpeg />
11#
12# Images are not cached local to the wiki.
13# To acheive this (remove the OSM dependency) you might set up a squid proxy,
14# and modify the requests URLs here accordingly.
15#
16##################################################################################
17#
18# Copyright 2008 Harry Wood, Jens Frank, Grant Slater, Raymond Spekking and others
19#
20# This program is free software; you can redistribute it and/or modify
21# it under the terms of the GNU General Public License as published by
22# the Free Software Foundation; either version 2 of the License, or
23# (at your option) any later version.
24#
25# This program is distributed in the hope that it will be useful,
26# but WITHOUT ANY WARRANTY; without even the implied warranty of
27# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
28# GNU General Public License for more details.
29#
30# You should have received a copy of the GNU General Public License
31# along with this program; if not, write to the Free Software
32# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
33#
34# @addtogroup Extensions
35#
36
37
38class SimpleMap {
39
40        function SimpleMap() {
41        }
42
43        # The callback function for converting the input text to HTML output
44        function parse( $input, $argv ) {
45                global $wgScriptPath, $wgMapOfServiceUrl;
46
47                wfLoadExtensionMessages( 'SimpleMap' );
48               
49               
50                //Receive args of the form <map aaa=bbb ccc=ddd />
51                if ( isset( $argv['lat'] ) ) { 
52                        $lat = $argv['lat'];
53                } else {
54                        $lat = '';
55                }
56                if ( isset( $argv['lon'] ) ) { 
57                        $lon = $argv['lon'];
58                } else {
59                        $lon = '';
60                }
61                if ( isset( $argv['z'] ) ) { 
62                        $zoom = $argv['z'];
63                } else {
64                        $zoom = '';
65                }
66                if ( isset( $argv['w'] ) ) { 
67                        $width = $argv['w'];
68                } else {
69                        $width = '';
70                }
71                if ( isset( $argv['h'] ) ) { 
72                        $height = $argv['h'];
73                } else {
74                        $height = '';
75                }
76                if ( isset( $argv['format'] ) ) { 
77                        $format = $argv['format'];
78                } else {
79                        $format = '';
80                }
81                if ( isset( $argv['marker'] ) ) { 
82                        $marker = $argv['marker'];
83                } else {
84                        $marker = '';
85                }
86
87                $error='';
88
89                //default values (meaning these parameters can be missed out)
90                if ($width=='')         $width ='450'; 
91                if ($height=='')        $height='320'; 
92                if ($format=='')        $format='jpeg'; 
93
94                if ($zoom=='') {
95                        //see if they used 'zoom' rather than 'z' (and allow it)
96                        if ( isset( $argv['zoom'] ) ) { 
97                                $zoom = $argv['zoom'];
98                        } else {
99                                $zoom = $oldStyleParams['zoom'];
100                        }
101                }
102
103               
104                //trim off the 'px' on the end of pixel measurement numbers (ignore if present)
105                if (substr($width,-2)=='px')    $width = (int) substr($width,0,-2);
106                if (substr($height,-2)=='px')   $height = (int) substr($height,0,-2);
107
108                $input = trim($input); 
109                if ($input!='') {
110                        if (strpos($input,'|')!==false) {
111                                $error = 'Old style tag syntax no longer supported';
112                        } else {       
113                                $error = 'slippymap tag contents. Were you trying to input KML? KML support ' .
114                                         'is disabled pending discussions about wiki syntax<br>';
115                        }
116                }
117                       
118                if ($marker) $error = 'No marker support in the &lt;map&gt; tag extension (yet)';
119       
120                if ($error=='') {
121                        //Check required parameters values are provided
122                        if ( $lat==''  ) $error .= wfMsg( 'simplemap_latmissing' );
123                        if ( $lon==''  ) $error .= wfMsg( 'simplemap_lonmissing' );
124                        if ( $zoom=='' ) $error .= wfMsg( 'simplemap_zoommissing' );
125                       
126                        //no errors so far. Now check the values       
127                        if (!is_numeric($width)) {
128                                $error = wfMsg( 'simplemap_widthnan', $width );
129                        } else if (!is_numeric($height)) {
130                                $error = wfMsg( 'simplemap_heightnan', $height );
131                        } else if (!is_numeric($zoom)) {
132                                $error = wfMsg( 'simplemap_zoomnan', $zoom );
133                        } else if (!is_numeric($lat)) {
134                                $error = wfMsg( 'simplemap_latnan', $lat );
135                        } else if (!is_numeric($lon)) {
136                                $error = wfMsg( 'simplemap_lonnan', $lon );
137                        } else if ($width>1000) {
138                                $error = wfMsg( 'simplemap_widthbig' );
139                        } else if ($width<100) {
140                                $error = wfMsg( 'simplemap_widthsmall' );
141                        } else if ($height>1000) {
142                                $error = wfMsg( 'simplemap_heightbig' );
143                        } else if ($height<100) {
144                                $error = wfMsg( 'simplemap_heightsmall' );
145                        } else if ($lat>90) {
146                                $error = wfMsg( 'simplemap_latbig' );
147                        } else if ($lat<-90) {
148                                $error = wfMsg( 'simplemap_latsmall' );
149                        } else if ($lon>180) {
150                                $error = wfMsg( 'simplemap_lonbig' );
151                        } else if ($lon<-180) {
152                                $error = wfMsg( 'simplemap_lonsmall' );
153                        } else if ($zoom<0) {
154                                $error = wfMsg( 'simplemap_zoomsmall' );
155                        } else if ($zoom==18) {
156                                $error = wfMsg( 'simplemap_zoom18' );
157                        } else if ($zoom>17) {
158                                $error = wfMsg( 'simplemap_zoombig' );
159                        }
160                }
161
162               
163                if ($error!="") {
164                        //Something was wrong. Spew the error message and input text.
165                        $output  = '';
166                        $output .= "<span class=\"error\">". wfMsg( 'simplemap_maperror' ) . ' ' . $error . "</span><br />";
167                        $output .= htmlspecialchars($input);
168                } else {
169                        //HTML for the openstreetmap image and link:
170                        $output  = "";
171                        $output .= "<a href=\"http://www.openstreetmap.org/?lat=".$lat."&lon=".$lon."&zoom=".$zoom."\" title=\"See this map on OpenStreetMap.org\">";
172                        $output .= "<img src=\"";
173                        $output .= $wgMapOfServiceUrl . "lat=".$lat."&long=".$lon."&z=".$zoom."&w=".$width."&h=".$height."&format=".$format;
174                        $output .= "\" width=\"". $width."\" height=\"".$height."\" border=\"0\">";
175                        $output .= "</a>";
176                       
177                }
178                return $output;
179        }
180}
Note: See TracBrowser for help on using the repository browser.