[TASK] Move public TemplateService properties to protected 01/52901/31
authorElmar Hinz <t3elmar@gmail.com>
Mon, 22 May 2017 13:55:22 +0000 (15:55 +0200)
committerSusanne Moog <susanne.moog@typo3.org>
Sat, 9 Dec 2017 21:28:19 +0000 (22:28 +0100)
The properties are meant to be used only inside the class (and the
extended classes) itself.

Resolves: #83273
Releases: master
Change-Id: I550012bc377c6bb577747490fac3100d378a6fd6
Reviewed-on: https://review.typo3.org/52901
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Benni Mack <benni@typo3.org>
Reviewed-by: Susanne Moog <susanne.moog@typo3.org>
Tested-by: Susanne Moog <susanne.moog@typo3.org>
typo3/sysext/core/Classes/TypoScript/TemplateService.php
typo3/sysext/core/Documentation/Changelog/master/Deprecation-83273-PublicPropertiesOfTemplateService.rst [new file with mode: 0644]
typo3/sysext/install/Configuration/ExtensionScanner/Php/PropertyPublicMatcher.php

index 195d4a7..b36bb97 100644 (file)
@@ -16,6 +16,7 @@ namespace TYPO3\CMS\Core\TypoScript;
 
 use TYPO3\CMS\Backend\Utility\BackendUtility;
 use TYPO3\CMS\Core\Cache\CacheManager;
+use TYPO3\CMS\Core\Compatibility\PublicPropertyDeprecationTrait;
 use TYPO3\CMS\Core\Database\Connection;
 use TYPO3\CMS\Core\Database\ConnectionPool;
 use TYPO3\CMS\Core\Database\Query\Restriction\AbstractRestrictionContainer;
