http://www.mediawiki.org/wiki/Special:Code/MediaWiki/72815

Revision: 72815
Author:   jeroendedauw
Date:     2010-09-11 15:42:32 +0000 (Sat, 11 Sep 2010)

Log Message:
-----------
Changes for 0.7 - work on parameter validation with Validator 0.4

Modified Paths:
--------------
    trunk/extensions/Maps/Maps.i18n.php
    trunk/extensions/Maps/Maps.php
    trunk/extensions/Maps/includes/Maps_Geocoders.php
    trunk/extensions/Maps/includes/parserHooks/Maps_Coordinates.php
    trunk/extensions/Maps/includes/parserHooks/Maps_Geocode.php

Added Paths:
-----------
    trunk/extensions/Maps/includes/criteria/CriterionIsLocation.php

Removed Paths:
-------------
    trunk/extensions/Maps/includes/criteria/CriterionAreLocations.php

Modified: trunk/extensions/Maps/Maps.i18n.php
===================================================================
--- trunk/extensions/Maps/Maps.i18n.php 2010-09-11 15:42:01 UTC (rev 72814)
+++ trunk/extensions/Maps/Maps.i18n.php 2010-09-11 15:42:32 UTC (rev 72815)
@@ -23,6 +23,7 @@
        'maps_map' => 'Map',
        'maps-loading-map' => 'Loading map...',
        'maps-markers' => 'Markers',
+       'validation-error-invalid-location' => 'Parameter $1 must be a valid 
location.',
 
        // Coordinate handling
        'maps-abb-north' => 'N',

Modified: trunk/extensions/Maps/Maps.php
===================================================================
--- trunk/extensions/Maps/Maps.php      2010-09-11 15:42:01 UTC (rev 72814)
+++ trunk/extensions/Maps/Maps.php      2010-09-11 15:42:32 UTC (rev 72815)
@@ -103,7 +103,7 @@
        
        // Autoload the "includes/criteria/" classes.
        $criDir = $incDir . 'criteria/';
-       $wgAutoloadClasses['CriterionAreLocations']     = $criDir . 
'CriterionAreLocations.php';
+       $wgAutoloadClasses['CriterionIsLocation']               = $criDir . 
'CriterionIsLocation.php';
        $wgAutoloadClasses['CriterionMapDimension']     = $criDir . 
'CriterionMapDimension.php';
        
        // Autoload the "includes/features/" classes.

Modified: trunk/extensions/Maps/includes/Maps_Geocoders.php
===================================================================
--- trunk/extensions/Maps/includes/Maps_Geocoders.php   2010-09-11 15:42:01 UTC 
(rev 72814)
+++ trunk/extensions/Maps/includes/Maps_Geocoders.php   2010-09-11 15:42:32 UTC 
(rev 72815)
@@ -146,7 +146,7 @@
                }
                
                $geocoder = self::getValidGeocoderInstance( $geoService, 
$mappingService );
-               
+
                // This means there was no suitable geocoder found, so return 
