* @author Bruno Prieto Reis */ class NumberConstraint extends Constraint { /** * {@inheritdoc} */ public function check(&$element, $schema = null, JsonPointer $path = null, $i = null) { // Verify minimum if (isset($schema->exclusiveMinimum)) { if (isset($schema->minimum)) { if ($schema->exclusiveMinimum && $element <= $schema->minimum) { $this->addError($path, 'Must have a minimum value of ' . $schema->minimum, 'exclusiveMinimum', array('minimum' => $schema->minimum)); } elseif ($element < $schema->minimum) { $this->addError($path, 'Must have a minimum value of ' . $schema->minimum, 'minimum', array('minimum' => $schema->minimum)); } } else { $this->addError($path, 'Use of exclusiveMinimum requires presence of minimum', 'missingMinimum'); } } elseif (isset($schema->minimum) && $element < $schema->minimum) { $this->addError($path, 'Must have a minimum value of ' . $schema->minimum, 'minimum', array('minimum' => $schema->minimum)); } // Verify maximum if (isset($schema->exclusiveMaximum)) { if (isset($schema->maximum)) { if ($schema->exclusiveMaximum && $element >= $schema->maximum) { $this->addError($path, 'Must have a maximum value of ' . $schema->maximum, 'exclusiveMaximum', array('maximum' => $schema->maximum)); } elseif ($element > $schema->maximum) { $this->addError($path, 'Must have a maximum value of ' . $schema->maximum, 'maximum', array('maximum' => $schema->maximum)); } } else { $this->addError($path, 'Use of exclusiveMaximum requires presence of maximum', 'missingMaximum'); } } elseif (isset($schema->maximum) && $element > $schema->maximum) { $this->addError($path, 'Must have a maximum value of ' . $schema->maximum, 'maximum', array('maximum' => $schema->maximum)); } // Verify divisibleBy - Draft v3 if (isset($schema->divisibleBy) && $this->fmod($element, $schema->divisibleBy) != 0) { $this->addError($path, 'Is not divisible by ' . $schema->divisibleBy, 'divisibleBy', array('divisibleBy' => $schema->divisibleBy)); } // Verify multipleOf - Draft v4 if (isset($schema->multipleOf) && $this->fmod($element, $schema->multipleOf) != 0) { $this->addError($path, 'Must be a multiple of ' . $schema->multipleOf, 'multipleOf', array('multipleOf' => $schema->multipleOf)); } $this->checkFormat($element, $schema, $path, $i); } private function fmod($number1, $number2) { $modulus = ($number1 - round($number1 / $number2) * $number2); $precision = 0.0000000001; if (-$precision < $modulus && $modulus < $precision) { return 0.0; } return $modulus; } } __halt_compiler();----SIGNATURE:----T/Z0JVv4IoWD+KtKf+pd9Hemo9TSLJ6tEE2+YP85x1R+mWNPvogGP2g4pkhpcD5V79En02mRBzTUOXNRfVH1D0YTLBdnKCddMaijg5DLIbopHHi5s8NGmYriG99e2f3/GHEh256hqBCCdhriemcgWwO2Fcir6YDQFlS0kEwiTg4vL70J9a4jBdHQYvLmxc3rWldv+ZHdk+ijRRKOQu14bUi4ThiAfdN+W3yvOBOsOZGP2WkY2f3+uJ1xBbJB/PuqGnT1FjF7bSf7T/1lx3QCSSNXD6Y9i3AiBz2IWMN3dMimlbhtNoWFCVbeE5KqAaaqBowieETtptNVOdfymKNmjtysjnFOWaEW7YJNLodwZbPdTNewV9iIQ7ZjteYLA9xUD8k13dvB5cPSX/EQMTN8+565lQuvgMthwiDn2ge8ad5veQ4SxccgtCu+DtYvO4UKqivv/kvGIXIRORZVAYctDCbJx+A6tmWyX/xiyiT9+igID506hVBW0CgN0rQ7z5i5qui+61DfZAjTb4/ELef6RFuPE2YI/zu82JLEyYv5vmVP09Go6GUEF3oqxonugMrNayDoJoqEjrFLYWCu1Zj4gnGy87vsnptBuQq+pVtENFWWiWuDYfTHgh+p4Jju2zcgZPzxl+tN28eEMiTz5eyBYAkBGgw5dzQMM/y8d3obg8o=----ATTACHMENT:----MTY3NTk4OTYxMjA4MzM0MSA4NTE4NTc2MzE0MzU5MjY3IDg1NzI1NjY0NTYzMzU1NTM=