diff --git a/include/class.osticket.php b/include/class.osticket.php index 86d206f212d6450db9755ac4f5c77926ff2a53c8..be9cc9a2a1f9136060dd7bf875f75abbd97a0834 100644 --- a/include/class.osticket.php +++ b/include/class.osticket.php @@ -136,14 +136,19 @@ class osTicket { $errors=0; foreach($files as &$file) { - if(!$this->isFileTypeAllowed($file)) - $file['error']='Invalid file type for '.$file['name']; + //skip no file upload "error" - why PHP calls it an error is beyond me. + if($file['error'] && $file['error']==UPLOAD_ERR_NO_FILE) continue; + + if($file['error']) //PHP defined error! + $file['error'] = 'File upload error #'.$file['error']; + elseif(!$file['tmp_name'] || !is_uploaded_file($file['tmp_name'])) + $file['error'] = 'Invalid or bad upload POST'; + elseif(!$this->isFileTypeAllowed($file)) + $file['error'] = 'Invalid file type for '.$file['name']; elseif($file['size']>$this->getConfig()->getMaxFileSize()) - $file['error']=sprintf('File (%s) is too big. Maximum of %s allowed', + $file['error'] = sprintf('File (%s) is too big. Maximum of %s allowed', $file['name'], Format::file_size($this->getConfig()->getMaxFileSize())); - elseif(!$file['error'] && !is_uploaded_file($file['tmp_name'])) - $file['error']='Invalid or bad upload POST'; - + if($file['error']) $errors++; }