diff --git a/_config/mimevalidator.yml b/_config/mimevalidator.yml new file mode 100644 index 0000000..75e2e22 --- /dev/null +++ b/_config/mimevalidator.yml @@ -0,0 +1,6 @@ +--- +Name: mimeuploadvalidator-userforms +--- +SilverStripe\Core\Injector\Injector: + SilverStripe\Assets\Upload_Validator.userforms: + class: SilverStripe\MimeValidator\MimeUploadValidator diff --git a/code/Model/EditableFormField/EditableFileField.php b/code/Model/EditableFormField/EditableFileField.php index d4810f1..49c5fbf 100755 --- a/code/Model/EditableFormField/EditableFileField.php +++ b/code/Model/EditableFormField/EditableFileField.php @@ -4,9 +4,11 @@ namespace SilverStripe\UserForms\Model\EditableFormField; use SilverStripe\Assets\File; use SilverStripe\Assets\Folder; +use SilverStripe\Assets\Upload_Validator; use SilverStripe\Core\Config\Config; use SilverStripe\Core\Convert; use SilverStripe\Forms\FieldList; +use SilverStripe\Core\Injector\Injector; use SilverStripe\Forms\FileField; use SilverStripe\Forms\LiteralField; use SilverStripe\Forms\NumericField; @@ -185,18 +187,21 @@ class EditableFileField extends EditableFormField $result = parent::validate(); $max = static::get_php_max_file_size(); - if ($this->MaxFileSizeMB * 1024 > $max) { + if ($this->MaxFileSizeMB * 1024 * 1024 > $max) { $result->addError("Your max file size limit can't be larger than the server's limit of {$this->getPHPMaxFileSizeMB()}."); } return $result; } + + public function getFormField() { $field = FileField::create($this->Name, $this->Title ?: false) ->setFieldHolderTemplate(EditableFormField::class . '_holder') - ->setTemplate(__CLASS__); + ->setTemplate(__CLASS__) + ->setValidator(Injector::inst()->get(Upload_Validator::class . '.userforms')); $field->setFieldHolderTemplate(EditableFormField::class . '_holder') ->setTemplate(__CLASS__); diff --git a/composer.json b/composer.json index 1554126..c3db16a 100644 --- a/composer.json +++ b/composer.json @@ -34,7 +34,8 @@ "silverstripe/cms": "^4.6", "symbiote/silverstripe-gridfieldextensions": "^3.1", "silverstripe/segment-field": "^2.0", - "silverstripe/versioned": "^1.0" + "silverstripe/versioned": "^1.0", + "silverstripe/mimevalidator": "^2.0" }, "require-dev": { "phpunit/phpunit": "^5.7",