[!!!][TASK] Drop TYPO3_CONF_VARS['SYS]['form_enctype'] 14/41314/4
authorChristian Kuhn <lolli@schwarzbu.ch>
Wed, 15 Jul 2015 16:10:46 +0000 (18:10 +0200)
committerWouter Wolters <typo3@wouterwolters.nl>
Wed, 15 Jul 2015 18:15:17 +0000 (20:15 +0200)
The ancient form_enctype setting was a fallback from the old days
when some hosters decided uploading files in PHP is a bad idea.
The fallback was thought to still allow casual data transfer.
This is dropped now, the setting no longer used and removed from
configuration.

Resolves: #68178
Releases: master
Change-Id: If16db4de44c0654b18efc5b1a9f0e3f46e079687
Reviewed-on: http://review.typo3.org/41314
Reviewed-by: Benjamin Mack <benni@typo3.org>
Tested-by: Benjamin Mack <benni@typo3.org>
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
18 files changed:
typo3/sysext/backend/Classes/Controller/EditDocumentController.php
typo3/sysext/backend/Classes/Controller/File/FileUploadController.php
typo3/sysext/backend/Classes/Controller/File/ReplaceFileController.php
typo3/sysext/backend/Classes/Controller/PageLayoutController.php
typo3/sysext/backend/Classes/Controller/Wizard/RteController.php
typo3/sysext/backend/Classes/Module/ModuleSettings.php
typo3/sysext/compatibility6/Classes/ContentObject/FormContentObject.php
typo3/sysext/core/Classes/TypoScript/ConfigurationForm.php
typo3/sysext/core/Configuration/DefaultConfiguration.php
typo3/sysext/core/Documentation/Changelog/master/Breaking-68178-DropFormEnctype.rst [new file with mode: 0644]
typo3/sysext/dbal/Classes/Controller/ModuleController.php
typo3/sysext/feedit/Classes/FrontendEditPanel.php
typo3/sysext/form/Classes/Domain/Model/Attribute/EnctypeAttribute.php
typo3/sysext/impexp/Classes/Controller/ImportExportController.php
typo3/sysext/install/Classes/Service/SilentConfigurationUpgradeService.php
typo3/sysext/install/Classes/SystemEnvironment/Check.php
typo3/sysext/recordlist/Classes/Browser/ElementBrowser.php
typo3/sysext/tstemplate/Classes/Controller/TypoScriptTemplateModuleController.php

index 5ce9d8a..e2695c4 100644 (file)
@@ -683,7 +683,7 @@ class EditDocumentController {
                $pageRenderer->loadPrototype();
                $this->doc->backPath = $GLOBALS['BACK_PATH'];
                $this->doc->setModuleTemplate('EXT:backend/Resources/Private/Templates/alt_doc.html');
-               $this->doc->form = '<form action="' . htmlspecialchars($this->R_URI) . '" method="post" enctype="' . $GLOBALS['TYPO3_CONF_VARS']['SYS']['form_enctype'] . '" name="editform" onsubmit="document.editform._scrollPosition.value=(document.documentElement.scrollTop || document.body.scrollTop); return TBE_EDITOR.checkSubmit(1);">';
+               $this->doc->form = '<form action="' . htmlspecialchars($this->R_URI) . '" method="post" enctype="multipart/form-data" name="editform" onsubmit="document.editform._scrollPosition.value=(document.documentElement.scrollTop || document.body.scrollTop); return TBE_EDITOR.checkSubmit(1);">';
                // override the default jumpToUrl
                $this->doc->JScodeArray['jumpToUrl'] = '
                        function jumpToUrl(URL,formEl) {
index 12a6a24..e25604e 100644 (file)
@@ -108,7 +108,7 @@ class FileUploadController {
                $this->doc = GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Template\DocumentTemplate::class);
                $this->doc->setModuleTemplate('EXT:backend/Resources/Private/Templates/file_upload.html');
                $this->doc->backPath = $GLOBALS['BACK_PATH'];
-               $this->doc->form = '<form action="' . htmlspecialchars(BackendUtility::getModuleUrl('tce_file')) . '" method="post" name="editform" enctype="' . $GLOBALS['TYPO3_CONF_VARS']['SYS']['form_enctype'] . '">';
+               $this->doc->form = '<form action="' . htmlspecialchars(BackendUtility::getModuleUrl('tce_file')) . '" method="post" name="editform" enctype="multipart/form-data">';
        }
 
        /**
index 7ba5017..b50d22a 100644 (file)
@@ -142,7 +142,7 @@ class ReplaceFileController {
                $pageContent .= $this->doc->spacer(5);
                $pageContent .= $this->doc->divider(5);
 
-               $code = '<form action="' . htmlspecialchars(BackendUtility::getModuleUrl('tce_file')) . '" role="form" method="post" name="editform" enctype="' . $GLOBALS['TYPO3_CONF_VARS']['SYS']['form_enctype'] . '">';
+               $code = '<form action="' . htmlspecialchars(BackendUtility::getModuleUrl('tce_file')) . '" role="form" method="post" name="editform" enctype="multipart/form-data">';
 
                // Making the formfields for renaming:
                $code .= '
index 356bd02..e9da5a5 100644 (file)
@@ -715,7 +715,7 @@ class PageLayoutController {
                // Alternative template
                $this->doc->setModuleTemplate('EXT:backend/Resources/Private/Templates/db_layout_quickedit.html');
                // Alternative form tag; Quick Edit submits its content to tce_db.php.
-               $this->doc->form = '<form action="' . htmlspecialchars(BackendUtility::getModuleUrl('tce_db', ['prErr' => 1, 'uPT' => 1])) . '" method="post" enctype="' . $GLOBALS['TYPO3_CONF_VARS']['SYS']['form_enctype'] . '" name="editform" onsubmit="return TBE_EDITOR.checkSubmit(1);">';
+               $this->doc->form = '<form action="' . htmlspecialchars(BackendUtility::getModuleUrl('tce_db', ['prErr' => 1, 'uPT' => 1])) . '" method="post" enctype="multipart/form-data" name="editform" onsubmit="return TBE_EDITOR.checkSubmit(1);">';
                // Setting up the context sensitive menu:
                $this->doc->getContextMenuCode();
                // Set the edit_record value for internal use in this function:
index cb57ba5..38b1910 100644 (file)
@@ -98,7 +98,7 @@ class RteController extends AbstractWizardController {
                // Need to NOT have the page wrapped in DIV since if we do that we destroy
                // the feature that the RTE spans the whole height of the page!!!
                $this->doc->divClass = '';
-               $this->doc->form = '<form action="' . htmlspecialchars(BackendUtility::getModuleUrl('tce_db')) . '" method="post" enctype="' . $GLOBALS['TYPO3_CONF_VARS']['SYS']['form_enctype'] . '" name="editform" onsubmit="return TBE_EDITOR.checkSubmit(1);">';
+               $this->doc->form = '<form action="' . htmlspecialchars(BackendUtility::getModuleUrl('tce_db')) . '" method="post" enctype="multipart/form-data" name="editform" onsubmit="return TBE_EDITOR.checkSubmit(1);">';
        }
 
        /**
index 1c88e6e..35dc0ef 100644 (file)
@@ -414,7 +414,7 @@ class ModuleSettings {
                }
                if ($useOwnForm && trim($code)) {
                        $code = '
-               <form action="' . GeneralUtility::getIndpEnv('SCRIPT_NAME') . '" method="post" name="' . $this->formName . '" enctype="' . $GLOBALS['TYPO3_CONF_VARS']['SYS']['form_enctype'] . '">' . $code . '</form>';
+               <form action="' . GeneralUtility::getIndpEnv('SCRIPT_NAME') . '" method="post" name="' . $this->formName . '" enctype="multipart/form-data">' . $code . '</form>';
                }
                return $code;
        }
index 9679200..a9bddfc 100644 (file)
@@ -611,7 +611,7 @@ class FormContentObject extends \TYPO3\CMS\Frontend\ContentObject\AbstractConten
                $theTarget = $theRedirect ? $LD['target'] : $LD_A['target'];
                $method = isset($conf['method.']) ? $this->cObj->stdWrap($conf['method'], $conf['method.']) : $conf['method'];
                $content = array(
-                       '<form' . ' action="' . htmlspecialchars($action) . '"' . ' id="' . $formName . '"' . ($xhtmlStrict ? '' : ' name="' . $formName . '"') . ' enctype="' . $GLOBALS['TYPO3_CONF_VARS']['SYS']['form_enctype'] . '"' . ' method="' . ($method ? $method : 'post') . '"' . ($theTarget ? ' target="' . $theTarget . '"' : '') . $validateForm . '>',
+                       '<form' . ' action="' . htmlspecialchars($action) . '"' . ' id="' . $formName . '"' . ($xhtmlStrict ? '' : ' name="' . $formName . '"') . ' enctype="multipart/form-data"' . ' method="' . ($method ? $method : 'post') . '"' . ($theTarget ? ' target="' . $theTarget . '"' : '') . $validateForm . '>',
                        $hiddenfields . $content,
                        '</form>'
                );
index e3c884e..56ad1b7 100644 (file)
@@ -137,7 +137,7 @@ class ConfigurationForm extends ExtendedTemplateService {
                        }
                ');
                if ($addFormTag) {
-                       $content .= '<form action="' . htmlspecialchars(($script ?: GeneralUtility::linkThisScript())) . '" name="' . $this->ext_CEformName . '" method="post" enctype="' . $GLOBALS['TYPO3_CONF_VARS']['SYS']['form_enctype'] . '">';
+                       $content .= '<form action="' . htmlspecialchars(($script ?: GeneralUtility::linkThisScript())) . '" name="' . $this->ext_CEformName . '" method="post" enctype="multipart/form-data">';
                }
                $content .= $addFields;
                $content .= $printFields;
index 7f98c64..a6e84b8 100644 (file)
@@ -85,7 +85,6 @@ return array(
                 * @deprecated since 4.6 - will be removed in 6.2.
                 */
                'curlTimeout' => 0,                                             // Integer: Timeout value for cURL requests in seconds. 0 means to wait indefinitely. Deprecated since 4.6 - will be removed in 6.2. See below for http options.
-               'form_enctype' => 'multipart/form-data',// String: This is the default form encoding type for most forms in TYPO3. It allows for file uploads to be in the form. However if file-upload is disabled for your PHP version even ordinary data sent with this encryption will not get to the server. So if you have file_upload disabled, you will have to change this to eg. 'application/x-www-form-urlencoded'
                'textfile_ext' => 'txt,ts,html,htm,css,tmpl,js,sql,xml,csv,xlf',                // Text file extensions. Those that can be edited. Executable PHP files may not be editable in webspace if disallowed!
                'binPath' => '',                                                // String: List of absolute paths where external programs should be searched for. Eg. <code>/usr/local/webbin/,/home/xyz/bin/</code>. (ImageMagick path have to be configured separately)
                'binSetup' => '',                                               // String (textarea): List of programs (separated by newline or comma). By default programs will be searched in default paths and the special paths defined by 'binPath'. When PHP has openbasedir enabled the programs can not be found and have to be configured here. Example: <code>perl=/usr/bin/perl,unzip=/usr/local/bin/unzip</code>
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Breaking-68178-DropFormEnctype.rst b/typo3/sysext/core/Documentation/Changelog/master/Breaking-68178-DropFormEnctype.rst
new file mode 100644 (file)
index 0000000..84dfd49
--- /dev/null
@@ -0,0 +1,27 @@
+=========================================================================
+Breaking: #68178 - Drop $GLOBALS['TYPO3_CONF_VARS']['SYS]['form_enctype']
+=========================================================================
+
+Description
+===========
+
+Setting ``$GLOBALS['TYPO3_CONF_VARS']['SYS]['form_enctype']`` has been dropped.
+
+
+Impact
+======
+
+Extensions that used this setting in forms may end up with an empty ``enctype`` attribute
+in ``HTML`` ``form`` fields.
+
+
+Affected Installations
+======================
+
+Extensions that rely on this variable being set.
+
+
+Migration
+=========
+
+Substitute the variable access with ``multipart/form-data``.
\ No newline at end of file
index 18d69e3..1c420e2 100644 (file)
@@ -119,7 +119,7 @@ class ModuleController extends \TYPO3\CMS\Backend\Module\BaseScriptClass {
        protected function printSqlCheck() {
                $input = \TYPO3\CMS\Core\Utility\GeneralUtility::_GP('tx_dbal');
                $out = '
-                       <form name="sql_check" action="' . $this->thisScript . '" method="post" enctype="' . $GLOBALS['TYPO3_CONF_VARS']['SYS']['form_enctype'] . '">
+                       <form name="sql_check" action="' . $this->thisScript . '" method="post" enctype="multipart/form-data">
                        <script type="text/javascript">
 /*<![CDATA[*/
 function updateQryForm(s) {
index 5ec4eee..f36bbbc 100644 (file)
@@ -92,7 +92,7 @@ class FrontendEditPanel {
                $this->frontendController->set_no_cache('Frontend edit panel is shown', TRUE);
 
                $formName = 'TSFE_EDIT_FORM_' . substr($this->frontendController->uniqueHash(), 0, 4);
-               $formTag = '<form name="' . $formName . '" id ="' . $formName . '" action="' . htmlspecialchars(GeneralUtility::getIndpEnv('REQUEST_URI')) . '" method="post" enctype="' . htmlspecialchars($GLOBALS['TYPO3_CONF_VARS']['SYS']['form_enctype']) . '" onsubmit="return TBE_EDITOR.checkSubmit(1);">';
+               $formTag = '<form name="' . $formName . '" id ="' . $formName . '" action="' . htmlspecialchars(GeneralUtility::getIndpEnv('REQUEST_URI')) . '" method="post" enctype="multipart/form-data" onsubmit="return TBE_EDITOR.checkSubmit(1);">';
                $sortField = $GLOBALS['TCA'][$table]['ctrl']['sortby'];
                $labelField = $GLOBALS['TCA'][$table]['ctrl']['label'];
                $hideField = $GLOBALS['TCA'][$table]['ctrl']['enablecolumns']['disabled'];
index b780d93..e3061d6 100644 (file)
@@ -33,12 +33,11 @@ class EnctypeAttribute extends \TYPO3\CMS\Form\Domain\Model\Attribute\AbstractAt
         * @return string Attribute value
         */
        public function getValue() {
-               $attribute = '';
-               $value = strtolower((string)$this->value);
-               if ($value == 'multipart/form-data' || $value == 'application/x-www-form-urlencoded') {
+               $value = trim(strtolower((string)$this->value));
+               if ($value === 'application/x-www-form-urlencoded') {
                        $attribute = $value;
-               } elseif (!empty($GLOBALS['TYPO3_CONF_VARS']['SYS']['form_enctype'])) {
-                       $attribute = $GLOBALS['TYPO3_CONF_VARS']['SYS']['form_enctype'];
+               } else {
+                       $attribute = 'multipart/form-data';
                }
                return $attribute;
        }
index 9c6d9a1..e88a8a3 100644 (file)
@@ -97,8 +97,8 @@ class ImportExportController extends \TYPO3\CMS\Backend\Module\BaseScriptClass {
                // Setting up the context sensitive menu:
                $this->doc->getContextMenuCode();
                $this->doc->postCode = $this->doc->wrapScriptTags('if (top.fsMod) top.fsMod.recentIds["web"] = ' . (int)$this->id . ';');
-               $this->doc->form = '<form action="' . htmlspecialchars(BackendUtility::getModuleUrl('xMOD_tximpexp')) . '" method="post" enctype="'
-                       . $GLOBALS['TYPO3_CONF_VARS']['SYS']['form_enctype'] . '"><input type="hidden" name="id" value="' . $this->id . '" />';
+               $this->doc->form = '<form action="' . htmlspecialchars(BackendUtility::getModuleUrl('xMOD_tximpexp')) . '" method="post" enctype="multipart/form-data">'
+                       . '<input type="hidden" name="id" value="' . $this->id . '" />';
                $this->content .= $this->doc->header($this->lang->getLL('title'));
                $this->content .= $this->doc->spacer(5);
                // Input data grabbed:
index 2f8e72b..23c7704 100644 (file)
@@ -92,6 +92,8 @@ class SilentConfigurationUpgradeService {
                'GFX/png_to_gif',
                // #67411
                'SYS/caching/cacheConfigurations/cache_classes',
+               // #68178
+               'SYS/form_enctype',
        );
 
        /**
index 48416ae..868e0e3 100644 (file)
@@ -162,8 +162,6 @@ class Check {
                                ' But it doesn\'t end here, because not only are files not accepted by' .
                                ' the server - ALL content in the forms are discarded and therefore' .
                                ' nothing at all will be editable if you don\'t set this flag!' .
-                               ' However if you cannot enable fileupload for some reason in PHP, alternatively' .
-                               ' change the default form encoding value with $GLOBALS[\'TYPO3_CONF_VARS\'][\'SYS\'][\'form_enctype\'].'
                        );
                } else {
                        $status = new Status\OkStatus();
index dfd28a6..ae89fbd 100644 (file)
@@ -2372,7 +2372,7 @@ class ElementBrowser {
                                Form, for uploading files:
                        -->
                        <form action="' . htmlspecialchars(BackendUtility::getModuleUrl('tce_file')) . '" method="post" name="editform"'
-                       . ' id="typo3-uplFilesForm" enctype="' . $GLOBALS['TYPO3_CONF_VARS']['SYS']['form_enctype'] . '">
+                       . ' id="typo3-uplFilesForm" enctype="multipart/form-data">
                                <table border="0" cellpadding="0" cellspacing="0" id="typo3-uplFiles">
                                        <tr>
                                                <td>' . $this->barheader($lang->sL(
index 3285ac7..6a41306 100644 (file)
@@ -163,7 +163,7 @@ class TypoScriptTemplateModuleController extends BaseScriptClass {
                                'template' => 'all'
                        );
                        $aHref = BackendUtility::getModuleUrl('web_ts', $urlParameters);
-                       $this->doc->form = '<form action="' . htmlspecialchars($aHref) . '" method="post" enctype="' . $GLOBALS['TYPO3_CONF_VARS']['SYS']['form_enctype'] . '" name="editForm">';
+                       $this->doc->form = '<form action="' . htmlspecialchars($aHref) . '" method="post" enctype="multipart/form-data" name="editForm">';
 
                        // JavaScript
                        $this->doc->JScode = '