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