[TASK] Deprecate cObj->URLqMark 82/52182/3
authorBenni Mack <benni@typo3.org>
Mon, 27 Mar 2017 14:03:54 +0000 (16:03 +0200)
committerGeorg Ringer <georg.ringer@gmail.com>
Tue, 28 Mar 2017 11:25:50 +0000 (13:25 +0200)
The method cObject->URLqMark() adds a question mark to a string
to append it. This method should not be in scope of cObject, but rather
be put in e.g. StringUtility or GeneralUtility... however, since the functionality
is rather simple, it can be achieved without any helper method as a one-liner.

Resolves: #80510
Releases: master
Change-Id: I5230c5a4e27f8ef198190defd15598023279c1c2
Reviewed-on: https://review.typo3.org/52182
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Georg Ringer <georg.ringer@gmail.com>
Tested-by: Georg Ringer <georg.ringer@gmail.com>
typo3/sysext/core/Documentation/Changelog/master/Deprecation-80510-ContentObjectRenderer-URLqMark.rst [new file with mode: 0644]
typo3/sysext/frontend/Classes/ContentObject/ContentObjectRenderer.php
typo3/sysext/frontend/Classes/ContentObject/Menu/AbstractMenuContentObject.php

diff --git a/typo3/sysext/core/Documentation/Changelog/master/Deprecation-80510-ContentObjectRenderer-URLqMark.rst b/typo3/sysext/core/Documentation/Changelog/master/Deprecation-80510-ContentObjectRenderer-URLqMark.rst
new file mode 100644 (file)
index 0000000..6b67561
--- /dev/null
@@ -0,0 +1,36 @@
+.. include:: ../../Includes.txt
+
+=====================================================
+Deprecation: #80510 - ContentObjectRenderer->URLqMark
+=====================================================
+
+See :issue:`80510`
+
+Description
+===========
+
+The PHP method php:`ContentObjectRenderer->URLqMark()` has been marked as deprecated. It was
+used to add a `?` between two strings if the first one does contain a `?` already.
+
+Its main purpose is to add query string parameters to a given URL.
+
+
+Impact
+======
+
+Calling the method above will trigger a deprecation warning.
+
+
+Affected Installations
+======================
+
+Any installation using custom extensions calling this method.
+
+
+Migration
+=========
+
+Implement this functionality with PHP's native php:`(strpos($haystack, '?') !== false ? '?' : '')`
+one-liner directly.
+
+.. index:: PHP-API
\ No newline at end of file
index 625ca50..cdf99b7 100644 (file)
@@ -5903,7 +5903,7 @@ class ContentObjectRenderer
                         if (!preg_match('/^[a-z0-9.\\-]*$/i', $targetDomain)) {
                             $targetDomain =  GeneralUtility::idnaEncode($targetDomain);
                         }
-                        $this->lastTypoLinkUrl = $this->URLqMark($absoluteUrlScheme . '://' . $targetDomain . '/index.php?id=' . $page['uid'], $addQueryParams) . $sectionMark;
+                        $this->lastTypoLinkUrl = $absoluteUrlScheme . '://' . $targetDomain . '/index.php?id=' . $page['uid'] . $addQueryParams . $sectionMark;
                     } else {
                         // Internal link or current domain's linking scheme should be used
                         // Internal target:
@@ -6947,9 +6947,11 @@ class ContentObjectRenderer
      * @param string $url Input URL
      * @param string $params URL parameters
      * @return string
+     * @deprecated since TYPO3 v8, will be removed in TYPO3 v9, please use this functionality by yourself instead of using cObj for that
      */
     public function URLqMark($url, $params)
     {
+        GeneralUtility::logDeprecatedFunction();
         if ($params && !strstr($url, '?')) {
             return $url . '?' . $params;
         } else {
index 156af2b..041198f 100644 (file)
@@ -1696,7 +1696,7 @@ abstract class AbstractMenuContentObject
         if (preg_match('/([0-9]+[\\s])?(([0-9]+)x([0-9]+))?(:.+)?/s', $LD['target'], $matches) || $targetIsType) {
             // has type?
             if ((int)$matches[1] || $targetIsType) {
-                $LD['totalURL'] = $this->parent_cObj->URLqMark($LD['totalURL'], '&type=' . ($targetIsType ?: (int)$matches[1]));
+                $LD['totalURL'] .= (strpos($LD['totalURL'], '?') === false ? '?' : '&') . 'type=' . ($targetIsType ?: (int)$matches[1]);
                 $LD['target'] = $targetIsType ? '' : trim(substr($LD['target'], strlen($matches[1]) + 1));
             }
             // Open in popup window?