protected function _process() { $return = array(); try { $fileInfo = reset($_FILES); if (empty($fileInfo)) { throw new CM_Exception('Invalid file upload'); } if (isset($fileInfo['error']) && $fileInfo['error'] !== UPLOAD_ERR_OK) { throw new CM_Exception('File upload error: ' . self::$_uploadErrors[$fileInfo['error']]); } $fileTmp = new CM_File($fileInfo['tmp_name']); if ($fileTmp->getSize() > self::MAX_FILE_SIZE) { throw new CM_Exception_FormFieldValidation(new CM_I18n_Phrase('File too big')); } $file = CM_File_UserContent_Temp::create($fileInfo['name'], $fileTmp->read()); $fileTmp->delete(); $query = $this->_request->getQuery(); $preview = null; if (isset($query['field'])) { $field = CM_FormField_File::factory($query['field'], ['name' => 'file']); $field->validateFile($file); $preview = $this->getRender()->fetchViewTemplate($field, 'preview', array('file' => $file)); } $return['success'] = array('id' => $file->getUniqid(), 'preview' => $preview); } catch (CM_Exception_FormFieldValidation $ex) { $return['error'] = array('type' => get_class($ex), 'msg' => $ex->getMessagePublic($this->getRender())); } $this->_setContent(json_encode($return, JSON_HEX_TAG)); // JSON decoding in IE-iframe needs JSON_HEX_TAG }
public function validateFile(CM_File $file) { parent::validateFile($file); try { $image = new CM_File_Image($file); $image->validateImage(); } catch (CM_Exception $e) { throw new CM_Exception_FormFieldValidation('Invalid image'); } }
public function validateFile(CM_File $file) { parent::validateFile($file); try { $image = new CM_Image_Image($file->read()); $image->validate(); } catch (CM_Exception $e) { throw new CM_Exception_FormFieldValidation(new CM_I18n_Phrase('Invalid image')); } }
public function validateFile(CM_File $file) { parent::validateFile($file); try { $image = new CM_Image_Image($file->read()); $image->validate(); } catch (CM_Exception $e) { throw new CM_Exception_FormFieldValidation(new CM_I18n_Phrase('Invalid image')); } $minSize = $this->_getMinSize($image); $maxSize = $this->_getMaxSize($image); if ($image->getWidth() < $minSize->getX()) { throw new CM_Exception_FormFieldValidation(new CM_I18n_Phrase('Image is too small (min width {$minWidth}px).', ['minWidth' => $minSize->getX()])); } if ($image->getHeight() < $minSize->getY()) { throw new CM_Exception_FormFieldValidation(new CM_I18n_Phrase('Image is too small (min height {$minHeight}px).', ['minHeight' => $minSize->getY()])); } if ($image->getWidth() > $maxSize->getX()) { throw new CM_Exception_FormFieldValidation(new CM_I18n_Phrase('Maximum resolution exceeded (max width {$maxWidth}px).', ['maxWidth' => $maxSize->getX()])); } if ($image->getHeight() > $maxSize->getY()) { throw new CM_Exception_FormFieldValidation(new CM_I18n_Phrase('Maximum resolution exceeded (max height {$maxHeight}px).', ['maxHeight' => $maxSize->getY()])); } }