Cviebrock\ImageValidator\ImageValidator::checkDimension PHP Method

checkDimension() protected method

Parse the dimension rule and check if the dimension passes the rule.
protected checkDimension ( string $rule, integer $dimension ) : array
$rule string
$dimension integer
return array
    protected function checkDimension($rule, $dimension = 0)
    {
        $dimension = intval($dimension);
        if ($rule == '*') {
            $message = $this->translator->trans('image-validator::validation.anysize');
            $pass = true;
        } else {
            if (preg_match('/^(\\d+)\\-(\\d+)$/', $rule, $matches)) {
                $size1 = intval($matches[1]);
                $size2 = intval($matches[2]);
                $message = $this->translator->trans('image-validator::validation.between', compact('size1', 'size2'));
                $pass = $dimension >= $size1 && $dimension <= $size2;
            } else {
                if (preg_match('/^([<=>]*)(\\d+)$/', $rule, $matches)) {
                    $size = intval($matches[2]);
                    switch ($matches[1]) {
                        case '>':
                            $message = $this->translator->trans('image-validator::validation.greaterthan', compact('size'));
                            $pass = $dimension > $size;
                            break;
                        case '>=':
                            $message = $this->translator->trans('image-validator::validation.greaterthanorequal', compact('size'));
                            $pass = $dimension >= $size;
                            break;
                        case '<':
                            $message = $this->translator->trans('image-validator::validation.lessthan', compact('size'));
                            $pass = $dimension < $size;
                            break;
                        case '<=':
                            $message = $this->translator->trans('image-validator::validation.lessthanorequal', compact('size'));
                            $pass = $dimension <= $size;
                            break;
                        case '=':
                        case '':
                            $message = $this->translator->trans('image-validator::validation.equal', compact('size'));
                            $pass = $dimension == $size;
                            break;
                        default:
                            throw new \RuntimeException('Unknown image size validation rule: ' . $rule);
                    }
                } else {
                    throw new \RuntimeException('Unknown image size validation rule: ' . $rule);
                }
            }
        }
        return compact('message', 'pass');
    }