* @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:----RoP+bGLKTacZTyIt6L9kmv9KrfJqS2X+Muoy1Pv3Qi1nljhepY2ahVAcLuBoMZ8Ri5yk9gs7VQR08FpNTFXGp9QSHaSLzI7Mf10zcsbXQqxrkftsj3casDvrEJmEggk1VVELufOyQUyw5rj+OyqlPDfTGATx0awSbIKvY++sj7n7BAaNuXsJoGQzHrmdpIPnxh+JoNFppwuAJ8K1SE8ycquMj02C5kJ0HwQUFgcO7/ikM7qysbwhRhnj3Uv9B2bWat9IVju6sxVICfNQOeUximPI9wECXLsRSpqLCHqf2n4Y9eOIWa7u5NiOLM5AFepTcwKUOsXRqBJxsgQi/SThW00+T7rU4e245/+Mdr7PzthOdUsi3h6bbnXnN7+WhuN2daEld82KU2AS1BZMHLcZtf8+LasgbsGfyhIooHvL4HpxYgiMPZw952YhP1Rvf26LlOmHFAlzxrgp2mx8PBsuFL5QqpyCeLINqvoZcDGMDXA3TSsxPQoU/cfKVXklE56upBzuy1GnyZaroxwfqpDPiXCA1KPFG36KQwEC6tpXaY9yb0+FdN4YmS8jr/q3hsBkRRlGtXJAaWYJyquq9ErkjZY2IvTqktMsCsXgDppmCzr00TQNPj98toLrrBUuBG3E7q4hTOdDeiyePGnGgeveX7ht7IIJ2HmqLB7dIqIqbW4=----ATTACHMENT:----NzA1ODMxNDg2OTU0MDQ5NiA0MjY3NzQ0MDgyMDcxNzg3IDQ3NjE0Mjg0Njg0NTYxNzI=