false.
                if ( $geocoder === false ) {
                        return false;

Deleted: trunk/extensions/Maps/includes/criteria/CriterionAreLocations.php
===================================================================
--- trunk/extensions/Maps/includes/criteria/CriterionAreLocations.php   
2010-09-11 15:42:01 UTC (rev 72814)
+++ trunk/extensions/Maps/includes/criteria/CriterionAreLocations.php   
2010-09-11 15:42:32 UTC (rev 72815)
@@ -1,73 +0,0 @@
-<?php
-
-/**
- * Parameter criterion stating that the value must be a set of coordinates or 
an address.
- * 
- * @since 0.7
- * 
- * @file CriterionAreLocations.php
- * @ingroup Maps
- * @ingroup Criteria
- * 
- * @author Jeroen De Dauw
- */
-class CriterionAreLocations extends ItemParameterCriterion {
-       
-       /**
-        * In some usecases, the parameter values will contain extra location
-        * metadata, which should be ignored here. This field holds the 
delimiter
-        * used to seperata this data from the actual location. 
-        * 
-        * @since 0.7
-        * 
-        * @var string
-        */
-       protected $metaDataSeparator;
-       
-       /**
-        * Constructor.
-        * 
-        * @since 0.7
-        */
-       public function __construct( $metaDataSeparator = false ) {
-               parent::__construct();
-               
-               $this->metaDataSeparator = $metaDataSeparator;
-       }
-       
-       /**
-        * @see ItemParameterCriterion::validate
-        */     
-       protected function doValidation( $value ) {
-               if ( $this->metaDataSeparator !== false ) {
-                       $parts = explode( $this->metaDataSeparator, $value );
-                       $value = $parts[0];
-               }
-               
-               if ( MapsGeocoders::canGeocode() ) {
-                       // TODO
-                       //$geoService = array_key_exists( 'geoservice', 
$parameters ) ? $parameters['geoservice']['value'] : '';
-                       //$mappingService = array_key_exists( 'mappingservice', 
$parameters ) ? $parameters['mappingservice']['value'] : false;
-                       
-                       return MapsGeocoders::isLocation( $value/*, 
$geoService, $mappingService */ );
-               } else {
-                       return MapsCoordinateParser::areCoordinates( $value );
-               }
-       }
-       
-       /**
-        * @see ItemParameterCriterion::getItemErrorMessage
-        */     
-       protected function getItemErrorMessage( Parameter $parameter ) {
-               return wfMsgExt( '', 'parsemag', $parameter->value );
-       }
-       
-               /**
-        * @see ItemParameterCriterion::getListErrorMessage
-        */     
-       protected function getListErrorMessage( Parameter $parameter, array 
$invalidItems ) {
-               global $wgLang;
-               return wfMsgExt( '', 'parsemag', $wgLang->listToText( 
$invalidItems ), count( $invalidItems ) );
-       }       
-       
-}
\ No newline at end of file

Copied: trunk/extensions/Maps/includes/criteria/CriterionIsLocation.php (from 
rev 72801, trunk/extensions/Maps/includes/criteria/CriterionAreLocations.php)
===================================================================
--- trunk/extensions/Maps/includes/criteria/CriterionIsLocation.php             
                (rev 0)
+++ trunk/extensions/Maps/includes/criteria/CriterionIsLocation.php     
2010-09-11 15:42:32 UTC (rev 72815)
@@ -0,0 +1,72 @@
+<?php
+
+/**
+ * Parameter criterion stating that the value must be a set of coordinates or 
an address.
+ * 
+ * @since 0.7
+ * 
+ * @file CriterionIsLocation.php
+ * @ingroup Maps
+ * @ingroup Criteria
+ * 
+ * @author Jeroen De Dauw
+ */
+class CriterionIsLocation extends ItemParameterCriterion {
+       
+       /**
+        * In some usecases, the parameter values will contain extra location
+        * metadata, which should be ignored here. This field holds the 
delimiter
+        * used to seperata this data from the actual location. 
+        * 
+        * @since 0.7
+        * 
+        * @var string
+        */
+       protected $metaDataSeparator;
+       
+       /**
+        * Constructor.
+        * 
+        * @since 0.7
+        */
+       public function __construct( $metaDataSeparator = false ) {
+               parent::__construct();
+               
+               $this->metaDataSeparator = $metaDataSeparator;
+       }
+       
+       /**
+        * @see ItemParameterCriterion::validate
+        */     
+       protected function doValidation( $value ) {
+               if ( $this->metaDataSeparator !== false ) {
+                       $parts = explode( $this->metaDataSeparator, $value );
+                       $value = $parts[0];
+               }
+
+               if ( MapsGeocoders::canGeocode() ) {
+                       // TODO
+                       //$geoService = array_key_exists( 'geoservice', 
$parameters ) ? $parameters['geoservice']['value'] : '';
+                       //$mappingService = array_key_exists( 'mappingservice', 
$parameters ) ? $parameters['mappingservice']['value'] : false;
+                       return MapsGeocoders::isLocation( $value/*, 
$geoService, $mappingService */ );
+               } else {
+                       return MapsCoordinateParser::areCoordinates( $value );
+               }
+       }
+       
+       /**
+        * @see ItemParameterCriterion::getItemErrorMessage
+        */     
+       protected function getItemErrorMessage( Parameter $parameter ) {
+               return wfMsgExt( 'validation-error-invalid-location', 
'parsemag', $parameter->getOriginalName() );
+       }
+       
+       /**
+        * @see ItemParameterCriterion::getListErrorMessage
+        */     
+       protected function getListErrorMessage( Parameter $parameter, array 
$invalidItems ) {
+               global $wgLang;
+               return wfMsgExt( '', 'parsemag', $wgLang->listToText( 
$invalidItems ), count( $invalidItems ) );
+       }       
+       
+}
\ No newline at end of file

