[!!!][TASK] Deprecate all client related condition matchers 20/31820/4
authorSascha Egerer <sascha.egerer@dkd.de>
Fri, 25 Jul 2014 16:45:03 +0000 (18:45 +0200)
committerGeorg Ringer <georg.ringer@gmail.com>
Mon, 8 Sep 2014 13:17:44 +0000 (15:17 +0200)
Conditions that depend on client details are unlovely for a number
of reasons:

* Per condition or permutation of conditions that matches, the frontend
  creates a different cache entry. This can lead to a very high number
  of cache entrys per page
* Most usual conditions for specific browsers can nowadays turned into
  conditional CSS includes
* Conditions based on browser or clients on server side are
  bad practice.
* If conditions for specific clients or devices are still needed, they
  should be done with a userFunc condition and a project like WURFL
  that keep the device information more recent than the current core
  code like matching AMIGA
* Setups like reverse proxies give additional headaches with these
  types of conditions
* All client related condition types are deprecated with this patch.

Resolves: #60574
Releases: 6.3
Change-Id: Ib9e78748e87a2f7e04fa1b606415ad1d8d302374
Reviewed-on: http://review.typo3.org/31820
Reviewed-by: Susanne Moog <typo3@susannemoog.de>
Tested-by: Susanne Moog <typo3@susannemoog.de>
Reviewed-by: Markus Klein <klein.t3@reelworx.at>
Tested-by: Markus Klein <klein.t3@reelworx.at>
Reviewed-by: Georg Ringer <georg.ringer@gmail.com>
Tested-by: Georg Ringer <georg.ringer@gmail.com>
typo3/sysext/core/Documentation/Changelog/master/Deprecation-60574-ClientRelatedConditions.rst [new file with mode: 0644]

index 5de84a6..6e8adcb 100644 (file)
@@ -187,7 +187,7 @@ abstract class AbstractConditionMatcher {
-        * Evaluates a TypoScript condition given as input, eg. "[browser=net][...(other conditions)...]"
+        * Evaluates a TypoScript condition given as input, eg. "[applicationContext = Production][...(other condition)...]"
         * @param string $key The condition to match against its criterias.
         * @param string $value
@@ -195,6 +195,9 @@ abstract class AbstractConditionMatcher {
        protected function evaluateConditionCommon($key, $value) {
                if (GeneralUtility::inList('browser,version,system,useragent', strtolower($key))) {
+                       GeneralUtility::deprecationLog(
+                               'Usage of client related conditions (browser, version, system, useragent) is deprecated since 6.3.'
+                       );
                        $browserInfo = $this->getBrowserInfo(GeneralUtility::getIndpEnv('HTTP_USER_AGENT'));
                $keyParts = GeneralUtility::trimExplode('|', $key);
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Deprecation-60574-ClientRelatedConditions.rst b/typo3/sysext/core/Documentation/Changelog/master/Deprecation-60574-ClientRelatedConditions.rst
new file mode 100644 (file)
index 0000000..9c38ca2
--- /dev/null
@@ -0,0 +1,38 @@
+Deprecation: #60574 - Client Related Conditions
+Conditions that depend on client details are unlovely for a number
+of reasons:
+* Per condition or permutation of conditions that matches, the frontend
+  creates a different cache entry. This can lead to a very high number
+  of cache entrys per page
+* Conditions based on browser or clients on server side are bad practice.
+* The device information in the core is outdated (for example it is possible to match "AMIGA")
+* Setups like reverse proxies give additional headaches with these types of conditions
+* All client related condition types are deprecated with this patch.
+Usage of client related TypoScript conditions will result in a deprecation log message. Client related conditions
+are browser, version, system and useragent.
+Affected installations
+Installations using TypoScript conditions for browser, version, system or useragent.
+* Most usual conditions for specific browsers can nowadays be turned into conditional CSS includes
+* Use libraries such as modernizr for browser support
+* If conditions for specific clients or devices are still needed, they
+  should be done with a userFunc condition and a project like WURFL
+  that keep the device information more recent than the current core
+  code like matching AMIGA
\ No newline at end of file