[BUGFIX] Deprecate support mysqli_result in PageLayoutView::getResult 52/50052/4
authorNicole Cordes <typo3@cordes.co>
Wed, 28 Sep 2016 12:10:07 +0000 (14:10 +0200)
committerMorton Jonuschat <m.jonuschat@mojocode.de>
Wed, 5 Oct 2016 14:41:35 +0000 (16:41 +0200)
Due to change https://review.typo3.org/48240/ the method only supports
Doctrine Statement objects. An extension which uses the DatabaseConnection
is not able to use this function anymore. This patch re-adds the support
for mysqli_result objects and throws a deprecaction message as information.

Resolves: #78096
Releases: master
Change-Id: I921fccb9132af2426627d8918c782323878c373d
Reviewed-on: https://review.typo3.org/50052
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Markus Klein <markus.klein@typo3.org>
Tested-by: Markus Klein <markus.klein@typo3.org>
Reviewed-by: Markus Sommer <markussom@posteo.de>
Tested-by: Markus Sommer <markussom@posteo.de>
Reviewed-by: Morton Jonuschat <m.jonuschat@mojocode.de>
Tested-by: Morton Jonuschat <m.jonuschat@mojocode.de>
typo3/sysext/backend/Classes/View/PageLayoutView.php
typo3/sysext/core/Documentation/Changelog/master/Deprecation-78096-PageLayoutViewGetResultWithMysqliResultObject.rst [new file with mode: 0644]

index 4829699..0412420 100644 (file)
@@ -14,6 +14,7 @@ namespace TYPO3\CMS\Backend\View;
  * The TYPO3 project - inspiring people to share!
  */
 
+use Doctrine\DBAL\Driver\Statement;
 use TYPO3\CMS\Backend\Controller\Page\LocalizationController;
 use TYPO3\CMS\Backend\Controller\PageLayoutController;
 use TYPO3\CMS\Backend\Utility\BackendUtility;
@@ -2149,15 +2150,18 @@ class PageLayoutView extends \TYPO3\CMS\Recordlist\RecordList\AbstractDatabaseRe
     /**
      * Traverse the result pointer given, adding each record to array and setting some internal values at the same time.
      *
-     * @param \Doctrine\DBAL\Driver\Statement $result MySQLi result object / DBAL object
+     * @param Statement|\mysqli_result $result DBAL Statement or MySQLi result object
      * @param string $table Table name defaulting to tt_content
      * @return array The selected rows returned in this array.
      */
-    public function getResult(\Doctrine\DBAL\Driver\Statement $result, string $table = 'tt_content'): array
+    public function getResult($result, string $table = 'tt_content'): array
     {
+        if ($result instanceof \mysqli_result) {
+            GeneralUtility::deprecationLog('Using \TYPO3\CMS\Backend\View\PageLayoutView::getResult with a mysqli_result object is deprecated since TYPO3 CMS 8 and will be removed in TYPO3 CMS 9');
+        }
         $output = [];
         // Traverse the result:
-        while ($row = $result->fetch()) {
+        while ($row = ($result instanceof Statement ? $result->fetch() : $result->fetch_assoc())) {
             BackendUtility::workspaceOL($table, $row, -99, true);
             if ($row) {
                 // Add the row to the array:
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Deprecation-78096-PageLayoutViewGetResultWithMysqliResultObject.rst b/typo3/sysext/core/Documentation/Changelog/master/Deprecation-78096-PageLayoutViewGetResultWithMysqliResultObject.rst
new file mode 100644 (file)
index 0000000..635671b
--- /dev/null
@@ -0,0 +1,30 @@
+
+.. include:: ../../Includes.txt
+
+=====================================================================================
+Deprecation: #78096 - Deprecated PageLayoutView::getResult with mysqli_result objects
+=====================================================================================
+
+See :issue:`78096`
+
+Description
+===========
+
+The method :php:`PageLayoutView::getResult` has been deprecated with the usage of mysqli_result objects as first parameter.
+
+Impact
+======
+
+Using the mentioned method with a mysqli_result object will trigger a deprecation log entry.
+
+
+Affected Installations
+======================
+
+Any TYPO3 installation using extensions which call :php:`PageLayoutView::getResult` with mysqli_result objects.
+
+
+Migration
+=========
+
+The extension should migrate to use the Doctrine API for database queries.