00001 <?php
00002
00013 if( !defined( 'MEDIAWIKI' ) ) {
00014 die( 'Not an entry point.' );
00015 }
00016
00017 define('Maps_VERSION', '0.3');
00018
00019 $egMapsScriptPath = $wgScriptPath . '/extensions/Maps';
00020 $egMapsIP = $IP . '/extensions/Maps';
00021 $egMapsIncludePath = $wgServer . $egMapsScriptPath;
00022
00023
00024 require_once($egMapsIP . '/Maps_Settings.php');
00025
00026 $wgExtensionFunctions[] = 'efMapsSetup';
00027
00028 $wgExtensionMessagesFiles['Maps'] = $egMapsIP . '/Maps.i18n.php';
00029
00030 $wgHooks['LanguageGetMagic'][] = 'efMapsFunctionMagic';
00031 $wgHooks['AdminLinks'][] = 'efMapsAddToAdminLinks';
00032
00033
00034 $wgAutoloadClasses['MapsMapFeature'] = $egMapsIP . '/Maps_MapFeature.php';
00035 $wgAutoloadClasses['MapsBaseMap'] = $egMapsIP . '/Maps_BaseMap.php';
00036 $wgAutoloadClasses['MapsMapper'] = $egMapsIP . '/Maps_Mapper.php';
00037 $wgAutoloadClasses['MapsParserFunctions'] = $egMapsIP . '/Maps_ParserFunctions.php';
00038 $wgAutoloadClasses['MapsUtils'] = $egMapsIP . '/Maps_Utils.php';
00039 $wgAutoloadClasses['MapsGeocoder'] = $egMapsIP . '/Maps_Geocoder.php';
00040 $wgAutoloadClasses['MapsBaseGeocoder'] = $egMapsIP . '/Maps_BaseGeocoder.php';
00041
00042
00043 $egMapsServices = array();
00044
00045 $egMapsServices['googlemaps'] = array(
00046 'pf' => array('class' => 'MapsGoogleMaps', 'file' => 'GoogleMaps/Maps_GoogleMaps.php', 'local' => true),
00047 'classes' => array(
00048 array('class' => 'MapsGoogleMapsUtils', 'file' => 'GoogleMaps/Maps_GoogleMapsUtils.php', 'local' => true)
00049 ),
00050 'aliases' => array('google', 'googlemap', 'gmap', 'gmaps'),
00051 'parameters' => array(
00052 'type' => array('map-type', 'map type'),
00053 'types' => array('map-types', 'map types'),
00054 'earth' => array(),
00055 'autozoom' => array('auto zoom', 'mouse zoom', 'mousezoom'),
00056 'class' => array(),
00057 'style' => array()
00058 )
00059 );
00060
00061 $egMapsServices['openlayers'] = array(
00062 'pf' => array('class' => 'MapsOpenLayers', 'file' => 'OpenLayers/Maps_OpenLayers.php', 'local' => true),
00063 'classes' => array(
00064 array('class' => 'MapsOpenLayersUtils', 'file' => 'OpenLayers/Maps_OpenLayersUtils.php', 'local' => true)
00065 ),
00066 'aliases' => array('layers', 'openlayer'),
00067 'parameters' => array(
00068 'layers' => array(),
00069 'baselayer' => array()
00070 )
00071 );
00072
00073 $egMapsServices['yahoomaps'] = array(
00074 'pf' => array('class' => 'MapsYahooMaps', 'file' => 'YahooMaps/Maps_YahooMaps.php', 'local' => true),
00075 'classes' => array(
00076 array('class' => 'MapsYahooMapsUtils', 'file' => 'YahooMaps/Maps_YahooMapsUtils.php', 'local' => true)
00077 ),
00078 'aliases' => array('yahoo', 'yahoomap', 'ymap', 'ymaps'),
00079 'parameters' => array(
00080 'type' => array('map-type'),
00081 'types' => array('map-types', 'map types'),
00082 'autozoom' => array('auto zoom', 'mouse zoom', 'mousezoom')
00083 )
00084 );
00085
00089 function efMapsSetup() {
00090 global $wgExtensionCredits, $wgOut, $wgAutoloadClasses;
00091 global $egMapsDefaultService, $egMapsAvailableServices, $egMapsServices, $egMapsScriptPath, $egMapsDefaultGeoService, $egMapsAvailableGeoServices, $egMapsIP;
00092
00093 efMapsValidateGoogleMapsKey();
00094
00095
00096 $egMapsDefaultService = in_array($egMapsDefaultService, $egMapsAvailableServices) ? $egMapsDefaultService : $egMapsAvailableServices[0];
00097 $egMapsDefaultGeoService = in_array($egMapsDefaultGeoService, $egMapsAvailableGeoServices) ? $egMapsDefaultGeoService : $egMapsAvailableGeoServices[0];
00098
00099 $services_list = implode(', ', array_keys($egMapsServices));
00100
00101 wfLoadExtensionMessages( 'Maps' );
00102
00103 $wgExtensionCredits['parserhook'][] = array(
00104 'path' => __FILE__,
00105 'name' => wfMsg('maps_name'),
00106 'version' => Maps_VERSION,
00107 'author' => array("[http://bn2vs.com Jeroen De Dauw]", "[http://www.mediawiki.org/wiki/User:Yaron_Koren Yaron Koren]", "Robert Buzink", "Matt Williamson", "[http://www.sergeychernyshev.com Sergey Chernyshev]"),
00108 'url' => 'http://www.mediawiki.org/wiki/Extension:Maps',
00109 'description' => wfMsg( 'maps_desc', $services_list ),
00110 'descriptionmsg' => wfMsg( 'maps_desc', $services_list ),
00111 );
00112
00113 efMapsAddParserHooks();
00114
00115 $wgOut->addScriptFile($egMapsScriptPath . '/MapUtilityFunctions.js');
00116
00117 foreach ($egMapsServices as $serviceData) {
00118 $file = $serviceData['pf']['local'] ? $egMapsIP . '/' . $serviceData['pf']['file'] : $serviceData['pf']['file'];
00119 $wgAutoloadClasses[$serviceData['pf']['class']] = $file;
00120
00121 foreach($serviceData['classes'] as $class) {
00122 $file = $class['local'] ? $egMapsIP . '/' . $class['file'] : $class['file'];
00123 $wgAutoloadClasses[$class['class']] = $file;
00124 }
00125 }
00126 }
00127
00131 function efMapsAddParserHooks() {
00132 global $wgParser;
00133
00134
00135 $wgParser->setFunctionHook( 'display_point', array('MapsParserFunctions', 'displayPointRender' ));
00136 $wgParser->setFunctionHook( 'display_points', array('MapsParserFunctions', 'displayPointsRender' ));
00137
00138
00139 $wgParser->setFunctionHook( 'display_address', array('MapsParserFunctions', 'displayAddressRender' ));
00140 $wgParser->setFunctionHook( 'display_addresses', array('MapsParserFunctions', 'displayAddressesRender' ));
00141
00142
00143 $wgParser->setFunctionHook( 'geocode', array('MapsGeocoder', 'renderGeocoder' ));
00144 $wgParser->setFunctionHook( 'geocodelat' , array('MapsGeocoder', 'renderGeocoderLat' ));
00145 $wgParser->setFunctionHook( 'geocodelng' , array('MapsGeocoder', 'renderGeocoderLng' ));
00146 }
00147
00151 function efMapsFunctionMagic( &$magicWords, $langCode ) {
00152 $magicWords['display_point'] = array( 0, 'display_point' );
00153 $magicWords['display_points'] = array( 0, 'display_points' );
00154 $magicWords['display_address'] = array( 0, 'display_address' );
00155 $magicWords['display_addresses'] = array( 0, 'display_addresses' );
00156
00157 $magicWords['geocode'] = array( 0, 'geocode' );
00158 $magicWords['geocodelat'] = array ( 0, 'geocodelat' );
00159 $magicWords['geocodelng'] = array ( 0, 'geocodelng' );
00160
00161 return true;
00162 }
00163
00168 function efMapsValidateGoogleMapsKey() {
00169 global $egGoogleMapsKey, $wgGoogleMapsKey;
00170
00171 if (strlen($egGoogleMapsKey) < 1 && isset($wgGoogleMapsKey)) $egGoogleMapsKey = $wgGoogleMapsKey;
00172 }
00173
00177 function efMapsAddToAdminLinks(&$admin_links_tree) {
00178
00179 $displaying_data_section = $admin_links_tree->getSection(wfMsg('smw_adminlinks_displayingdata'));
00180
00181 if (is_null($displaying_data_section))
00182 return true;
00183 $smw_docu_row = $displaying_data_section->getRow('smw');
00184 wfLoadExtensionMessages('Maps');
00185 $maps_docu_label = wfMsg('adminlinks_documentation', wfMsg('maps_name'));
00186 $smw_docu_row->addItem(AlItem::newFromExternalLink("http://www.mediawiki.org/wiki/Extension:Maps", $maps_docu_label));
00187 return true;
00188 }
00189
00190