XW-2444: error when color is in wrong format

This commit is contained in:
Mateusz Rybarski 2016-12-27 15:57:14 +01:00
parent d56e77855c
commit 194b8e4e03
4 changed files with 16 additions and 1 deletions

View file

@ -17,6 +17,7 @@ $messages['en'] = array(
'portable-infobox-xml-parse-error-tag-name-mismatch' => 'Opening and ending tag mismatch', 'portable-infobox-xml-parse-error-tag-name-mismatch' => 'Opening and ending tag mismatch',
'portable-infobox-xml-parse-error-tag-not-finished' => 'Premature end of tag', 'portable-infobox-xml-parse-error-tag-not-finished' => 'Premature end of tag',
'portable-infobox-xml-parse-error-infobox-tag-attribute-unsupported' => 'Attribute "$1" is not supported in <infobox> tag', 'portable-infobox-xml-parse-error-infobox-tag-attribute-unsupported' => 'Attribute "$1" is not supported in <infobox> tag',
'portable-infobox-unsupported-color-format' => 'Unsupported color format. Currently, only hexadecimal values are supported.'
); );
$messages['qqq'] = array( $messages['qqq'] = array(
@ -34,6 +35,7 @@ $messages['qqq'] = array(
'portable-infobox-xml-parse-error-tag-name-mismatch' => 'XML Error: Opening and ending tag mismatch (for example: <data></label>)', 'portable-infobox-xml-parse-error-tag-name-mismatch' => 'XML Error: Opening and ending tag mismatch (for example: <data></label>)',
'portable-infobox-xml-parse-error-tag-not-finished' => 'XML Error: premature end of tag', 'portable-infobox-xml-parse-error-tag-not-finished' => 'XML Error: premature end of tag',
'portable-infobox-xml-parse-error-infobox-tag-attribute-unsupported' => 'Unsupported attribute used inside <infobox> tag. $1 param contains attribute name.', 'portable-infobox-xml-parse-error-infobox-tag-attribute-unsupported' => 'Unsupported attribute used inside <infobox> tag. $1 param contains attribute name.',
'portable-infobox-unsupported-color-format' => 'Error message displayed if user typed color in unsupported format'
); );
$messages['de'] = array( $messages['de'] = array(

View file

@ -67,6 +67,9 @@ $wgAutoloadClasses[ 'ApiQueryPortableInfobox' ] = $dir . 'controllers/ApiQueryPo
$wgAutoloadClasses[ 'PortableInfoboxHooks' ] = $dir . 'PortableInfoboxHooks.class.php'; $wgAutoloadClasses[ 'PortableInfoboxHooks' ] = $dir . 'PortableInfoboxHooks.class.php';
$wgAutoloadClasses[ 'ApiQueryAllinfoboxes' ] = $dir . 'controllers/ApiQueryAllinfoboxes.class.php'; $wgAutoloadClasses[ 'ApiQueryAllinfoboxes' ] = $dir . 'controllers/ApiQueryAllinfoboxes.class.php';
$wgAutoloadClasses[ 'InvalidParamValueException' ] = $dir . 'controllers/InvalidParamValueException.php';
// query pages // query pages
$wgAutoloadClasses[ 'AllinfoboxesQueryPage' ] = $dir . 'querypage/AllinfoboxesQueryPage.php'; $wgAutoloadClasses[ 'AllinfoboxesQueryPage' ] = $dir . 'querypage/AllinfoboxesQueryPage.php';

View file

@ -0,0 +1,4 @@
<?php
class InvalidParamValueException extends \Exception {
}

View file

@ -117,6 +117,8 @@ class PortableInfoboxParserTagController extends WikiaController {
return $this->handleXmlParseError( $e->getErrors(), $text ); return $this->handleXmlParseError( $e->getErrors(), $text );
} catch ( \Wikia\PortableInfobox\Helpers\InvalidInfoboxParamsException $e ) { } catch ( \Wikia\PortableInfobox\Helpers\InvalidInfoboxParamsException $e ) {
return $this->handleError( wfMessage( 'portable-infobox-xml-parse-error-infobox-tag-attribute-unsupported', [ $e->getMessage() ] )->escaped() ); return $this->handleError( wfMessage( 'portable-infobox-xml-parse-error-infobox-tag-attribute-unsupported', [ $e->getMessage() ] )->escaped() );
} catch ( InvalidParamValueException $e ) {
return $this->handleError(wfMessage( "portable-infobox-unsupported-color-format" )->escaped() );
} }
$marker = $parser->uniqPrefix() . "-" . self::PARSER_TAG_NAME . "-{$this->markerNumber}" . Parser::MARKER_SUFFIX; $marker = $parser->uniqPrefix() . "-" . self::PARSER_TAG_NAME . "-{$this->markerNumber}" . Parser::MARKER_SUFFIX;
@ -210,7 +212,11 @@ class PortableInfoboxParserTagController extends WikiaController {
$color = isset( $params[ $defaultParam ] ) ? trim($params[ $defaultParam ]) : ''; $color = isset( $params[ $defaultParam ] ) ? trim($params[ $defaultParam ]) : '';
} }
return $this->isValidHexColor( $color ) ? $color : ''; if ( !$this->isValidHexColor( $color ) ) {
throw new InvalidParamValueException();
}
return $color;
} }
private function isValidHexColor( $color ) { private function isValidHexColor( $color ) {