[FEATURE] Integration of a generic record link handler
[Packages/TYPO3.CMS.git] / typo3 / sysext / core / Configuration / DefaultConfiguration.php
index aa0e721..3b6837d 100644 (file)
@@ -50,6 +50,21 @@ return [
                 'xlf' => \TYPO3\CMS\Core\Localization\Parser\XliffParser::class
             ]
         ],
+        'session' => [
+            'BE' => [
+                'backend' => \TYPO3\CMS\Core\Session\Backend\DatabaseSessionBackend::class,
+                'options' => [
+                    'table' => 'be_sessions'
+                ]
+            ],
+            'FE' => [
+                'backend' => \TYPO3\CMS\Core\Session\Backend\DatabaseSessionBackend::class,
+                'options' => [
+                    'table' => 'fe_sessions',
+                    'has_anonymous' => true,
+                ]
+            ]
+        ],
         'fileCreateMask' => '0664',                        // File mode mask for Unix file systems (when files are uploaded/created).
         'folderCreateMask' => '2775',                    // As above, but for folders.
         'createGroup' => '',                            // Group for newly created files and folders (Unix only). Group ownership can be changed on Unix file systems (see above). Set this if you want to change the group ownership of created files/folders to a specific group. This makes sense in all cases where the webserver is running with a different user/group as you do. Create a new group on your system and add you and the webserver user to the group. Now you can safely set the last bit in fileCreateMask/folderCreateMask to 0 (e.g. 770). Important: The user who is running your webserver needs to be a member of the group you specify here! Otherwise you might get some error messages.
@@ -197,7 +212,7 @@ return [
                 ],
             ],
         ],
-        'defaultCategorizedTables' => 'pages,tt_content,sys_file_metadata', // List of comma separated tables that are categorizable by default.
+        'defaultCategorizedTables' => '', // List of comma separated tables that are categorizable by default.
         'displayErrors' => -1,        // <p>Integer (-1, 0, 1). Configures whether PHP errors or Exceptions should be displayed.</p><dl><dt>0</dt><dd>Do not display any PHP error message. Sets PHP "display_errors" setting to 0. Overrides the value of [SYS][exceptionalErrors] and sets it to 0 (= no errors are turned into exceptions). The configured [SYS][productionExceptionHandler] is used as exception handler.</dd><dt>1</dt><dd>Display error messages with the registered [SYS][errorHandler]. Sets PHP "display_errors" setting to 1. The configured [SYS][debugExceptionHandler] is used as exception handler.</dd><dt>-1</dt><dd>TYPO3 CMS does not touch the PHP "display_errors" setting. If [SYS][devIPmask] matches the user's IP address, the configured [SYS][debugExceptionHandler] is used instead of the [SYS][productionExceptionHandler] to handle exceptions.</dd></dl>
         'productionExceptionHandler' => \TYPO3\CMS\Core\Error\ProductionExceptionHandler::class,        // String: Classname to handle exceptions that might happen in the TYPO3-code. Leave empty to disable exception handling. Default: "TYPO3\\CMS\\Core\\Error\\ProductionExceptionHandler". This exception handler displays a nice error message when something went wrong. The error message is logged to the configured logs. Note: The configured "productionExceptionHandler" is used if [SYS][displayErrors] is set to "0" or is set to "-1" and [SYS][devIPmask] doesn't match the user's IP.
         'debugExceptionHandler' => \TYPO3\CMS\Core\Error\DebugExceptionHandler::class,        // String: Classname to handle exceptions that might happen in the TYPO3-code. Leave empty to disable exception handling. Default: "TYPO3\\CMS\\Core\\Error\\DebugExceptionHandler". This exception handler displays the complete stack trace of any encountered exception. The error message and the stack trace is logged to the configured logs. Note: The configured "debugExceptionHandler" is used if [SYS][displayErrors] is set to "1" or is set to "-1" or "2" and the [SYS][devIPmask] matches the user's IP.
