[TASK] Protect FileListController 26/58226/3
authorChristian Kuhn <lolli@schwarzbu.ch>
Sat, 8 Sep 2018 09:50:26 +0000 (11:50 +0200)
committerWouter Wolters <typo3@wouterwolters.nl>
Sun, 9 Sep 2018 16:43:27 +0000 (18:43 +0200)
Resolves: #86197
Releases: master
Change-Id: I3ad96b95e6e631adfe67ec83db60b8b9d5ec2045
Reviewed-on: https://review.typo3.org/58226
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: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
typo3/sysext/beuser/Classes/Controller/BackendUserController.php
typo3/sysext/core/Documentation/Changelog/master/Deprecation-86197-ProtectedFileListController.rst [new file with mode: 0644]
typo3/sysext/filelist/Classes/Controller/FileListController.php
typo3/sysext/filelist/Classes/FileList.php

index 019996c..3f84f9c 100644 (file)
@@ -15,6 +15,7 @@ namespace TYPO3\CMS\Beuser\Controller;
  */
 
 use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
+use TYPO3\CMS\Core\Compatibility\PublicMethodDeprecationTrait;
 use TYPO3\CMS\Core\Session\Backend\SessionBackendInterface;
 use TYPO3\CMS\Core\Session\SessionManager;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
