Seditio Source
Root |
./othercms/phpBB3/vendor/s9e/text-formatter/src/Configurator/Items/AttributeFilters/RangeFilter.php
<?php

/**
* @package   s9e\TextFormatter
* @copyright Copyright (c) 2010-2021 The s9e authors
* @license   http://www.opensource.org/licenses/mit-license.php The MIT License
*/
namespace s9e\TextFormatter\Configurator\Items\AttributeFilters;

use
InvalidArgumentException;
use
RuntimeException;
use
s9e\TextFormatter\Configurator\Items\AttributeFilter;

class
RangeFilter extends AttributeFilter
{
   
/**
    * Constructor
    *
    * @param  integer $min Minimum value for this range
    * @param  integer $max Maximum value for this range
    */
   
public function __construct($min = null, $max = null)
    {
       
parent::__construct('s9e\\TextFormatter\\Parser\\AttributeFilters\\NumericFilter::filterRange');

       
$this->resetParameters();
       
$this->addParameterByName('attrValue');
       
$this->addParameterByName('min');
       
$this->addParameterByName('max');
       
$this->addParameterByName('logger');
       
$this->setJS('NumericFilter.filterRange');
       
$this->markAsSafeAsURL();
       
$this->markAsSafeInCSS();
       
$this->markAsSafeInJS();

        if (isset(
$min))
        {
           
$this->setRange($min, $max);
        }
    }

   
/**
    * {@inheritdoc}
    */
   
public function asConfig()
    {
        if (!isset(
$this->vars['min']))
        {
            throw new
RuntimeException("Range filter is missing a 'min' value");
        }

        if (!isset(
$this->vars['max']))
        {
            throw new
RuntimeException("Range filter is missing a 'max' value");
        }

        return
parent::asConfig();
    }

   
/**
    * Set the allowed range of values
    *
    * @param  integer $min Minimum value
    * @param  integer $max Maximum value
    * @return void
    */
   
public function setRange($min, $max)
    {
       
$min = filter_var($min, FILTER_VALIDATE_INT);
       
$max = filter_var($max, FILTER_VALIDATE_INT);

        if (
$min === false)
        {
            throw new
InvalidArgumentException('Argument 1 passed to ' . __METHOD__ . ' must be an integer');
        }

        if (
$max === false)
        {
            throw new
InvalidArgumentException('Argument 2 passed to ' . __METHOD__ . ' must be an integer');
        }

        if (
$min > $max)
        {
            throw new
InvalidArgumentException('Invalid range: min (' . $min . ') > max (' . $max . ')');
        }

       
$this->vars['min'] = $min;
       
$this->vars['max'] = $max;
    }
}