Added missing wildcard support
authorMarcel Werk <burntime@woltlab.com>
Fri, 20 Sep 2013 20:22:51 +0000 (22:22 +0200)
committerMarcel Werk <burntime@woltlab.com>
Fri, 20 Sep 2013 20:22:51 +0000 (22:22 +0200)
wcfsetup/install/files/lib/system/upload/DefaultUploadFileValidationStrategy.class.php

index f61682b0db7ff76a1a710c3c9e40cc35ac6d51bf..037e92d7f4379789c21a17b8da5a4c6ea1a41b3c 100644 (file)
@@ -24,6 +24,12 @@ class DefaultUploadFileValidationStrategy implements IUploadFileValidationStrate
         */
        protected $fileExtensions = array();
        
+       /**
+        * regex for validation of allowed file extension
+        * @var string
+        */
+       protected $fileExtensionRegex = '';
+       
        /**
         * Creates a new DefaultUploadFileValidationStrategy object.
         * 
@@ -33,6 +39,7 @@ class DefaultUploadFileValidationStrategy implements IUploadFileValidationStrate
        public function __construct($maxFilesize, array $fileExtensions) {
                $this->maxFilesize = $maxFilesize;
                $this->fileExtensions = $fileExtensions;
+               $this->fileExtensionRegex = '/^('.str_replace("\n", "|", str_replace('\*', '.*', preg_quote(implode("\n", $fileExtensions), '/'))).')$/i';
        }
        
        /**
@@ -49,7 +56,7 @@ class DefaultUploadFileValidationStrategy implements IUploadFileValidationStrate
                        return false;
                }
                
-               if (!in_array($uploadFile->getFileExtension(), $this->fileExtensions)) {
+               if (!preg_match($this->fileExtensionRegex, $uploadFile->getFileExtension())) {
                        $uploadFile->setValidationErrorType('invalidExtension');
                        return false;
                }