Beispiel #1
0
 /**
  * Validate file by attribute validate rules
  * Return array of errors
  *
  * @param array $value
  * @return string[]
  */
 protected function _validateByRules($value)
 {
     $label = $value['name'];
     $rules = $this->getAttribute()->getValidationRules();
     $extension = pathinfo($value['name'], PATHINFO_EXTENSION);
     if (!empty($rules['file_extensions'])) {
         $extensions = explode(',', $rules['file_extensions']);
         $extensions = array_map('trim', $extensions);
         if (!in_array($extension, $extensions)) {
             return array(__('"%1" is not a valid file extension.', $extension));
         }
     }
     /**
      * Check protected file extension
      */
     if (!$this->_fileValidator->isValid($extension)) {
         return $this->_fileValidator->getMessages();
     }
     if (!$this->_isUploadedFile($value['tmp_name'])) {
         return array(__('"%1" is not a valid file.', $label));
     }
     if (!empty($rules['max_file_size'])) {
         $size = $value['size'];
         if ($rules['max_file_size'] < $size) {
             return array(__('"%1" exceeds the allowed file size.', $label));
         }
     }
     return array();
 }
Beispiel #2
0
 /**
  * Check protected/allowed extension
  *
  * @param string $extension
  * @return boolean
  */
 public function checkAllowedExtension($extension)
 {
     //validate with protected file types
     if (!$this->_validator->isValid($extension)) {
         return false;
     }
     return parent::checkAllowedExtension($extension);
 }
Beispiel #3
0
 public function testIsValid()
 {
     $this->assertTrue($this->_model->isValid('html'));
     $this->assertTrue($this->_model->isValid('jpg'));
     $this->assertFalse($this->_model->isValid('php'));
     $this->assertFalse($this->_model->isValid('jar'));
     $this->assertFalse($this->_model->isValid('exe'));
 }