X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FFormOptions.php;h=079267a246827126f9b1ae61060782a438e1fe05;hb=b9fd30a4e41c1ccce4afdcdd4f0fe8dbc47bf5e8;hp=54822e327187e74b45cddf0905f0c4d5be43ccea;hpb=498693b9eaddaf59dfb2cba5020df4dfb5fffa56;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/FormOptions.php b/includes/FormOptions.php index 54822e3271..079267a246 100644 --- a/includes/FormOptions.php +++ b/includes/FormOptions.php @@ -4,6 +4,7 @@ * * Copyright © 2008, Niklas Laxström * Copyright © 2011, Antoine Musso + * Copyright © 2013, Bartosz Dziewoński * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -42,6 +43,9 @@ class FormOptions implements ArrayAccess { const STRING = 0; /** Integer type, maps guessType() to WebRequest::getInt() */ const INT = 1; + /** Float type, maps guessType() to WebRequest::getFloat() + * @since 1.23 */ + const FLOAT = 4; /** Boolean type, maps guessType() to WebRequest::getBool() */ const BOOL = 2; /** Integer type or null, maps to WebRequest::getIntOrNull() @@ -112,6 +116,8 @@ class FormOptions implements ArrayAccess { return self::BOOL; } elseif ( is_int( $data ) ) { return self::INT; + } elseif ( is_float( $data ) ) { + return self::FLOAT; } elseif ( is_string( $data ) ) { return self::STRING; } else { @@ -234,19 +240,29 @@ class FormOptions implements ArrayAccess { } /** - * Validate and set an option integer value - * The value will be altered to fit in the range. + * @see validateBounds() + */ + public function validateIntBounds( $name, $min, $max ) { + $this->validateBounds( $name, $min, $max ); + } + + /** + * Constrain a numeric value for a given option to a given range. The value will be altered to fit + * in the range. * - * @param string $name option name - * @param int $min minimum value - * @param int $max maximum value + * @since 1.23 + * + * @param string $name Option name + * @param int|float $min Minimum value + * @param int|float $max Maximum value * @throws MWException If option is not of type INT */ - public function validateIntBounds( $name, $min, $max ) { + public function validateBounds( $name, $min, $max ) { $this->validateName( $name, true ); + $type = $this->options[$name]['type']; - if ( $this->options[$name]['type'] !== self::INT ) { - throw new MWException( "Option $name is not of type int" ); + if ( $type !== self::INT && $type !== self::FLOAT ) { + throw new MWException( "Option $name is not of type INT or FLOAT" ); } $value = $this->getValueReal( $this->options[$name] ); @@ -333,6 +349,9 @@ class FormOptions implements ArrayAccess { case self::INT: $value = $r->getInt( $name, $default ); break; + case self::FLOAT: + $value = $r->getFloat( $name, $default ); + break; case self::STRING: $value = $r->getText( $name, $default ); break; @@ -354,22 +373,32 @@ class FormOptions implements ArrayAccess { * @see http://php.net/manual/en/class.arrayaccess.php */ /* @{ */ - /** Whether the option exists. */ + /** + * Whether the option exists. + * @return bool + */ public function offsetExists( $name ) { return isset( $this->options[$name] ); } - /** Retrieve an option value. */ + /** + * Retrieve an option value. + * @return mixed + */ public function offsetGet( $name ) { return $this->getValue( $name ); } - /** Set an option to given value. */ + /** + * Set an option to given value. + */ public function offsetSet( $name, $value ) { $this->setValue( $name, $value ); } - /** Delete the option. */ + /** + * Delete the option. + */ public function offsetUnset( $name ) { $this->delete( $name ); }