@@ -27,6 +28,15 @@ use TYPO3\CMS\Extbase\Utility\LocalizationUtility;
  */
 class BackendUserController extends ActionController
 {
+    use PublicMethodDeprecationTrait;
+
+    /**
+     * @var array
+     */
+    private $deprecatedPublicMethods = [
+        'initializeView' => 'Using BackendUserController::initializeView() is deprecated and will not be possible anymore in TYPO3 v10.',
+    ];
+
     /**
      * @var int
      */
@@ -113,7 +123,7 @@ class BackendUserController extends ActionController
      * Assign default variables to view
      * @param ViewInterface $view
      */
-    public function initializeView(ViewInterface $view)
+    protected function initializeView(ViewInterface $view)
     {
         $view->assignMultiple([
             'shortcutLabel' => 'backendUsers',
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Deprecation-86197-ProtectedFileListController.rst b/typo3/sysext/core/Documentation/Changelog/master/Deprecation-86197-ProtectedFileListController.rst
new file mode 100644 (file)
index 0000000..d181d8a
--- /dev/null
@@ -0,0 +1,57 @@
+.. include:: ../../Includes.txt
+
+==================================================
+Deprecation: #86197 - Protected FileListController
+==================================================
+
+See :issue:`86197`
+
+Description
+===========
+
+The following properties changed their visibility from public to protected and should not be called any longer:
+
+* :php:`TYPO3\CMS\Filelist\Controller\FileListController->MOD_MENU`
+* :php:`TYPO3\CMS\Filelist\Controller\FileListController->MOD_SETTINGS`
+* :php:`TYPO3\CMS\Filelist\Controller\FileListController->doc`
+* :php:`TYPO3\CMS\Filelist\Controller\FileListController->id`
+* :php:`TYPO3\CMS\Filelist\Controller\FileListController->pointer`
+* :php:`TYPO3\CMS\Filelist\Controller\FileListController->table`
+* :php:`TYPO3\CMS\Filelist\Controller\FileListController->imagemode`
+* :php:`TYPO3\CMS\Filelist\Controller\FileListController->cmd`
+* :php:`TYPO3\CMS\Filelist\Controller\FileListController->filelist`
+
+The following methods changed their visibility from public to protected and should not be called any longer:
+
+* :php:`TYPO3\CMS\Beuser\Controller\BackendUserController->initializeView()`
+* :php:`TYPO3\CMS\Filelist\Controller\FileListController->menuConfig()`
+* :php:`TYPO3\CMS\Filelist\Controller\FileListController->initializeView()`
+* :php:`TYPO3\CMS\Filelist\Controller\FileListController->initializeIndexAction()`
+* :php:`TYPO3\CMS\Filelist\Controller\FileListController->indexAction()`
+* :php:`TYPO3\CMS\Filelist\Controller\FileListController->missingFolderAction()`
+* :php:`TYPO3\CMS\Filelist\Controller\FileListController->searchAction()`
+
+Additionally, first constructor argument :php:`$fileListController` of class
+:php:`TYPO3\CMS\Filelist\FileList` is now optional, class property :php:`$fileListController`
+should not be used any longer in hooks of that class.
+
+
+Impact
+======
+
+Calling one of the above properties or methods from a third party object triggers a PHP :php:`E_USER_DEPRECATED` error.
+
+
+Affected Installations
+======================
+
+Controllers of the core are usually not called by extensions directly, but only through core routing and
+dispatching mechanisms. Extensions are unlikely to be affected by this change.
+
+
+Migration
+=========
+
+No migration possible.
+
+.. index:: Backend, PHP-API, NotScanned, ext:filelist
\ No newline at end of file
index 69aa26a..2d76d7e 100644 (file)
@@ -19,8 +19,12 @@ use TYPO3\CMS\Backend\Template\Components\ButtonBar;
 use TYPO3\CMS\Backend\Template\DocumentTemplate;
 use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Backend\View\BackendTemplateView;
+use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
+use TYPO3\CMS\Core\Compatibility\PublicMethodDeprecationTrait;
+use TYPO3\CMS\Core\Compatibility\PublicPropertyDeprecationTrait;
 use TYPO3\CMS\Core\Imaging\Icon;
 use TYPO3\CMS\Core\Imaging\IconFactory;
+use TYPO3\CMS\Core\Localization\LanguageService;
 use TYPO3\CMS\Core\Messaging\FlashMessage;
 use TYPO3\CMS\Core\Resource\DuplicationBehavior;
 use TYPO3\CMS\Core\Resource\Exception;
@@ -42,29 +46,57 @@ use TYPO3\CMS\Filelist\FileList;
  */
 class FileListController extends ActionController
 {
+    use PublicPropertyDeprecationTrait;
+    use PublicMethodDeprecationTrait;
+
+    private $deprecatedPublicProperties = [
+        'MOD_MENU' => 'Using FileListController::$MOD_MENU is deprecated and will not be possible anymore in TYPO3 v10.',
+        'MOD_SETTINGS' => 'Using FileListController::$MOD_SETTINGS is deprecated and will not be possible anymore in TYPO3 v10.',
+        'doc' => 'Using FileListController::$doc is deprecated, property will be removed in v10.',
+        'id' => 'Using FileListController::$id is deprecated and will not be possible anymore in TYPO3 v10.',
+        'pointer' => 'Using FileListController::$pointer is deprecated and will not be possible anymore in TYPO3 v10.',
+        'table' => 'Using FileListController::$table is deprecated, , property will be removed in v10.',
+        'imagemode' => 'Using FileListController::$imagemode is deprecated and will not be possible anymore in TYPO3 v10.',
+        'cmd' => 'Using FileListController::$cmd is deprecated and will not be possible anymore in TYPO3 v10.',
+        'filelist' => 'Using FileListController::$filelist is deprecated and will not be possible anymore in TYPO3 v10.',
+    ];
+
+    /**
+     * @var array
+     */
+    private $deprecatedPublicMethods = [
+        'menuConfig' => 'Using FileListController::menuConfig() is deprecated and will not be possible anymore in TYPO3 v10.',
+        'initializeView' => 'Using FileListController::initializeView() is deprecated and will not be possible anymore in TYPO3 v10.',
+        'initializeIndexAction' => 'Using FileListController::initializeIndexAction() is deprecated and will not be possible anymore in TYPO3 v10.',
+        'indexAction' => 'Using FileListController::indexAction() is deprecated and will not be possible anymore in TYPO3 v10.',
+        'missingFolderAction' => 'Using FileListController::missingFolderAction() is deprecated and will not be possible anymore in TYPO3 v10.',
+        'searchAction' => 'Using FileListController::searchAction() is deprecated and will not be possible anymore in TYPO3 v10.',
+    ];
+
     /**
      * @var array
      */
-    public $MOD_MENU = [];
+    protected $MOD_MENU = [];
 
     /**
      * @var array
      */
-    public $MOD_SETTINGS = [];
+    protected $MOD_SETTINGS = [];
 
     /**
      * Document template object
      *
      * @var DocumentTemplate
+     * @deprecated since TYPO3 v9, will be removed in TYPO3 v10
      */
-    public $doc;
+    protected $doc;
 
     /**
      * "id" -> the path to list.
      *
      * @var string
      */
-    public $id;
+    protected $id;
 
     /**
      * @var Folder
@@ -81,25 +113,26 @@ class FileListController extends ActionController
      *
      * @var int
      */
-    public $pointer;
+    protected $pointer;
 
     /**
      * "Table"
      * @var string
+     * @deprecated since TYPO3 v9, will be removed in TYPO3 v10
      */
-    public $table;
+    protected $table;
 
     /**
      * Thumbnail mode.
      *
      * @var string
      */
-    public $imagemode;
+    protected $imagemode;
 
     /**
      * @var string
      */
-    public $cmd;
+    protected $cmd;
 
     /**
      * Defines behaviour when uploading files with names that already exist; possible values are
@@ -114,7 +147,7 @@ class FileListController extends ActionController
      *
      * @var FileList
      */
-    public $filelist;
+    protected $filelist;
 
     /**
      * The name of the module
@@ -153,7 +186,6 @@ class FileListController extends ActionController
      * Incoming GET vars include id, pointer, table, imagemode
      *
      * @throws \RuntimeException
-     * @throws Exception\InsufficientFolderAccessPermissionsException
      */
     public function initializeObject()
     {
@@ -262,7 +294,7 @@ class FileListController extends ActionController
     /**
      * Setting the menu/session variables
      */
-    public function menuConfig()
+    protected function menuConfig()
     {
         // MENU-ITEMS:
         // If array, then it's a selector box menu
@@ -288,7 +320,7 @@ class FileListController extends ActionController
      *
      * @param ViewInterface $view The view
      */
-    public function initializeView(ViewInterface $view)
+    protected function initializeView(ViewInterface $view)
     {
         /** @var BackendTemplateView $view */
         parent::initializeView($view);
@@ -301,7 +333,7 @@ class FileListController extends ActionController
 
     /**
      */
-    public function initializeIndexAction()
+    protected function initializeIndexAction()
     {
         // Apply predefined values for hidden checkboxes
         // Set predefined value for DisplayBigControlPanel:
@@ -337,7 +369,7 @@ class FileListController extends ActionController
 
     /**
      */
-    public function indexAction()
+    protected function indexAction()
     {
         $pageRenderer = $this->view->getModuleTemplate()->getPageRenderer();
         $pageRenderer->setTitle($this->getLanguageService()->getLL('files'));
@@ -345,7 +377,7 @@ class FileListController extends ActionController
         // There there was access to this file path, continue, make the list
         if ($this->folderObject) {
             $userTsConfig = $this->getBackendUser()->getTSConfig();
-            // Create fileListing object
+            // @deprecated since TYPO3 v9, will be removed in TYPO3 v10. Argument $this will be removed in v10.
             $this->filelist = GeneralUtility::makeInstance(FileList::class, $this);
             $this->filelist->thumbs = $GLOBALS['TYPO3_CONF_VARS']['GFX']['thumbnails'] && $this->MOD_SETTINGS['displayThumbs'];
             // Create clipboard object and initialize that
@@ -483,7 +515,7 @@ class FileListController extends ActionController
 
     /**
      */
-    public function missingFolderAction()
+    protected function missingFolderAction()
     {
         if ($this->errorMessage) {
             $this->errorMessage->setSeverity(FlashMessage::ERROR);
@@ -496,7 +528,7 @@ class FileListController extends ActionController
      *
      * @param string $searchWord
      */
-    public function searchAction($searchWord = '')
+    protected function searchAction($searchWord = '')
     {
         if (empty($searchWord)) {
             $this->forward('index');
@@ -593,12 +625,10 @@ class FileListController extends ActionController
         /** @var IconFactory $iconFactory */
         $iconFactory = $this->view->getModuleTemplate()->getIconFactory();
 
-        /** @var ResourceFactory $resourceFactory */
         $resourceFactory = GeneralUtility::makeInstance(ResourceFactory::class);
 
         $lang = $this->getLanguageService();
 
-        /** @var \TYPO3\CMS\Backend\Routing\UriBuilder $uriBuilder */
         $uriBuilder = GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Routing\UriBuilder::class);
 
         // Refresh page
@@ -719,9 +749,9 @@ class FileListController extends ActionController
     /**
      * Returns an instance of LanguageService
      *
-     * @return \TYPO3\CMS\Core\Localization\LanguageService
+     * @return LanguageService
      */
-    protected function getLanguageService()
+    protected function getLanguageService(): LanguageService
     {
         return $GLOBALS['LANG'];
     }
@@ -729,9 +759,9 @@ class FileListController extends ActionController
     /**
      * Returns the current BE user.
      *
-     * @return \TYPO3\CMS\Core\Authentication\BackendUserAuthentication
+     * @return BackendUserAuthentication
      */
-    protected function getBackendUser()
+    protected function getBackendUser(): BackendUserAuthentication
     {
         return $GLOBALS['BE_USER'];
     }
index 4e5c59d..c03f784 100644 (file)
@@ -264,6 +264,7 @@ class FileList
 
     /**
      * @var FileListController
+     * @deprecated since TYPO3 v9, will be removed in TYPO3 v10.
      */
     protected $fileListController;
 
@@ -275,9 +276,9 @@ class FileList
     /**
      * Construct
      *
-     * @param FileListController $fileListController
+     * @param FileListController $fileListController @deprecated since TYPO3 v9, will be removed in TYPO3 v10
      */
-    public function __construct(FileListController $fileListController)
+    public function __construct(FileListController $fileListController = null)
     {
         $backendUser = $this->getBackendUser();
         if (isset($backendUser->uc['titleLen']) && $backendUser->uc['titleLen'] > 0) {