diff --git a/extension/qfq/qfq/AbstractBuildForm.php b/extension/qfq/qfq/AbstractBuildForm.php index f02f0d5f0b352e913cb1b1b1d7683ae894ed297f..b022fa7b48339c94c49bfadcc2b501511cb5592e 100644 --- a/extension/qfq/qfq/AbstractBuildForm.php +++ b/extension/qfq/qfq/AbstractBuildForm.php @@ -2958,6 +2958,17 @@ abstract class AbstractBuildForm { $arr[FE_FILE_MAX_FILE_SIZE] = empty($formElement[FE_FILE_MAX_FILE_SIZE]) ? UPLOAD_DEFAULT_MAX_SIZE : $formElement[FE_FILE_MAX_FILE_SIZE]; $arr[FE_FILE_MAX_FILE_SIZE] = Support::returnBytes($arr[FE_FILE_MAX_FILE_SIZE]); + // Check Safari Bug #5578: in case Safari (Mac OS X or iOS) loads an 'upload element' with more than one filetype, fall back to 'no preselection'. + if (strpos($formElement[FE_FILE_MIME_TYPE_ACCEPT], ',') !== false) { + $ua = $this->store->getVar('HTTP_USER_AGENT', STORE_CLIENT, SANITIZE_ALLOW_ALNUMX); + // Look for " Version/11.0 Mobile/15A5370a Safari/" or " Version/9.0.2 Safari/" + $rc = preg_match(' Version\/.*Safari\/', $ua, $matches); + // But not like " Version/4.0 Chrome/52.0.2743.98 Safari/" + if ($rc == 1 && false === strpos($matches[0], ' Chrome/')) { + $formElement[FE_FILE_MIME_TYPE_ACCEPT] = ''; + } + } + if ((Support::returnBytes(ini_get('post_max_size')) < $arr[FE_FILE_MAX_FILE_SIZE]) || (Support::returnBytes(ini_get('upload_max_filesize')) < $arr[FE_FILE_MAX_FILE_SIZE]) ) {