@@ -287,6 +302,7 @@ return [
             'folder' => \TYPO3\CMS\Core\LinkHandling\FolderLinkHandler::class,
             'url'    => \TYPO3\CMS\Core\LinkHandling\UrlLinkHandler::class,
             'email'  => \TYPO3\CMS\Core\LinkHandling\EmailLinkHandler::class,
+            'record' => \TYPO3\CMS\Core\LinkHandling\RecordLinkHandler::class,
         ],
         'livesearch' => [],    // Array: keywords used for commands to search for specific tables
         'isInitialInstallationInProgress' => false,        // Boolean: If TRUE, the installation is 'in progress'. This value is handled within the install tool step installer internally.
@@ -483,12 +499,18 @@ return [
                             \TYPO3\CMS\Backend\Form\FormDataProvider\TcaFlexPrepare::class,
                         ],
                     ],
-                    \TYPO3\CMS\Backend\Form\FormDataProvider\TcaRadioItems::class => [
+                    \TYPO3\CMS\Backend\Form\FormDataProvider\TcaText::class => [
                         'depends' => [
                             \TYPO3\CMS\Backend\Form\FormDataProvider\InitializeProcessedTca::class,
                             \TYPO3\CMS\Backend\Form\FormDataProvider\TcaFlexProcess::class,
                         ],
                     ],
+                    \TYPO3\CMS\Backend\Form\FormDataProvider\TcaRadioItems::class => [
+                        'depends' => [
+                            \TYPO3\CMS\Backend\Form\FormDataProvider\InitializeProcessedTca::class,
+                            \TYPO3\CMS\Backend\Form\FormDataProvider\TcaText::class,
+                        ],
+                    ],
                     \TYPO3\CMS\Backend\Form\FormDataProvider\TcaCheckboxItems::class => [
                         'depends' => [
                             \TYPO3\CMS\Backend\Form\FormDataProvider\InitializeProcessedTca::class,
@@ -555,6 +577,11 @@ return [
                             \TYPO3\CMS\Backend\Form\FormDataProvider\TcaColumnsProcessFieldLabels::class,
                         ],
                     ],
+                    \TYPO3\CMS\Backend\Form\FormDataProvider\TcaText::class => [
+                        'depends' => [
+                            \TYPO3\CMS\Backend\Form\FormDataProvider\DatabaseRowDefaultValues::class,
+                        ],
+                    ],
                     \TYPO3\CMS\Backend\Form\FormDataProvider\TcaRadioItems::class => [
                         'depends' => [
                             \TYPO3\CMS\Backend\Form\FormDataProvider\DatabaseRowDefaultValues::class,
@@ -625,11 +652,16 @@ return [
                             \TYPO3\CMS\Backend\Form\FormDataProvider\DatabaseRecordTypeValue::class,
                         ],
                     ],
-                    \TYPO3\CMS\Backend\Form\FormDataProvider\TcaRadioItems::class => [
+                    \TYPO3\CMS\Backend\Form\FormDataProvider\TcaText::class => [
                         'depends' => [
                             \TYPO3\CMS\Backend\Form\FormDataProvider\TcaColumnsRemoveUnused::class,
                         ],
                     ],
+                    \TYPO3\CMS\Backend\Form\FormDataProvider\TcaRadioItems::class => [
+                        'depends' => [
+                            \TYPO3\CMS\Backend\Form\FormDataProvider\TcaText::class
+                        ],
+                    ],
                     \TYPO3\CMS\Backend\Form\FormDataProvider\TcaCheckboxItems::class => [
                         'depends' => [
                             \TYPO3\CMS\Backend\Form\FormDataProvider\TcaColumnsRemoveUnused::class,
@@ -745,15 +777,16 @@ return [
         'lockSSL' => false,                                    // Boolean. If set, the backend can only be operated from an SSL-encrypted connection (https). A redirect to the SSL version of a URL will happen when a user tries to access non-https admin-urls
         'lockSSLPort' => 0,                                // Integer: Use a non-standard HTTPS port for lockSSL. Set this value if you use lockSSL and the HTTPS port of your webserver is not 443.
         'enabledBeUserIPLock' => true,                    // Boolean: If set, the User/Group TSconfig option 'option.lockToIP' is enabled.
-        'lockHashKeyWords' => 'useragent',                // Keyword list (Strings comma separated). Currently only "useragent"; If set, then the BE user session is locked to the value of HTTP_USER_AGENT. This lowers the risk of session hi-jacking. However in some cases (like during development) you might need to switch the user agent while keeping the session. In this case you can disable that feature (e.g. with a blank string).
         'cookieDomain' => '',                            // Same as <a href="#SYS-cookieDomain">$TYPO3_CONF_VARS['SYS']['cookieDomain']</a> but only for BE cookies. If empty, $TYPO3_CONF_VARS['SYS']['cookieDomain'] value will be used.
         'cookieName' => 'be_typo_user',                    // String: Set the name for the cookie used for the back-end user session
         'loginSecurityLevel' => '',                        // String: Keywords that determines the security level of login to the backend. "normal" means the password from the login form is sent in clear-text, "rsa" uses RSA password encryption (only if the rsaauth extension is installed).
         'showRefreshLoginPopup' => false,                // Boolean: If set, the Ajax relogin will show a real popup window for relogin after the count down. Some auth services need this as they add custom validation to the login form. If it's not set, the Ajax relogin will show an inline relogin window.
-        'adminOnly' => 0,                                // <p>Integer (-1, 0, 1, 2)</p><dl><dt>-1</dt><dd>total shutdown for maintenance purposes</dd><dt>0</dt><dd>normal operation, everyone can login (default)</dd><dt>1</dt><dd>only admins can login</dd><dt>2</dt><dd>only admins and regular CLI users can login</dd></dl>
+        'adminOnly' => 0,                                // <p>Integer (-1, 0, 1, 2)</p><dl><dt>-1</dt><dd>total shutdown for maintenance purposes</dd><dt>0</dt><dd>normal operation, everyone can login (default)</dd><dt>1</dt><dd>only admins can login (no CLI)</dd><dt>2</dt><dd>only admins and regular CLI users can login</dd></dl>
         'disable_exec_function' => false,                // Boolean: Don't use exec() function (except for ImageMagick which is disabled by <a href="#GFX-im">[GFX][im]</a>=0). If set, all fileoperations are done by the default PHP-functions. This is necessary under Windows! On Unix the system commands by exec() can be used, unless this is disabled.
         'compressionLevel' => 0,                        // Determines output compression of BE output. Makes output smaller but slows down the page generation depending on the compression level. Requires a) zlib in your PHP installation and b) special rewrite rules for .css.gzip and .js.gzip (please see _.htacces for an example). Range 1-9, where 1 is least compression and 9 is greatest compression. 'true' as value will set the compression based on the PHP default settings (usually 5). Suggested and most optimal value is 5.
         'installToolPassword' => '',                    // String: This is the md5-hashed, salted password for the Install Tool. Set this to '' and access will be totally denied. You may consider to externally protect the typo3/sysext/install/ folder, eg. with a .htaccess file.
+        'checkStoredRecords' => true, // Boolean: If set, values of the record are validated after saving in DataHandler. Disable only if using a database in strict mode.
+        'checkStoredRecordsLoose' => true, // Boolean: If set, make a loose comparison ('' equals 0) when validating record values after saving in DataHandler.
         'pageTree' => [
             'preloadLimit' => 50
         ],
@@ -767,243 +800,17 @@ return [
 
                        options.contextMenu {
                                table {
-                                       virtual_root {
+                                       pages {
                                                disableItems =
-
-                                               items {
-                                                       100 = ITEM
-                                                       100 {
-                                                               name = history
-                                                               label = LLL:EXT:lang/Resources/Private/Language/locallang_misc.xlf:CM_history
-                                                               iconName = actions-document-history-open
-                                                               displayCondition = canShowHistory != 0
-                                                               callbackAction = openHistoryPopUp
-                                                       }
-                                               }
+                                               tree.disableItems =
                                        }
-
-                                       pages_root {
+                                       sys_file {
                                                disableItems =
-
-                                               items {
-                                                       100 = ITEM
-                                                       100 {
-                                                               name = view
-                                                               label = LLL:EXT:lang/Resources/Private/Language/locallang_core.xlf:cm.view
-                                                               iconName = actions-document-view
-                                                               displayCondition = canBeViewed != 0
-                                                               callbackAction = viewPage
-                                                       }
-
-                                                       200 = ITEM
-                                                       200 {
-                                                               name = new
-                                                               label = LLL:EXT:lang/Resources/Private/Language/locallang_core.xlf:cm.new
-                                                               iconName = actions-page-new
-                                                               displayCondition = canCreateNewPages != 0
-                                                               callbackAction = newPageWizard
-                                                       }
-
-                                                       300 = DIVIDER
-
-                                                       400 = ITEM
-                                                       400 {
-                                                               name = history
-                                                               label = LLL:EXT:lang/Resources/Private/Language/locallang_misc.xlf:CM_history
-                                                               iconName = actions-document-history-open
-                                                               displayCondition = canShowHistory != 0
-                                                               callbackAction = openHistoryPopUp
-                                                       }
-                                               }
+                                               tree.disableItems =
                                        }
-
-                                       pages {
+                                       sys_filemounts {
                                                disableItems =
-
-                                               items {
-                                                       100 = ITEM
-                                                       100 {
-                                                               name = view
-                                                               label = LLL:EXT:lang/Resources/Private/Language/locallang_core.xlf:cm.view
-                                                               iconName = actions-document-view
-                                                               displayCondition = canBeViewed != 0
-                                                               callbackAction = viewPage
-                                                       }
-
-                                                       200 = DIVIDER
-
-                                                       300 = ITEM
-                                                       300 {
-                                                               name = disable
-                                                               label = LLL:EXT:lang/Resources/Private/Language/locallang_common.xlf:disable
-                                                               iconName = actions-edit-hide
-                                                               displayCondition = getRecord|hidden = 0 && canBeDisabledAndEnabled != 0
-                                                               callbackAction = disablePage
-                                                       }
-
-                                                       400 = ITEM
-                                                       400 {
-                                                               name = enable
-                                                               label = LLL:EXT:lang/Resources/Private/Language/locallang_common.xlf:enable
-                                                               iconName = actions-edit-unhide
-                                                               displayCondition = getRecord|hidden = 1 && canBeDisabledAndEnabled != 0
-                                                               callbackAction = enablePage
-                                                       }
-
-                                                       500 = ITEM
-                                                       500 {
-                                                               name = edit
-                                                               label = LLL:EXT:lang/Resources/Private/Language/locallang_core.xlf:cm.edit
-                                                               iconName = actions-page-open
-                                                               displayCondition = canBeEdited != 0
-                                                               callbackAction = editPageProperties
-                                                       }
-
-                                                       600 = ITEM
-                                                       600 {
-                                                               name = info
-                                                               label = LLL:EXT:lang/Resources/Private/Language/locallang_core.xlf:cm.info
-                                                               iconName = actions-document-info
-                                                               displayCondition = canShowInfo != 0
-                                                               callbackAction = openInfoPopUp
-                                                       }
-
-                                                       700 = ITEM
-                                                       700 {
-                                                               name = history
-                                                               label = LLL:EXT:lang/Resources/Private/Language/locallang_misc.xlf:CM_history
-                                                               iconName = actions-document-history-open
-                                                               displayCondition = canShowHistory != 0
-                                                               callbackAction = openHistoryPopUp
-                                                       }
-
-                                                       800 = DIVIDER
-
-                                                       900 = SUBMENU
-                                                       900 {
-                                                               label = LLL:EXT:lang/Resources/Private/Language/locallang_core.xlf:cm.copyPasteActions
-
-                                                               100 = ITEM
-                                                               100 {
-                                                                       name = new
-                                                                       label = LLL:EXT:lang/Resources/Private/Language/locallang_core.xlf:cm.new
-                                                                       iconName = actions-page-new
-                                                                       displayCondition = canCreateNewPages != 0
-                                                                       callbackAction = newPageWizard
-                                                               }
-
-                                                               200 = DIVIDER
-
-                                                               300 = ITEM
-                                                               300 {
-                                                                       name = cut
-                                                                       label = LLL:EXT:lang/Resources/Private/Language/locallang_core.xlf:cm.cut
-                                                                       iconName = actions-edit-cut
-                                                                       displayCondition = isInCutMode = 0 && canBeCut != 0 && isMountPoint != 1
-                                                                       callbackAction = enableCutMode
-                                                               }
-
-                                                               400 = ITEM
-                                                               400 {
-                                                                       name = cut
-                                                                       label = LLL:EXT:lang/Resources/Private/Language/locallang_core.xlf:cm.cut
-                                                                       iconName = actions-edit-cut-release
-                                                                       displayCondition = isInCutMode = 1 && canBeCut != 0
-                                                                       callbackAction = disableCutMode
-                                                               }
-
-                                                               500 = ITEM
-                                                               500 {
-                                                                       name = copy
-                                                                       label = LLL:EXT:lang/Resources/Private/Language/locallang_core.xlf:cm.copy
-                                                                       iconName = actions-edit-copy
-                                                                       displayCondition = isInCopyMode = 0
-                                                                       callbackAction = enableCopyMode
-                                                               }
-
-                                                               600 = ITEM
-                                                               600 {
-                                                                       name = copy
-                                                                       label = LLL:EXT:lang/Resources/Private/Language/locallang_core.xlf:cm.copy
-                                                                       iconName = actions-edit-copy-release
-                                                                       displayCondition = isInCopyMode = 1
-                                                                       callbackAction = disableCopyMode
-                                                               }
-
-                                                               700 = ITEM
-                                                               700 {
-                                                                       name = pasteInto
-                                                                       label = LLL:EXT:lang/Resources/Private/Language/locallang_core.xlf:cm.pasteinto
-                                                                       iconName = actions-document-paste-into
-                                                                       displayCondition = getContextInfo|inCopyMode = 1 || getContextInfo|inCutMode = 1 && canBePastedInto != 0
-                                                                       callbackAction = pasteIntoNode
-                                                               }
-
-                                                               800 = ITEM
-                                                               800 {
-                                                                       name = pasteAfter
-                                                                       label = LLL:EXT:lang/Resources/Private/Language/locallang_core.xlf:cm.pasteafter
-                                                                       iconName = actions-document-paste-after
-                                                                       displayCondition = getContextInfo|inCopyMode = 1 || getContextInfo|inCutMode = 1 && canBePastedAfter != 0
-                                                                       callbackAction = pasteAfterNode
-                                                               }
-
-                                                               900 = DIVIDER
-
-                                                               1000 = ITEM
-                                                               1000 {
-                                                                       name = delete
-                                                                       label = LLL:EXT:lang/Resources/Private/Language/locallang_core.xlf:cm.delete
-                                                                       iconName = actions-edit-delete
-                                                                       displayCondition = canBeRemoved != 0 && isMountPoint != 1
-                                                                       callbackAction = removeNode
-                                                               }
-
-                                                               1100 = DIVIDER
-
-                                                               1200 = ITEM
-                                                               1200 {
-                                                                       name = clearCache
-                                                                       label = LLL:EXT:lang/Resources/Private/Language/locallang_core.xlf:labels.clear_cache
-                                                                       iconName = actions-system-cache-clear
-                                                                       callbackAction = clearCacheOfPage
-                                                               }
-                                                       }
-
-                                                       1000 = SUBMENU
-                                                       1000 {
-                                                               label = LLL:EXT:lang/Resources/Private/Language/locallang_core.xlf:cm.branchActions
-
-                                                               100 = ITEM
-                                                               100 {
-                                                                       name = mountAsTreeroot
-                                                                       label = LLL:EXT:lang/Resources/Private/Language/locallang_core.xlf:cm.tempMountPoint
-                                                                       iconName = actions-pagetree-mountroot
-                                                                       displayCondition = canBeTemporaryMountPoint != 0 && isMountPoint = 0
-                                                                       callbackAction = mountAsTreeRoot
-                                                               }
-
-                                                               200 = DIVIDER
-
-                                                               300 = ITEM
-                                                               300 {
-                                                                       name = expandBranch
-                                                                       label = LLL:EXT:lang/Resources/Private/Language/locallang_core.xlf:cm.expandBranch
-                                                                       iconName = actions-pagetree-expand
-                                                                       displayCondition =
-                                                                       callbackAction = expandBranch
-                                                               }
-
-                                                               400 = ITEM
-                                                               400 {
-                                                                       name = collapseBranch
-                                                                       label = LLL:EXT:lang/Resources/Private/Language/locallang_core.xlf:cm.collapseBranch
-                                                                       iconName = actions-pagetree-collapse
-                                                                       displayCondition =
-                                                                       callbackAction = collapseBranch
-                                                               }
-                                                       }
-                                               }
+                                               tree.disableItems =
                                        }
                                }
                        }
@@ -1095,11 +902,10 @@ return [
         'loginSecurityLevel' => '',        // See description for <a href="#BE-loginSecurityLevel">[BE][loginSecurityLevel]</a>. Default state for frontend is "normal". Alternative authentication services can implement higher levels if preferred. For example, "rsa" level uses RSA password encryption (only if the rsaauth extension is installed)
         'lifetime' => 0,        // Integer: positive. If >0 and the option permalogin is >=0, the cookie of FE users will have a lifetime of the number of seconds this value indicates. Otherwise it will be a session cookie (deleted when browser is shut down). Setting this value to 604800 will result in automatic login of FE users during a whole week, 86400 will keep the FE users logged in for a day.
         'sessionDataLifetime' => 86400,        // Integer: positive. If >0, the session data will timeout and be removed after the number of seconds given (86400 seconds represents 24 hours).
+        'maxSessionDataSize' => 10000,        // Integer: Setting (deprecated) the maximum size (bytes) of frontend session data stored in the table fe_session_data. Set to zero (0) means no limit, but this is not recommended since it also disables a check that session data is stored only if a confirmed cookie is set. @deprecated since TYPO3 v8, will be removed in TYPO3 v9
         'permalogin' => 0,        // <p>Integer:</p><dl><dt>-1</dt><dd>Permanent login for FE users disabled.</dd><dt>0</dt><dd>By default permalogin is disabled for FE users but can be enabled by a form control in the login form.</dd><dt>1</dt><dd>Permanent login is by default enabled but can be disabled by a form control in the login form.</dd><dt>2</dt><dd>Permanent login is forced to be enabled.// In any case, permanent login is only possible if <a href="#FE-lifetime">[FE][lifetime]</a> lifetime is > 0.</dd></dl>
-        'maxSessionDataSize' => 10000,        // Integer: Setting the maximum size (bytes) of frontend session data stored in the table fe_session_data. Set to zero (0) means no limit, but this is not recommended since it also disables a check that session data is stored only if a confirmed cookie is set.
         'cookieDomain' => '',        // Same as <a href="#SYS-cookieDomain">$TYPO3_CONF_VARS['SYS']['cookieDomain']</a> but only for FE cookies. If empty, $TYPO3_CONF_VARS['SYS']['cookieDomain'] value will be used.
         'cookieName' => 'fe_typo_user',        // String: Set the name for the cookie used for the front-end user session
-        'lockHashKeyWords' => 'useragent',        // Keyword list (Strings commaseparated). Currently only "useragent"; If set, then the FE user session is locked to the value of HTTP_USER_AGENT. This lowers the risk of session hi-jacking. However some cases (like payment gateways) might have to use the session cookie and in this case you will have to disable that feature (eg. with a blank string).
         'defaultUserTSconfig' => '',        // String (textarea). Enter lines of default frontend user/group TSconfig.
         'defaultTypoScript_constants' => '',        // String (textarea). Enter lines of default TypoScript, constants-field.
         'defaultTypoScript_constants.' => [],        // Lines of TS to include after a static template with the uid = the index in the array (Constants)
@@ -1167,6 +973,7 @@ return [
                         'ResourceStorage' => [
                             'writerConfiguration' => [
                                 \TYPO3\CMS\Core\Log\LogLevel::ERROR => [
+                                    \TYPO3\CMS\Core\Log\Writer\FileWriter::class => [],
                                     \TYPO3\CMS\Core\Log\Writer\DatabaseWriter::class => []
                                 ]
                             ]