Exemple #1
0
 /**
  * Performs the count check
  *
  * @param \Cake\Datasource\EntityInterface $entity The entity from where to extract the fields.
  * @param array $options Options passed to the check.
  * @return bool True if successful, else false.
  */
 public function __invoke(EntityInterface $entity, array $options)
 {
     $value = $entity->{$this->_field};
     if (!is_array($value) && !$value instanceof Countable) {
         return false;
     }
     return Validation::comparison(count($value), $options['operator'], $options['count']);
 }
Exemple #2
0
 public static function height($check, $operator = null, $check2 = null)
 {
     if (is_array($check) && isset($check['tmp_name'])) {
         $check = $check['tmp_name'];
     }
     $imagine = new Imagine();
     $image = $imagine->open($check);
     $size = $image->getSize();
     $height = $size->getHeight();
     return \Cake\Validation\Validation::comparison($height, $operator, $check2);
 }
 /**
  * testComparisonAsArray method
  *
  * @return void
  */
 public function testComparisonAsArray()
 {
     $this->assertTrue(Validation::comparison(['check1' => 7, 'operator' => 'is greater', 'check2' => 6]));
     $this->assertTrue(Validation::comparison(['check1' => 7, 'operator' => '>', 'check2' => 6]));
     $this->assertTrue(Validation::comparison(['check1' => 6, 'operator' => 'is less', 'check2' => 7]));
     $this->assertTrue(Validation::comparison(['check1' => 6, 'operator' => '<', 'check2' => 7]));
     $this->assertTrue(Validation::comparison(['check1' => 7, 'operator' => 'greater or equal', 'check2' => 7]));
     $this->assertTrue(Validation::comparison(['check1' => 7, 'operator' => '>=', 'check2' => 7]));
     $this->assertTrue(Validation::comparison(['check1' => 7, 'operator' => 'greater or equal', 'check2' => 6]));
     $this->assertTrue(Validation::comparison(['check1' => 7, 'operator' => '>=', 'check2' => 6]));
     $this->assertTrue(Validation::comparison(['check1' => 6, 'operator' => 'less or equal', 'check2' => 7]));
     $this->assertTrue(Validation::comparison(['check1' => 6, 'operator' => '<=', 'check2' => 7]));
     $this->assertTrue(Validation::comparison(['check1' => 7, 'operator' => 'equal to', 'check2' => 7]));
     $this->assertTrue(Validation::comparison(['check1' => 7, 'operator' => '==', 'check2' => 7]));
     $this->assertTrue(Validation::comparison(['check1' => 7, 'operator' => 'not equal', 'check2' => 6]));
     $this->assertTrue(Validation::comparison(['check1' => 7, 'operator' => '!=', 'check2' => 6]));
     $this->assertFalse(Validation::comparison(['check1' => 6, 'operator' => 'is greater', 'check2' => 7]));
     $this->assertFalse(Validation::comparison(['check1' => 6, 'operator' => '>', 'check2' => 7]));
     $this->assertFalse(Validation::comparison(['check1' => 7, 'operator' => 'is less', 'check2' => 6]));
     $this->assertFalse(Validation::comparison(['check1' => 7, 'operator' => '<', 'check2' => 6]));
     $this->assertFalse(Validation::comparison(['check1' => 6, 'operator' => 'greater or equal', 'check2' => 7]));
     $this->assertFalse(Validation::comparison(['check1' => 6, 'operator' => '>=', 'check2' => 7]));
     $this->assertFalse(Validation::comparison(['check1' => 6, 'operator' => 'greater or equal', 'check2' => 7]));
     $this->assertFalse(Validation::comparison(['check1' => 6, 'operator' => '>=', 'check2' => 7]));
     $this->assertFalse(Validation::comparison(['check1' => 7, 'operator' => 'less or equal', 'check2' => 6]));
     $this->assertFalse(Validation::comparison(['check1' => 7, 'operator' => '<=', 'check2' => 6]));
     $this->assertFalse(Validation::comparison(['check1' => 7, 'operator' => 'equal to', 'check2' => 6]));
     $this->assertFalse(Validation::comparison(['check1' => 7, 'operator' => '==', 'check2' => 6]));
     $this->assertFalse(Validation::comparison(['check1' => 7, 'operator' => 'not equal', 'check2' => 7]));
     $this->assertFalse(Validation::comparison(['check1' => 7, 'operator' => '!=', 'check2' => 7]));
 }
Exemple #4
0
 /**
  * Test comparison casting values before comparisons.
  *
  * @return void
  */
 public function testComparisonTypeChecks()
 {
     $this->assertFalse(Validation::comparison('\\x028', '>=', 1), 'hexish encoding fails');
     $this->assertFalse(Validation::comparison('0b010', '>=', 1), 'binary string data fails');
     $this->assertFalse(Validation::comparison('0x01', '>=', 1), 'hex string data fails');
     $this->assertFalse(Validation::comparison('0x1', '>=', 1), 'hex string data fails');
     $this->assertFalse(Validation::comparison('\\x028', '>=', 1.5), 'hexish encoding fails');
     $this->assertFalse(Validation::comparison('0b010', '>=', 1.5), 'binary string data fails');
     $this->assertFalse(Validation::comparison('0x02', '>=', 1.5), 'hex string data fails');
 }
 /**
  * Image size validation method
  *
  * @param mixed $check
  * @param array $options is an array with key width or height and a value of array
  *    with two options, operator and value. For example:
  *    array('height' => array('==', 100)) will only be true if the image has a
  *    height of exactly 100px. See the CakePHP core class and method
  *    Validation::comparison for all operators.
  * @return boolean true
  * @see Validation::comparison()
  * @throws \InvalidArgumentException
  */
 public function validateImageSize($check, array $options = [])
 {
     if (!isset($options['height']) && !isset($options['width'])) {
         throw new \InvalidArgumentException('Missing image size validation options! You must provide a hight and / or width.');
     }
     if (is_string($check)) {
         $imageFile = $check;
     } else {
         $check = array_values($check);
         $check = $check[0];
         if (is_array($check) && isset($check['tmp_name'])) {
             $imageFile = $check['tmp_name'];
         } else {
             $imageFile = $check;
         }
     }
     $imageSizes = $this->getImageSize($imageFile);
     if (isset($options['height'])) {
         $height = Validation::comparison($imageSizes[1], $options['height'][0], $options['height'][1]);
     } else {
         $height = true;
     }
     if (isset($options['width'])) {
         $width = Validation::comparison($imageSizes[0], $options['width'][0], $options['width'][1]);
     } else {
         $width = true;
     }
     if ($height === false || $width === false) {
         return false;
     }
     return true;
 }
 /**
  * Validates the image size.
  *
  * @param array $value
  * @param array $options
  * @return boolean
  */
 public function imageSize($value, $options)
 {
     if (!isset($options['height']) && !isset($options['width'])) {
         throw new \InvalidArgumentException(__d('file_storage', 'Invalid image size validation parameters!'));
     }
     list($width, $height) = getimagesize($value['tmp_name']);
     if (isset($options['height'])) {
         $validHeight = Validation::comparison($height, $options['height'][1], $options['height'][0]);
     }
     if (isset($options['width'])) {
         $validWidth = Validation::comparison($width, $options['width'][1], $options['width'][0]);
     }
     if (isset($validHeight) && isset($validWidth)) {
         return $validHeight && $validWidth;
     }
     if (isset($validHeight)) {
         return $validHeight;
     }
     if (isset($validWidth)) {
         return $validWidth;
     }
     throw new \InvalidArgumentException('The 2nd argument is missing one or more configuration keyes.');
 }