[TASK] Use ServerRequestInterface in UserSettingsController 32/56332/7
authorŁukasz Uznański <l.uznanski@macopedia.pl>
Sat, 17 Mar 2018 17:45:54 +0000 (18:45 +0100)
committerJan Helke <typo3@helke.de>
Sun, 18 Mar 2018 12:11:39 +0000 (13:11 +0100)
* deprecate public (non-routed) methods

Resolves: #84369
Releases: master
Change-Id: I79f11a8d6e787886b9bd3bfef9e4520c9b5979b7
Reviewed-on: https://review.typo3.org/56332
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Tested-by: Anja Leichsenring <aleichsenring@ab-softlab.de>
Reviewed-by: Mathias Brodala <mbrodala@pagemachine.de>
Tested-by: Mathias Brodala <mbrodala@pagemachine.de>
Reviewed-by: Jan Helke <typo3@helke.de>
Tested-by: Jan Helke <typo3@helke.de>
typo3/sysext/backend/Classes/Controller/UserSettingsController.php
typo3/sysext/core/Documentation/Changelog/master/Deprecation-84369-ProtectedMethodsAndPropertiesInUserSettingsController.rst [new file with mode: 0644]

index c37dafe..cb89a2e 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-
+declare(strict_types = 1);
 namespace TYPO3\CMS\Backend\Controller;
 
 /*
@@ -49,10 +49,10 @@ class UserSettingsController
     public function processAjaxRequest(ServerRequestInterface $request): ResponseInterface
     {
         // do the regular / main logic, depending on the action parameter
-        $action = $request->getParsedBody()['action'] ?? $request->getQueryParams()['action'];
-        $key = $request->getParsedBody()['key'] ?? $request->getQueryParams()['key'];
-        $value = $request->getParsedBody()['value'] ?? $request->getQueryParams()['value'];
-        $data = $this->process($action, $key, $value);
+        $action = $request->getParsedBody()['action'] ?? $request->getQueryParams()['action'] ?? '';
+        $key = $request->getParsedBody()['key'] ?? $request->getQueryParams()['key'] ?? '';
+        $value = $request->getParsedBody()['value'] ?? $request->getQueryParams()['value'] ?? '';
+        $data = $this->processRequest($action, $key, $value);
 
         return (new JsonResponse())->setPayload($data);
     }
@@ -64,9 +64,25 @@ class UserSettingsController
      * @param string $key
      * @param string $value
      * @return mixed
+     *
+     * @deprecated since v9, will be removed in v10
      */
     public function process($action, $key = '', $value = '')
     {
+        trigger_error('Method process() will be replaced by protected method processRequest() in v10. Do not call from other extensions', E_USER_DEPRECATED);
+        return $this->processRequest($action, $key, $value);
+    }
+
+    /**
+     * Process data
+     *
+     * @param string $action
+     * @param string $key
+     * @param mixed $value
+     * @return mixed
+     */
+    protected function processRequest(string $action, string $key = '', $value = '')
+    {
         switch ($action) {
             case 'get':
                 $content = $this->backendUserConfiguration->get($key);
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Deprecation-84369-ProtectedMethodsAndPropertiesInUserSettingsController.rst b/typo3/sysext/core/Documentation/Changelog/master/Deprecation-84369-ProtectedMethodsAndPropertiesInUserSettingsController.rst
new file mode 100644 (file)
index 0000000..2b0aa34
--- /dev/null
@@ -0,0 +1,40 @@
+.. include:: ../../Includes.txt
+
+=================================================================================
+Deprecation: #84369 - Protected methods and properties in UserSettingsController
+=================================================================================
+
+See :issue:`84369`
+
+Description
+===========
+
+This file is about third party usage (consumer that call the class as well as
+signals or hooks depending on it) of :php:`TYPO3\CMS\Backend\Controller\UserSettingsController`.
+
+All methods not used as entry points by :php:`TYPO3\CMS\Backend\Http\RouteDispatcher` will be
+removed or set to protected in v10 and throw deprecation warnings if used from a third party:
+
+* [not scanned] :php:`process()`
+
+
+Impact
+======
+
+Calling above method on an instance of :php:`UserSettingsController` will throw a deprecation warning in v9 and a PHP fatal in v10.
+
+
+Affected Installations
+======================
+
+The extension scanner will find all usages, but may also find some false positives.
+
+
+Migration
+=========
+
+In general, extensions should not instantiate and re-use controllers of the core. Existing
+usages should be rewritten to be free of calls like these.
+
+
+.. index:: Backend, PHP-API, PartiallyScanned