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

Revision: 72281
Author:   jeroendedauw
Date:     2010-09-03 12:54:28 +0000 (Fri, 03 Sep 2010)

Log Message:
-----------
Changes for 0.4 - implemented criteria validation error message method

Modified Paths:
--------------
    trunk/extensions/Validator/includes/Validator.php

Modified: trunk/extensions/Validator/includes/Validator.php
===================================================================
--- trunk/extensions/Validator/includes/Validator.php   2010-09-03 12:37:32 UTC 
(rev 72280)
+++ trunk/extensions/Validator/includes/Validator.php   2010-09-03 12:54:28 UTC 
(rev 72281)
@@ -865,102 +865,85 @@
        /**
         * Returns an error message for a criteria validation that failed.
         * 
+        * TODO: integrate this further with the hook mechanisms
+        * TODO: proper escaping
+        * 
         * @since 0.4
         * 
-        * @param string $criteria
-        * @param string $paramName
-        * @param string $paramValue
-        * @param array $args
-        * @param boolean $isList
-        * @param array $invalidItems
+        * @param string $criteria The name of the criteria
+        * @param string $paramName The name of the parameter, as provided by 
the user
+        * @param string $paramValue The value of the parameter, as provided by 
the user
+        * @param array $args The criteria arguments
+        * @param boolean $isList Indicates if the parameter is a list type or 
not
+        * @param array $invalidItems Can contain a list of invalid items for 
list parameters
         * 
         * @return string
         */
        protected function getCriteriaErrorMessage( $criteria, $paramName, 
$paramValue, array $args = array(), $isList = false, array $invalidItems = 
array() ) {
                global $wgLang, $egValidatorErrorLevel;
                
-               if ( $egValidatorErrorLevel >= Validator_ERRORS_SHOW && 
$this->validator->hasErrors() ) {
-                       $rawErrors = $this->validator->getErrors();
+               if ( $isList ) {
+                       switch ( $criteria ) {
+                               case 'not_empty' :
+                                       $message = wfMsgExt( 
'validator_list_error_empty_argument', array( 'parsemag' ), $paramName );
+                                       break;
+                               case 'in_range' :
+                                       $message = wfMsgExt( 
'validator_list_error_invalid_range', array( 'parsemag' ),$paramName, '<b>' . 
$args[0] . '</b>', '<b>' . $args[1] . '</b>' );
+                                       break;
+                               case 'is_numeric' :
+                                       $message = wfMsgExt( 
'validator_list_error_must_be_number', array( 'parsemag' ), $paramName );
+                                       break;
+                               case 'is_integer' :
+                                       $message = wfMsgExt( 
'validator_list_error_must_be_integer', array( 'parsemag' ), $paramName );
+                                       break;
+                               case 'in_array' :
+                                       $itemsText = $wgLang->listToText( $args 
);
+                                       $message = wfMsgExt( 
'validator_error_accepts_only', array( 'parsemag' ), $paramName, $itemsText, 
count( $args ) );
+                                       break;
+                               case 'invalid' : default :
+                                       $message = wfMsgExt( 
'validator_list_error_invalid_argument', array( 'parsemag' ), $paramName );
+                                       break;                          
+                       }
                        
-                       $errorList = '<b>' . wfMsgExt( 
'validator_error_parameters', 'parsemag', count( $rawErrors ) ) . '</b><br 
/><i>';
-
-                       $errors = array();
-                       
-                       foreach ( $rawErrors as $error ) {
-                               $error['name'] = '<b>' . Sanitizer::escapeId( 
$error['name'] ) . '</b>';
-                               
-                               if ( $error['type'] == 'unknown' ) {
-                                       $errors[] = wfMsgExt( 
'validator_error_unknown_argument', array( 'parsemag' ), $error['name'] );
+                       if ( count( $invalidItems ) > 0 ) {
+                               foreach ( $invalidItems as &$item ) {
+                                       $item = Sanitizer::escapeId( $item );
                                }
-                               elseif ( $error['type'] == 'missing' ) {
-                                       $errors[] = wfMsgExt( 
'validator_error_required_missing', array( 'parsemag' ), $error['name'] );
-                               }
-                               elseif ( array_key_exists( 'list', $error ) && 
$error['list'] ) {
-                                       switch( $error['type'] ) {
-                                               case 'not_empty' :
-                                                       $msg = wfMsgExt( 
'validator_list_error_empty_argument', array( 'parsemag' ), $error['name'] );
-                                                       break;
-                                               case 'in_range' :
-                                                       $msg = wfMsgExt( 
'validator_list_error_invalid_range', array( 'parsemag' ), $error['name'], 
'<b>' . $error['args'][0] . '</b>', '<b>' . $error['args'][1] . '</b>' );
-                                                       break;
-                                               case 'is_numeric' :
-                                                       $msg = wfMsgExt( 
'validator_list_error_must_be_number', array( 'parsemag' ), $error['name'] );
-                                                       break;
-                                               case 'is_integer' :
-                                                       $msg = wfMsgExt( 
'validator_list_error_must_be_integer', array( 'parsemag' ), $error['name'] );
-                                                       break;
-                                               case 'in_array' :
-                                                       $itemsText = 
$wgLang->listToText( $error['args'] );
-                                                       $msg = wfMsgExt( 
'validator_error_accepts_only', array( 'parsemag' ), $error['name'], 
$itemsText, count( $error['args'] ) );
-                                                       break;
-                                               case 'invalid' : default :
-                                                       $msg = wfMsgExt( 
'validator_list_error_invalid_argument', array( 'parsemag' ), $error['name'] );
-                                                       break;
-                                       }
-
-                                       if ( array_key_exists( 'invalid-items', 
$error ) ) {
-                                               $omitted = array();
-                                               foreach ( 
$error['invalid-items'] as $item ) $omitted[] = Sanitizer::escapeId( $item );
-                                               $msg .= ' ' . wfMsgExt( 
'validator_list_omitted', array( 'parsemag' ),
-                                                       $wgLang->listToText( 
$omitted ), count( $omitted ) );
-                                       }
-
-                                       $errors[] = $msg;
-                               }
-                               else {
-                                       switch( $error['type'] ) {
-                                               case 'not_empty' :
-                                                       $errors[] = wfMsgExt( 
'validator_error_empty_argument', array( 'parsemag' ), $error['name'] );
-                                                       break;
-                                               case 'in_range' :
-                                                       $errors[] = wfMsgExt( 
'validator_error_invalid_range', array( 'parsemag' ), $error['name'], '<b>' . 
$error['args'][0] . '</b>', '<b>' . $error['args'][1] . '</b>' );
-                                                       break;
-                                               case 'is_numeric' :
-                                                       $errors[] = wfMsgExt( 
'validator_error_must_be_number', array( 'parsemag' ), $error['name'] );
-                                                       break;
-                                               case 'is_integer' :
-                                                       $errors[] = wfMsgExt( 
'validator_error_must_be_integer', array( 'parsemag' ), $error['name'] );
-                                                       break;
-                                               case 'in_array' :
-                                                       $itemsText = 
$wgLang->listToText( $error['args'] );
-                                                       $errors[] = wfMsgExt( 
'validator_error_accepts_only', array( 'parsemag' ), $error['name'], 
$itemsText, count( $error['args'] ) );
-                                                       break;
-                                               case 'invalid' : default :
-                                                       $errors[] = wfMsgExt( 
'validator_error_invalid_argument', array( 'parsemag' ), '<b>' . 
htmlspecialchars( $error['value'] ) . '</b>', $error['name'] );
-                                                       break;
-                                       }
-                               }
-                       }
-
-                       return $errorList . implode( $errors, '<br />' ) . 
'</i><br />';
+                               
+                               $message .= ' ';
+                               $message .= wfMsgExt(
+                                       'validator_list_omitted',
+                                       array( 'parsemag' ),
+                                       $wgLang->listToText( $invalidItems ),
+                                       count( $invalidItems )
+                               );
+                       }                       
                }
-               elseif ( $egValidatorErrorLevel == Validator_ERRORS_WARN && 
$this->validator->hasErrors() ) {
-                       return '<b>' . wfMsgExt( 
'validator_warning_parameters', array( 'parsemag' ), count( 
$this->validator->getErrors() ) ) . '</b>';
-               }
                else {
-                       return '';
+                       switch ( $criteria ) {
+                               case 'not_empty' :
+                                       $message = wfMsgExt( 
'validator_error_empty_argument', array( 'parsemag' ), $paramName );
+                                       break;
+                               case 'in_range' :
+                                       $message = wfMsgExt( 
'validator_error_invalid_range', array( 'parsemag' ), $paramName, '<b>' . 
$args[0] . '</b>', '<b>' . $args[1] . '</b>' );
+                                       break;
+                               case 'is_numeric' :
+                                       $message = wfMsgExt( 
'validator_error_must_be_number', array( 'parsemag' ), $paramName );
+                                       break;
+                               case 'is_integer' :
+                                       $message = wfMsgExt( 
'validator_error_must_be_integer', array( 'parsemag' ), $paramName );
+                                       break;
+                               case 'in_array' :
+                                       $itemsText = $wgLang->listToText( $args 
);
+                                       $message = wfMsgExt( 
'validator_error_accepts_only', array( 'parsemag' ), $paramName, $itemsText, 
count( $args ) );
+                                       break;
+                               case 'invalid' : default :
+                                       $message = wfMsgExt( 
'validator_error_invalid_argument', array( 'parsemag' ), '<b>' . 
htmlspecialchars( $paramValue ) . '</b>', $paramName );
+                                       break;                          
+                       }
                }
                
+               return $message;        
        }
        
 }
\ No newline at end of file



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

Reply via email to