Seditio Source
Root |
./othercms/phpBB3/vendor/s9e/text-formatter/src/Parser/AttributeFilters/NumericFilter.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\Parser\AttributeFilters;

use
s9e\TextFormatter\Parser\Logger;

class
NumericFilter
{
   
/**
    * Filter a float value
    *
    * @param  string $attrValue Original value
    * @return mixed             Filtered value, or FALSE if invalid
    */
   
public static function filterFloat($attrValue)
    {
        return
filter_var($attrValue, FILTER_VALIDATE_FLOAT);
    }

   
/**
    * Filter an int value
    *
    * @param  string $attrValue Original value
    * @return mixed             Filtered value, or FALSE if invalid
    */
   
public static function filterInt($attrValue)
    {
        return
filter_var($attrValue, FILTER_VALIDATE_INT);
    }

   
/**
    * Filter a range value
    *
    * @param  string  $attrValue Original value
    * @param  integer $min       Minimum value
    * @param  integer $max       Maximum value
    * @param  Logger  $logger    Parser's Logger instance
    * @return mixed              Filtered value, or FALSE if invalid
    */
   
public static function filterRange($attrValue, $min, $max, Logger $logger = null)
    {
       
$attrValue = filter_var($attrValue, FILTER_VALIDATE_INT);

        if (
$attrValue === false)
        {
            return
false;
        }

        if (
$attrValue < $min)
        {
            if (isset(
$logger))
            {
               
$logger->warn(
                   
'Value outside of range, adjusted up to min value',
                    [
                       
'attrValue' => $attrValue,
                       
'min'       => $min,
                       
'max'       => $max
                   
]
                );
            }

            return
$min;
        }

        if (
$attrValue > $max)
        {
            if (isset(
$logger))
            {
               
$logger->warn(
                   
'Value outside of range, adjusted down to max value',
                    [
                       
'attrValue' => $attrValue,
                       
'min'       => $min,
                       
'max'       => $max
                   
]
                );
            }

            return
$max;
        }

        return
$attrValue;
    }

   
/**
    * Filter a uint value
    *
    * @param  string $attrValue Original value
    * @return mixed             Filtered value, or FALSE if invalid
    */
   
public static function filterUint($attrValue)
    {
        return
filter_var($attrValue, FILTER_VALIDATE_INT, [
           
'options' => ['min_range' => 0]
        ]);
    }
}