[BUGFIX] Fix exception in QuickEdit mode for empty pages 45/50945/3
authorManuel Selbach <manuel_selbach@yahoo.de>
Thu, 8 Dec 2016 22:22:15 +0000 (23:22 +0100)
committerMarkus Klein <markus.klein@typo3.org>
Tue, 13 Dec 2016 04:30:22 +0000 (05:30 +0100)
If there is no content on a page the parameter $this->eRParts[1] will be
set to e.g. /new/1 which is not an integer value and it will throw an
exception here on certain dbms, thus let's check that before as there could
not be a history on a new record and skip the query to prevent the error.

Change-Id: If33c5de067b7685e5723ceb7aa1586640abc99d8
Resolves: #78925
Releases: master, 7.6, 6.2
Reviewed-on: https://review.typo3.org/50910
Reviewed-on: https://review.typo3.org/50945
Reviewed-by: Markus Klein <markus.klein@typo3.org>
Tested-by: Markus Klein <markus.klein@typo3.org>
typo3/sysext/backend/Classes/Controller/PageLayoutController.php

index b3a59f2..fb4da47 100644 (file)
@@ -728,8 +728,17 @@ class PageLayoutController
         $this->deleteButton = MathUtility::canBeInterpretedAsInteger($this->eRParts[1]) && $edit_record && ($tableName !== 'pages' && $this->EDIT_CONTENT || $tableName === 'pages' && $this->CALC_PERMS & Permission::PAGE_DELETE);
         // If undo-button should be rendered (depends on available items in sys_history)
         $this->undoButton = false;
-        $undoRes = $databaseConnection->exec_SELECTquery('tstamp', 'sys_history', 'tablename=' . $databaseConnection->fullQuoteStr($tableName, 'sys_history') . ' AND recuid=' . (int)$this->eRParts[1], '', 'tstamp DESC', '1');
-        if ($this->undoButtonR = $databaseConnection->sql_fetch_assoc($undoRes)) {
+
+        // if there is no content on a page
+        // the parameter $this->eRParts[1] will be set to e.g. /new/1
+        // which is not an integer value and it will throw an exception here on certain dbms
+        // thus let's check that before as there cannot be a history for a new record
+        $this->undoButtonR = false;
+        if (MathUtility::canBeInterpretedAsInteger($this->eRParts[1])) {
+            $undoRes = $databaseConnection->exec_SELECTquery('tstamp', 'sys_history', 'tablename=' . $databaseConnection->fullQuoteStr($tableName, 'sys_history') . ' AND recuid=' . (int)$this->eRParts[1], '', 'tstamp DESC', '1');
+            $this->undoButtonR = $databaseConnection->sql_fetch_assoc($undoRes);
+        }
+        if ($this->undoButtonR) {
             $this->undoButton = true;
         }
         // Setting up the Return URL for coming back to THIS script (if links take the user to another script)