Modified: trunk/extensions/Maps/includes/parserHooks/Maps_Coordinates.php
===================================================================
--- trunk/extensions/Maps/includes/parserHooks/Maps_Coordinates.php     
2010-09-11 15:42:01 UTC (rev 72814)
+++ trunk/extensions/Maps/includes/parserHooks/Maps_Coordinates.php     
2010-09-11 15:42:32 UTC (rev 72815)
@@ -57,26 +57,38 @@
                global $egMapsAvailableServices, $egMapsAvailableCoordNotations;
                global $egMapsDefaultServices, $egMapsDefaultGeoService, 
$egMapsCoordinateNotation;
                global $egMapsAllowCoordsGeocoding, 
$egMapsCoordinateDirectional;
-                               
-               return array(
-                       'location' => array(
-                               'required' => true,
-                               'tolower' => false
-                       ),
-                       'format' => array(
-                               'criteria' => array(
-                                       'in_array' => 
$egMapsAvailableCoordNotations
-                               ),
-                               'aliases' => array(
-                                       'notation'
-                               ),
-                               'default' => $egMapsCoordinateNotation
-                       ),
-                       'directional' => array(
-                               'type' => 'boolean',
-                               'default' => $egMapsCoordinateDirectional
-                       )
+               
+               $params = array();
+               
+               $params['location'] = new Parameter(
+                       'location',
+                       Parameter::TYPE_STRING,
+                       null,
+                       array(),
+                       array(
+                               new CriterionIsLocation(),
+                       )                       
                );
+               
+               $params['location']->lowerCaseValue = false;
+               
+               $params['format'] = new Parameter(
+                       'format',
+                       Parameter::TYPE_STRING,
+                       $egMapsCoordinateNotation,
+                       array( 'notation' ),
+                       array(
+                               new CriterionInArray( 
$egMapsAvailableCoordNotations ),
+                       )                       
+               );              
+               
+               $params['directional'] = new Parameter(
+                       'directional',
+                       Parameter::TYPE_BOOLEAN,
+                       $egMapsCoordinateDirectional                    
+               );              
+               
+               return $params;
        }
        
        /**

Modified: trunk/extensions/Maps/includes/parserHooks/Maps_Geocode.php
===================================================================
--- trunk/extensions/Maps/includes/parserHooks/Maps_Geocode.php 2010-09-11 
15:42:01 UTC (rev 72814)
+++ trunk/extensions/Maps/includes/parserHooks/Maps_Geocode.php 2010-09-11 
15:42:32 UTC (rev 72815)
@@ -118,6 +118,7 @@
         * @return string
         */
        public function render( array $parameters ) {
+               var_dump($parameters);exit;
                if ( MapsGeocoders::canGeocode() ) {
                        $geovalues = MapsGeocoders::attemptToGeocodeToString(
                                $parameters['location'],



_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to