@@ -39,6 +40,29 @@ use TYPO3\CMS\Frontend\Page\PageRepository;
  */
 class TemplateService
 {
+    use PublicPropertyDeprecationTrait;
+
+    /**
+     * Properties which have been moved to protected status from public
+     * @var array
+     */
+    protected $deprecatedPublicProperties = [
+        'matchAll' => 'Using $matchAll from the outside is discouraged, as this variable is only used for internal storage.',
+        'whereClause' => 'Using $whereClause is discouraged, as this has been superseeded by Doctrine DBAL API.',
+        'debug' => 'Using $debug is discouraged, as this option has no effect anymore.',
+        'allowedPaths' => 'Using $allowedPaths from the outside is discouraged, as this variable is only used for internal storage.',
+        'simulationHiddenOrTime' => 'Using $simulationHiddenOrTime is discouraged, as this has been superseeded by Doctrine DBAL API.',
+        'nextLevel' => 'Using $nextLevel from the outside is discouraged, as this variable is only used for internal storage.',
+        'rootId' => 'Using $rootId from the outside is discouraged, as this variable is only used for internal storage.',
+        'absoluteRootLine' => 'Using $absoluteRootLine from the outside is discouraged, as this variable is only used for internal storage.',
+        'outermostRootlineIndexWithTemplate' => 'Using $outermostRootlineIndexWithTemplate from the outside is discouraged, as this variable is only used for internal storage.',
+        'rowSum' => 'Using $rowSum from the outside is discouraged, as this variable is only used for internal storage.',
+        'sitetitle' => 'Using $sitetitle from the outside is discouraged, as this variable is only used for internal storage.',
+        'sectionsMatch' => 'Using $sectionsMatch from the outside is discouraged, as this variable is only used for internal storage.',
+        'frames' => 'Using $frames from the outside is discouraged, as this variable is only used for internal storage.',
+        'MPmap' => 'Using $frames from the outside is discouraged, as this variable is only used for internal storage.',
+    ];
+
     /**
      * option to enable logging, time-tracking (FE-only)
      * usually, this is only done when
@@ -76,7 +100,7 @@ class TemplateService
      *
      * @var bool
      */
-    public $matchAll = false;
+    protected $matchAll = false;
 
     /**
      * Externally set breakpoints (used by Backend Modules)
@@ -105,12 +129,12 @@ class TemplateService
      *
      * @var string
      */
-    public $whereClause = '';
+    protected $whereClause = '';
 
     /**
      * @var bool
      */
-    public $debug = false;
+    protected $debug = false;
 
     /**
      * This is the only paths (relative!!) that are allowed for resources in TypoScript.
@@ -118,14 +142,14 @@ class TemplateService
      *
      * @var array
      */
-    public $allowedPaths = [];
+    protected $allowedPaths = [];
 
     /**
      * See init(); Set if preview of some kind is enabled.
      *
      * @var int
      */
-    public $simulationHiddenOrTime = 0;
+    protected $simulationHiddenOrTime = 0;
 
     /**
      * Set, if the TypoScript template structure is loaded and OK, see ->start()
@@ -179,21 +203,21 @@ class TemplateService
      *
      * @var array
      */
-    public $hierarchyInfoToRoot = [];
+    protected $hierarchyInfoToRoot = [];
 
     /**
      * Next-level flag (see runThroughTemplates())
      *
      * @var int
      */
-    public $nextLevel = 0;
+    protected $nextLevel = 0;
 
     /**
      * The Page UID of the root page
      *
      * @var int
      */
-    public $rootId;
+    protected $rootId;
 
     /**
      * The rootline from current page to the root page
@@ -207,28 +231,28 @@ class TemplateService
      *
      * @var array
      */
-    public $absoluteRootLine;
+    protected $absoluteRootLine;
 
     /**
      * A pointer to the last entry in the rootline where a template was found.
      *
      * @var int
      */
-    public $outermostRootlineIndexWithTemplate = 0;
+    protected $outermostRootlineIndexWithTemplate = 0;
 
     /**
      * Array of arrays with title/uid of templates in hierarchy
      *
      * @var array
      */
-    public $rowSum;
+    protected $rowSum;
 
     /**
      * The current site title field.
      *
      * @var string
      */
-    public $sitetitle = '';
+    protected $sitetitle = '';
 
     /**
      * Tracking all conditions found during parsing of TypoScript. Used for the "all" key in currentPageData
@@ -242,7 +266,7 @@ class TemplateService
      *
      * @var array
      */
-    public $sectionsMatch;
+    protected $sectionsMatch;
 
     /**
      * Used by Backend only (Typoscript Template Analyzer)
@@ -278,14 +302,14 @@ class TemplateService
      *
      * @var array
      */
-    public $frames = [];
+    protected $frames = [];
 
     /**
      * Contains mapping of Page id numbers to MP variables.
      *
      * @var string
      */
-    public $MPmap = '';
+    protected $MPmap = '';
 
     /**
      * Indicator that extension statics are processed.
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Deprecation-83273-PublicPropertiesOfTemplateService.rst b/typo3/sysext/core/Documentation/Changelog/master/Deprecation-83273-PublicPropertiesOfTemplateService.rst
new file mode 100644 (file)
index 0000000..4fe0062
--- /dev/null
@@ -0,0 +1,50 @@
+.. include:: ../../Includes.txt
+
+==========================================================
+Deprecation: #83273 - Public properties of TemplateService
+==========================================================
+
+See :issue:`83273`
+
+Description
+===========
+
+The following properties within the PHP class :php:`TYPO3\CMS\Core\TypoScript\TemplateService`
+have been marked as deprecated, as they were moved from public access to protected access:
+
+* matchAll
+* whereClause
+* debug
+* allowedPaths
+* simulationHiddenOrTime
+* nextLevel
+* rootId
+* absoluteRootLine
+* outermostRootlineIndexWithTemplate
+* rowSum
+* sitetitle
+* sectionsMatch
+* frames
+* MPmap
+
+They should only be accessed from within the PHP class itself.
+
+
+Impact
+======
+
+Accessing any of the properties directly within PHP will trigger a deprecation warning.
+
+
+Affected Installations
+======================
+
+Extensions accessing one of the previously public properties directly.
+
+
+Migration
+=========
+
+Remove the PHP calls and either extend the PHP class to your own needs or avoid accessing these properties.
+
+.. index:: Frontend, PHP-API, FullyScanned
\ No newline at end of file
index 9532841..fb001f0 100644 (file)
@@ -241,4 +241,74 @@ return [
             'Deprecation-81318-PublicPropertiesOfPageRepository.rst',
         ],
     ],
+    'TYPO3\CMS\Core\TypoScript\TemplateService->matchAll' => [
+        'restFiles' => [
+            'Deprecation-83273-PublicPropertiesOfTemplateService.rst',
+        ],
+    ],
+    'TYPO3\CMS\Core\TypoScript\TemplateService->whereClause' => [
+        'restFiles' => [
+            'Deprecation-83273-PublicPropertiesOfTemplateService.rst',
+        ],
+    ],
+    'TYPO3\CMS\Core\TypoScript\TemplateService->debug' => [
+        'restFiles' => [
+            'Deprecation-83273-PublicPropertiesOfTemplateService.rst',
+        ],
+    ],
+    'TYPO3\CMS\Core\TypoScript\TemplateService->allowedPaths' => [
+        'restFiles' => [
+            'Deprecation-83273-PublicPropertiesOfTemplateService.rst',
+        ],
+    ],
+    'TYPO3\CMS\Core\TypoScript\TemplateService->simulationHiddenOrTime' => [
+        'restFiles' => [
+            'Deprecation-83273-PublicPropertiesOfTemplateService.rst',
+        ],
+    ],
+    'TYPO3\CMS\Core\TypoScript\TemplateService->nextLevel' => [
+        'restFiles' => [
+            'Deprecation-83273-PublicPropertiesOfTemplateService.rst',
+        ],
+    ],
+    'TYPO3\CMS\Core\TypoScript\TemplateService->rootId' => [
+        'restFiles' => [
+            'Deprecation-83273-PublicPropertiesOfTemplateService.rst',
+        ],
+    ],
+    'TYPO3\CMS\Core\TypoScript\TemplateService->absoluteRootLine' => [
+        'restFiles' => [
+            'Deprecation-83273-PublicPropertiesOfTemplateService.rst',
+        ],
+    ],
+    'TYPO3\CMS\Core\TypoScript\TemplateService->outermostRootlineIndexWithTemplate' => [
+        'restFiles' => [
+            'Deprecation-83273-PublicPropertiesOfTemplateService.rst',
+        ],
+    ],
+    'TYPO3\CMS\Core\TypoScript\TemplateService->rowSum' => [
+        'restFiles' => [
+            'Deprecation-83273-PublicPropertiesOfTemplateService.rst',
+        ],
+    ],
+    'TYPO3\CMS\Core\TypoScript\TemplateService->sitetitle' => [
+        'restFiles' => [
+            'Deprecation-83273-PublicPropertiesOfTemplateService.rst',
+        ],
+    ],
+    'TYPO3\CMS\Core\TypoScript\TemplateService->sectionsMatch' => [
+        'restFiles' => [
+            'Deprecation-83273-PublicPropertiesOfTemplateService.rst',
+        ],
+    ],
+    'TYPO3\CMS\Core\TypoScript\TemplateService->frames' => [
+        'restFiles' => [
+            'Deprecation-83273-PublicPropertiesOfTemplateService.rst',
+        ],
+    ],
+    'TYPO3\CMS\Core\TypoScript\TemplateService->MPmap' => [
+        'restFiles' => [
+            'Deprecation-83273-PublicPropertiesOfTemplateService.rst',
+        ],
+    ],
 ];