[BUGFIX] Fix sql error in EXT:linkvalidator 63/49563/2
authorDaniel Windloff <daniel.jc.windloff@googlemail.com>
Tue, 23 Aug 2016 05:56:24 +0000 (07:56 +0200)
committerWouter Wolters <typo3@wouterwolters.nl>
Tue, 23 Aug 2016 19:10:49 +0000 (21:10 +0200)
If no page is selected, skip sql queries in LinkAnalyzer
getLinkStatistics.

Resolves: #77588
Releases: master, 7.6, 6.2
Change-Id: I3b45cbad6962c5327d860b182e61255018bf0e53
Reviewed-on: https://review.typo3.org/49563
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
typo3/sysext/linkvalidator/Classes/LinkAnalyzer.php

index a732af4..f61dc90 100644 (file)
@@ -133,21 +133,22 @@ class LinkAnalyzer
     public function getLinkStatistics($checkOptions = array(), $considerHidden = false)
     {
         $results = array();
-        if (!empty($checkOptions)) {
+        $pidList = implode(',', GeneralUtility::intExplode(',', $this->pidList, true));
+        if (!empty($checkOptions) && !empty($pidList)) {
             $checkKeys = array_keys($checkOptions);
             $checkLinkTypeCondition = ' AND link_type IN (\'' . implode('\',\'', $checkKeys) . '\')';
             $this->getDatabaseConnection()->exec_DELETEquery(
                 'tx_linkvalidator_link',
-                '(record_pid IN (' . $this->pidList . ')' .
-                    ' OR ( record_uid IN (' . $this->pidList . ') AND table_name like \'pages\'))' .
+                '(record_pid IN (' . $pidList . ')' .
+                    ' OR ( record_uid IN (' . $pidList . ') AND table_name like \'pages\'))' .
                     $checkLinkTypeCondition
             );
             // Traverse all configured tables
             foreach ($this->searchFields as $table => $fields) {
                 if ($table === 'pages') {
-                    $where = 'uid IN (' . $this->pidList . ')';
+                    $where = 'uid IN (' . $pidList . ')';
                 } else {
-                    $where = 'pid IN (' . $this->pidList . ')';
+                    $where = 'pid IN (' . $pidList . ')';
                 }
                 $where .= BackendUtility::deleteClause($table);
                 if (!$considerHidden) {