= $minLength ); $this->errorPrefix = $errorPrefix; $this->minLength = $minLength; $this->maxLength = $maxLength; } public function validate( $value ) { $len = strlen( $value ); if ( $len < $this->minLength ) { $template = Loader::Text( '%1$s is too short (min. %2$d characters)' ); return array( sprintf( $template , $this->errorPrefix , $this->minLength ) ); } if ( $this->maxLength !== null && $len > $this->maxLength ) { $template = Loader::Text( '%1$s is too long (max. %2$d characters)' ); return array( sprintf( $template , $this->errorPrefix , $this->maxLength ) ); } return null; } } class Validator_InArray implements FieldValidator { private $values; private $errorText; public function __construct( array $values , $errorText ) { $this->values = $values; $this->errorText = $errorText; } public function validate( $value ) { if ( ! ( empty( $this->values ) || in_array( $value , $this->values ) ) ) { return array( $this->errorText ); } return null; } } class Validator_IntValue implements FieldValidator { private $invalidText; private $minValue; private $minError; private $maxValue; private $maxError; public function __construct( $invalidText ) { $this->invalidText = $invalidText; } public function setMinValue( $minValue , $minError = null ) { assert( $this->maxValue === null || $minValue <= $this->maxValue ); $this->minValue = $minValue; $this->minError = ( $minError === null ) ? $this->invalidText : $minError; return $this; } public function setMaxValue( $maxValue , $maxError = null ) { assert( $this->minValue === null || $maxValue >= $this->maxValue ); $this->maxValue = $maxValue; $this->maxError = ( $maxError === null ) ? $this->invalidText : $maxError; return $this; } public function validate( $value ) { if ( !is_scalar( $value ) || (int) $value != $value ) { return array( $this->invalidText ); } else if ( $this->minValue !== null && $value < $this->minValue ) { return array( $this->minError ); } else if ( $this->maxValue !== null && $value > $this->maxValue ) { return array( $this->maxError ); } } }