2013-10-16 18:50:19 +02:00
|
|
|
<?php
|
|
|
|
// {{{ICINGA_LICENSE_HEADER}}}
|
|
|
|
// {{{ICINGA_LICENSE_HEADER}}}
|
|
|
|
|
|
|
|
namespace Icinga\Web\Form\Validator;
|
|
|
|
|
2014-08-27 15:51:49 +02:00
|
|
|
use Zend_Validate_Abstract;
|
2013-10-16 18:50:19 +02:00
|
|
|
|
2014-02-21 14:07:32 +01:00
|
|
|
class TriStateValidator extends Zend_Validate_Abstract
|
|
|
|
{
|
2013-10-16 18:50:19 +02:00
|
|
|
/**
|
|
|
|
* @var null
|
|
|
|
*/
|
|
|
|
private $validPattern = null;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Validate the input value and set the value of @see validPattern if the input machtes
|
|
|
|
* a state description like '0', '1' or 'unchanged'
|
|
|
|
*
|
|
|
|
* @param string $value The value to validate
|
|
|
|
* @param null $context The form context (ignored)
|
|
|
|
*
|
|
|
|
* @return bool True when the input is valid, otherwise false
|
|
|
|
*
|
|
|
|
* @see Zend_Validate_Abstract::isValid()
|
|
|
|
*/
|
|
|
|
public function isValid($value, $context = null)
|
|
|
|
{
|
|
|
|
if (!is_string($value) && !is_int($value)) {
|
|
|
|
$this->error('INVALID_TYPE');
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (is_string($value)) {
|
|
|
|
$value = intval($value);
|
|
|
|
if ($value === 'unchanged') {
|
|
|
|
$this->validPattern = null;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (is_int($value)) {
|
|
|
|
if ($value === 1 || $value === 0) {
|
|
|
|
$this->validPattern = $value;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getValidPattern()
|
|
|
|
{
|
|
|
|
return $this->validPattern;
|
|
|
|
}
|
2014-02-21 14:07:32 +01:00
|
|
|
}
|