[BUGFIX] Add query restrictions for all tables in query 02/51902/5
authorTymoteusz Motylewski <t.motylewski@gmail.com>
Tue, 28 Feb 2017 15:51:01 +0000 (16:51 +0100)
committerGeorg Ringer <georg.ringer@gmail.com>
Wed, 1 Mar 2017 08:26:06 +0000 (09:26 +0100)
QueryBuilder::getQueriedTables now returns an array with table
alias as a key and table name as value.
If a table doesn't have an alias, both key and value are containing
table name.

This change is needed to make query restriction classes add restrictions
for all tables in case the self inner join is made.
A test covering the case was added to QueryBuilderTest.

Releases: master
Resolves: #79615
Change-Id: Ibf797189334ed86db0fce1a4ef3f0898cb0ada11
Reviewed-on: https://review.typo3.org/51902
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Morton Jonuschat <m.jonuschat@mojocode.de>
Tested-by: Morton Jonuschat <m.jonuschat@mojocode.de>
Reviewed-by: Patrick Broens <patrick@patrickbroens.nl>
Tested-by: Patrick Broens <patrick@patrickbroens.nl>
Reviewed-by: Georg Ringer <georg.ringer@gmail.com>
Tested-by: Georg Ringer <georg.ringer@gmail.com>
22 files changed:
typo3/sysext/core/Classes/Database/Query/QueryBuilder.php
typo3/sysext/core/Classes/Database/Query/Restriction/AbstractRestrictionContainer.php
typo3/sysext/core/Classes/Database/Query/Restriction/BackendWorkspaceRestriction.php
typo3/sysext/core/Classes/Database/Query/Restriction/DeletedRestriction.php
typo3/sysext/core/Classes/Database/Query/Restriction/EndTimeRestriction.php
typo3/sysext/core/Classes/Database/Query/Restriction/FrontendGroupRestriction.php
typo3/sysext/core/Classes/Database/Query/Restriction/FrontendRestrictionContainer.php
typo3/sysext/core/Classes/Database/Query/Restriction/FrontendWorkspaceRestriction.php
typo3/sysext/core/Classes/Database/Query/Restriction/HiddenRestriction.php
typo3/sysext/core/Classes/Database/Query/Restriction/RootLevelRestriction.php
typo3/sysext/core/Classes/Database/Query/Restriction/StartTimeRestriction.php
typo3/sysext/core/Tests/Unit/Database/Query/QueryBuilderTest.php
typo3/sysext/core/Tests/Unit/Database/Query/Restriction/BackendWorkspaceRestrictionTest.php
typo3/sysext/core/Tests/Unit/Database/Query/Restriction/DefaultRestrictionContainerTest.php
typo3/sysext/core/Tests/Unit/Database/Query/Restriction/DeletedRestrictionTest.php
typo3/sysext/core/Tests/Unit/Database/Query/Restriction/EndTimeRestrictionTest.php
typo3/sysext/core/Tests/Unit/Database/Query/Restriction/FrontendGroupRestrictionTest.php
typo3/sysext/core/Tests/Unit/Database/Query/Restriction/FrontendRestrictionContainerTest.php
typo3/sysext/core/Tests/Unit/Database/Query/Restriction/FrontendWorkspaceRestrictionTest.php
typo3/sysext/core/Tests/Unit/Database/Query/Restriction/HiddenRestrictionTest.php
typo3/sysext/core/Tests/Unit/Database/Query/Restriction/RootLevelRestrictionTest.php
typo3/sysext/core/Tests/Unit/Database/Query/Restriction/StartTimeRestrictionTest.php

index 4b2ab35..c820d03 100644 (file)
@@ -1031,7 +1031,7 @@ class QueryBuilder
      * Return all tables/aliases used in FROM or JOIN query parts from the query builder.
      *
      * The table names are automatically unquoted. This is a helper for to build the list
-     * of queried tables for the QueryRestrictionBuilder.
+     * of queried tables for the AbstractRestrictionContainer.
      *
      * @return string[]
      */
@@ -1042,16 +1042,16 @@ class QueryBuilder
         // Loop through all FROM tables
         foreach ($this->getQueryPart('from') as $from) {
             $tableName = $this->unquoteSingleIdentifier($from['table']);
-            $tableAlias = isset($from['alias']) ? $this->unquoteSingleIdentifier($from['alias']) : null;
-            $queriedTables[$tableName] = $tableAlias;
+            $tableAlias = isset($from['alias']) ? $this->unquoteSingleIdentifier($from['alias']) : $tableName;
+            $queriedTables[$tableAlias] = $tableName;
         }
 
         // Loop through all JOIN tables
         foreach ($this->getQueryPart('join') as $fromTable => $joins) {
             foreach ($joins as $join) {
                 $tableName = $this->unquoteSingleIdentifier($join['joinTable']);
-                $tableAlias = isset($join['joinAlias']) ? $this->unquoteSingleIdentifier($join['joinAlias']) : null;
-                $queriedTables[$tableName] = $tableAlias;
+                $tableAlias = isset($join['joinAlias']) ? $this->unquoteSingleIdentifier($join['joinAlias']) : $tableName;
+                $queriedTables[$tableAlias] = $tableName;
             }
         }
 
index b6772bb..6ec9541 100644 (file)
@@ -33,7 +33,7 @@ abstract class AbstractRestrictionContainer implements QueryRestrictionContainer
      * Main method to build expressions for given tables.
      * Iterating over all registered expressions and combine them with AND
      *
-     * @param array $queriedTables Array of tables, where array key is table name and value potentially an alias
+     * @param array $queriedTables Array of tables, where array key is table alias and value is a table name
      * @param ExpressionBuilder $expressionBuilder Expression builder instance to add restrictions with
      * @return CompositeExpression The result of query builder expression(s)
      */
index 82e31e9..245d35b 100644 (file)
@@ -47,26 +47,25 @@ class BackendWorkspaceRestriction implements QueryRestrictionInterface
     /**
      * Main method to build expressions for given tables
      *
-     * @param array $queriedTables Array of tables, where array key is table name and value potentially an alias
+     * @param array $queriedTables Array of tables, where array key is table alias and value is a table name
      * @param ExpressionBuilder $expressionBuilder Expression builder instance to add restrictions with
      * @return CompositeExpression The result of query builder expression(s)
      */
     public function buildExpression(array $queriedTables, ExpressionBuilder $expressionBuilder): CompositeExpression
     {
         $constraints = [];
-        foreach ($queriedTables as $tableName => $tableAlias) {
+        foreach ($queriedTables as $tableAlias => $tableName) {
             $workspaceEnabled = $GLOBALS['TCA'][$tableName]['ctrl']['versioningWS'] ?? null;
             if (!empty($workspaceEnabled)) {
-                $tablePrefix = $tableAlias ?: $tableName;
                 $workspaceIdExpression = $expressionBuilder->eq(
-                    $tablePrefix . '.t3ver_wsid',
+                    $tableAlias . '.t3ver_wsid',
                     (int)$this->workspaceId
                 );
                 if ($this->includeRowsForWorkspaceOverlay) {
                     $constraints[] = $expressionBuilder->orX(
                         $workspaceIdExpression,
                         $expressionBuilder->lte(
-                            $tablePrefix . '.t3ver_state',
+                            $tableAlias . '.t3ver_state',
                             // Trigger __toString(), then cast int
                             (int)(string)new VersionState(VersionState::DEFAULT_STATE)
                         )
@@ -75,7 +74,7 @@ class BackendWorkspaceRestriction implements QueryRestrictionInterface
                     $comparisonExpression = $this->workspaceId === 0 ? 'neq' : 'eq';
                     $constraints[] = $workspaceIdExpression;
                     $constraints[] = $expressionBuilder->{$comparisonExpression}(
-                        $tablePrefix . '.pid',
+                        $tableAlias . '.pid',
                         -1
                     );
                 }
index b3c110a..b361627 100644 (file)
@@ -28,19 +28,18 @@ class DeletedRestriction implements QueryRestrictionInterface
      * Main method to build expressions for given tables
      * Evaluates the ctrl/delete flag of the table and adds the according restriction if set
      *
-     * @param array $queriedTables Array of tables, where array key is table name and value potentially an alias
+     * @param array $queriedTables Array of tables, where array key is table alias and value is a table name
      * @param ExpressionBuilder $expressionBuilder Expression builder instance to add restrictions with
      * @return CompositeExpression The result of query builder expression(s)
      */
     public function buildExpression(array $queriedTables, ExpressionBuilder $expressionBuilder): CompositeExpression
     {
         $constraints = [];
-        foreach ($queriedTables as $tableName => $tableAlias) {
+        foreach ($queriedTables as $tableAlias => $tableName) {
             $deletedFieldName = $GLOBALS['TCA'][$tableName]['ctrl']['delete'] ?? null;
             if (!empty($deletedFieldName)) {
-                $tablePrefix = $tableAlias ?: $tableName;
                 $constraints[] = $expressionBuilder->eq(
-                    $tablePrefix . '.' . $deletedFieldName,
+                    $tableAlias . '.' . $deletedFieldName,
                     0
                 );
             }
index 5e4db2f..dfd30c1 100644 (file)
@@ -40,7 +40,7 @@ class EndTimeRestriction implements QueryRestrictionInterface
      * Main method to build expressions for given tables
      * Evaluates the ctrl/enablecolumns/endtime flag of the table and adds the according restriction if set
      *
-     * @param array $queriedTables Array of tables, where array key is table name and value potentially an alias
+     * @param array $queriedTables Array of tables, where array key is table alias and value is a table name
      * @param ExpressionBuilder $expressionBuilder Expression builder instance to add restrictions with
      * @return CompositeExpression The result of query builder expression(s)
      * @throws \RuntimeException
@@ -48,7 +48,7 @@ class EndTimeRestriction implements QueryRestrictionInterface
     public function buildExpression(array $queriedTables, ExpressionBuilder $expressionBuilder): CompositeExpression
     {
         $constraints = [];
-        foreach ($queriedTables as $tableName => $tableAlias) {
+        foreach ($queriedTables as $tableAlias => $tableName) {
             $endTimeFieldName = $GLOBALS['TCA'][$tableName]['ctrl']['enablecolumns']['endtime'] ?? null;
             if (!empty($endTimeFieldName)) {
                 if (empty($this->accessTimeStamp)) {
@@ -57,7 +57,7 @@ class EndTimeRestriction implements QueryRestrictionInterface
                         1462821084
                     );
                 }
-                $fieldName = ($tableAlias ?: $tableName) . '.' . $endTimeFieldName;
+                $fieldName = $tableAlias . '.' . $endTimeFieldName;
                 $constraints[] = $expressionBuilder->orX(
                     $expressionBuilder->eq($fieldName, 0),
                     $expressionBuilder->gt($fieldName, (int)$this->accessTimeStamp)
index b8db8ed..44e19c5 100644 (file)
@@ -40,17 +40,17 @@ class FrontendGroupRestriction implements QueryRestrictionInterface
      * Main method to build expressions for given tables
      * Evaluates the ctrl/enablecolumns/fe_group flag of the table and adds the according restriction if set
      *
-     * @param array $queriedTables Array of tables, where array key is table name and value potentially an alias
+     * @param array $queriedTables Array of tables, where array key is table alias and value is a table name
      * @param ExpressionBuilder $expressionBuilder Expression builder instance to add restrictions with
      * @return CompositeExpression The result of query builder expression(s)
      */
     public function buildExpression(array $queriedTables, ExpressionBuilder $expressionBuilder): CompositeExpression
     {
         $constraints = [];
-        foreach ($queriedTables as $tableName => $tableAlias) {
+        foreach ($queriedTables as $tableAlias => $tableName) {
             $groupFieldName = $GLOBALS['TCA'][$tableName]['ctrl']['enablecolumns']['fe_group'] ?? null;
             if (!empty($groupFieldName)) {
-                $fieldName = ($tableAlias ?: $tableName) . '.' . $groupFieldName;
+                $fieldName = $tableAlias . '.' . $groupFieldName;
                 // Allow records where no group access has been configured (field values NULL, 0 or empty string)
                 $constraints = [
                     $expressionBuilder->isNull($fieldName),
index 6b8ab5d..dda3df0 100644 (file)
@@ -52,7 +52,7 @@ class FrontendRestrictionContainer extends AbstractRestrictionContainer
      * Main method to build expressions for given tables
      * Iterates over all registered restrictions and removes the hidden restriction if preview is requested
      *
-     * @param array $queriedTables Array of tables, where array key is table name and value potentially an alias
+     * @param array $queriedTables Array of tables, where array key is table alias and value is a table name
      * @param ExpressionBuilder $expressionBuilder Expression builder instance to add restrictions with
      * @return CompositeExpression The result of query builder expression(s)
      */
@@ -62,7 +62,7 @@ class FrontendRestrictionContainer extends AbstractRestrictionContainer
         /** @var TypoScriptFrontendController $typoScriptFrontendController */
         $typoScriptFrontendController = $GLOBALS['TSFE'];
         foreach ($this->restrictions as $restriction) {
-            foreach ($queriedTables as $tableName => $tableAlias) {
+            foreach ($queriedTables as $tableAlias => $tableName) {
                 $disableRestriction = false;
                 if ($restriction instanceof HiddenRestriction) {
                     // If display of hidden records is requested, we must disable the hidden restriction.
index 652c444..2c1c9f6 100644 (file)
@@ -55,35 +55,34 @@ class FrontendWorkspaceRestriction implements QueryRestrictionInterface
      * Main method to build expressions for given tables
      * Evaluates the ctrl/versioningWS flag of the table and adds various workspace related restrictions if set
      *
-     * @param array $queriedTables Array of tables, where array key is table name and value potentially an alias
+     * @param array $queriedTables Array of tables, where array key is table alias and value is a table name
      * @param ExpressionBuilder $expressionBuilder Expression builder instance to add restrictions with
      * @return CompositeExpression The result of query builder expression(s)
      */
     public function buildExpression(array $queriedTables, ExpressionBuilder $expressionBuilder): CompositeExpression
     {
         $constraints = [];
-        foreach ($queriedTables as $tableName => $tableAlias) {
+        foreach ($queriedTables as $tableAlias => $tableName) {
             $workspaceEnabled = $GLOBALS['TCA'][$tableName]['ctrl']['versioningWS'] ?? null;
             if (!empty($workspaceEnabled)) {
-                $tablePrefix = $tableAlias ?: $tableName;
                 if (!$this->includeRowsForWorkspacePreview) {
                     // Filter out placeholder records (new/moved/deleted items)
                     // in case we are NOT in a versioning preview (That means we are online!)
                     $constraints[] = $expressionBuilder->lte(
-                        $tablePrefix . '.t3ver_state',
+                        $tableAlias . '.t3ver_state',
                         // Trigger __toString(), then cast int
                         (int)(string)new VersionState(VersionState::DEFAULT_STATE)
                     );
                 } elseif ($tableName !== 'pages') {
                     // Show only records of the live and current workspace in case we are in a versioning preview
                     $constraints[] = $expressionBuilder->orX(
-                        $expressionBuilder->eq($tablePrefix . '.t3ver_wsid', 0),
-                        $expressionBuilder->eq($tablePrefix . '.t3ver_wsid', (int)$this->workspaceId)
+                        $expressionBuilder->eq($tableAlias . '.t3ver_wsid', 0),
+                        $expressionBuilder->eq($tableAlias . '.t3ver_wsid', (int)$this->workspaceId)
                     );
                 }
                 // Filter out versioned records
                 if ($this->enforceLiveRowsOnly) {
-                    $constraints[] = $expressionBuilder->neq($tablePrefix . '.pid', -1);
+                    $constraints[] = $expressionBuilder->neq($tableAlias . '.pid', -1);
                 }
             }
         }
index 9e99410..29c9109 100644 (file)
@@ -27,19 +27,18 @@ class HiddenRestriction implements QueryRestrictionInterface
      * Main method to build expressions for given tables
      * Evaluates the ctrl/enablecolumns/disabled flag of the table and adds the according restriction if set
      *
-     * @param array $queriedTables Array of tables, where array key is table name and value potentially an alias
+     * @param array $queriedTables Array of tables, where array key is table alias and value is a table name
      * @param ExpressionBuilder $expressionBuilder Expression builder instance to add restrictions with
      * @return CompositeExpression The result of query builder expression(s)
      */
     public function buildExpression(array $queriedTables, ExpressionBuilder $expressionBuilder): CompositeExpression
     {
         $constraints = [];
-        foreach ($queriedTables as $tableName => $tableAlias) {
+        foreach ($queriedTables as $tableAlias => $tableName) {
             $hiddenFieldName = $GLOBALS['TCA'][$tableName]['ctrl']['enablecolumns']['disabled'] ?? null;
             if (!empty($hiddenFieldName)) {
-                $tablePrefix = $tableAlias ?: $tableName;
                 $constraints[] = $expressionBuilder->eq(
-                    $tablePrefix . '.' . $hiddenFieldName,
+                    $tableAlias . '.' . $hiddenFieldName,
                     0
                 );
             }
index 7b25ad5..fbafc4b 100644 (file)
@@ -39,18 +39,17 @@ class RootLevelRestriction implements QueryRestrictionInterface
     /**
      * Main method to build expressions for given tables
      *
-     * @param array $queriedTables Array of tables, where array key is table name and value potentially an alias
+     * @param array $queriedTables Array of tables, where array key is table alias and value is a table name
      * @param ExpressionBuilder $expressionBuilder Expression builder instance to add restrictions with
      * @return CompositeExpression The result of query builder expression(s)
      */
     public function buildExpression(array $queriedTables, ExpressionBuilder $expressionBuilder): CompositeExpression
     {
         $constraints = [];
-        foreach ($queriedTables as $tableName => $tableAlias) {
-            $tablePrefix = $tableAlias ?: $tableName;
-            if (empty($this->tableNames) || in_array($tablePrefix, $this->tableNames, true)) {
+        foreach ($queriedTables as $tableAlias => $tableName) {
+            if (empty($this->tableNames) || in_array($tableAlias, $this->tableNames, true)) {
                 $constraints[] = $expressionBuilder->eq(
-                    $tablePrefix . '.pid',
+                    $tableAlias . '.pid',
                     0
                 );
             }
index 49fc798..2dda0fa 100644 (file)
@@ -40,7 +40,7 @@ class StartTimeRestriction implements QueryRestrictionInterface
      * Main method to build expressions for given tables
      * Evaluates the ctrl/enablecolumns/starttime flag of the table and adds the according restriction if set
      *
-     * @param array $queriedTables Array of tables, where array key is table name and value potentially an alias
+     * @param array $queriedTables Array of tables, where array key is table alias and value is a table name
      * @param ExpressionBuilder $expressionBuilder Expression builder instance to add restrictions with
      * @return CompositeExpression The result of query builder expression(s)
      * @throws \RuntimeException
@@ -48,7 +48,7 @@ class StartTimeRestriction implements QueryRestrictionInterface
     public function buildExpression(array $queriedTables, ExpressionBuilder $expressionBuilder): CompositeExpression
     {
         $constraints = [];
-        foreach ($queriedTables as $tableName => $tableAlias) {
+        foreach ($queriedTables as $tableAlias => $tableName) {
             $startTimeFieldName = $GLOBALS['TCA'][$tableName]['ctrl']['enablecolumns']['starttime'] ?? null;
             if (!empty($startTimeFieldName)) {
                 if (empty($this->accessTimeStamp)) {
@@ -57,9 +57,8 @@ class StartTimeRestriction implements QueryRestrictionInterface
                         1462820645
                     );
                 }
-                $tablePrefix = $tableAlias ?: $tableName;
                 $constraints[] = $expressionBuilder->lte(
-                    $tablePrefix . '.' . $startTimeFieldName,
+                    $tableAlias . '.' . $startTimeFieldName,
                     (int)$this->accessTimeStamp
                 );
             }
index d9f47cd..e0bc76b 100644 (file)
@@ -1079,4 +1079,36 @@ class QueryBuilderTest extends \TYPO3\TestingFramework\Core\Unit\UnitTestCase
 
         $subject->execute();
     }
+
+    /**
+     * @test
+     */
+    public function getQueriedTablesReturnsSameTableTwiceForInnerJoin()
+    {
+        $this->concreteQueryBuilder->getQueryPart('from')
+            ->shouldBeCalled()
+            ->willReturn([
+                [
+                    'table' => 'aTable',
+                ],
+            ]);
+        $this->concreteQueryBuilder->getQueryPart('join')
+            ->shouldBeCalled()
+            ->willReturn([
+                'aTable' => [
+                    [
+                        'joinType' => 'inner',
+                        'joinTable' => 'aTable',
+                        'joinAlias' => 'aTable_alias'
+                    ]
+                ]
+            ]);
+        $result = $this->callInaccessibleMethod($this->subject, 'getQueriedTables');
+
+        $expected = [
+            'aTable' => 'aTable',
+            'aTable_alias' => 'aTable'
+        ];
+        $this->assertEquals($expected, $result);
+    }
 }
index cbb4296..bdcf311 100644 (file)
@@ -36,7 +36,7 @@ class BackendWorkspaceRestrictionTest extends AbstractRestrictionTestCase
             'versioningWS' => 2,
         ];
         $subject = new BackendWorkspaceRestriction(0);
-        $expression = $subject->buildExpression(['aTable' => ''], $this->expressionBuilder);
+        $expression = $subject->buildExpression(['aTable' => 'aTable'], $this->expressionBuilder);
         $this->assertSame('("aTable"."t3ver_wsid" = 0) OR ("aTable"."t3ver_state" <= 0)', (string)$expression);
     }
 
@@ -49,7 +49,7 @@ class BackendWorkspaceRestrictionTest extends AbstractRestrictionTestCase
             'versioningWS' => 2,
         ];
         $subject = new BackendWorkspaceRestriction(42);
-        $expression = $subject->buildExpression(['aTable' => ''], $this->expressionBuilder);
+        $expression = $subject->buildExpression(['aTable' => 'aTable'], $this->expressionBuilder);
         $this->assertSame('("aTable"."t3ver_wsid" = 42) OR ("aTable"."t3ver_state" <= 0)', (string)$expression);
     }
 
@@ -62,7 +62,7 @@ class BackendWorkspaceRestrictionTest extends AbstractRestrictionTestCase
             'versioningWS' => 2,
         ];
         $subject = new BackendWorkspaceRestriction(0, false);
-        $expression = $subject->buildExpression(['aTable' => ''], $this->expressionBuilder);
+        $expression = $subject->buildExpression(['aTable' => 'aTable'], $this->expressionBuilder);
         $this->assertSame('("aTable"."t3ver_wsid" = 0) AND ("aTable"."pid" <> -1)', (string)$expression);
     }
 
@@ -75,7 +75,7 @@ class BackendWorkspaceRestrictionTest extends AbstractRestrictionTestCase
             'versioningWS' => 2,
         ];
         $subject = new BackendWorkspaceRestriction(42, false);
-        $expression = $subject->buildExpression(['aTable' => ''], $this->expressionBuilder);
+        $expression = $subject->buildExpression(['aTable' => 'aTable'], $this->expressionBuilder);
         $this->assertSame('("aTable"."t3ver_wsid" = 42) AND ("aTable"."pid" = -1)', (string)$expression);
     }
 }
index b179ebc..cad43a7 100644 (file)
@@ -42,7 +42,7 @@ class DefaultRestrictionContainerTest extends AbstractRestrictionTestCase
         ];
         $GLOBALS['SIM_ACCESS_TIME'] = 123;
         $subject = new DefaultRestrictionContainer();
-        $expression = $subject->buildExpression(['aTable' => ''], $this->expressionBuilder);
+        $expression = $subject->buildExpression(['aTable' => 'aTable'], $this->expressionBuilder);
         $more[] = $expression;
         $expression = $this->expressionBuilder->andX($expression);
 
index 11d4dd1..f7ed4a4 100644 (file)
@@ -36,7 +36,7 @@ class DeletedRestrictionTest extends AbstractRestrictionTestCase
             'delete' => 'deleted',
         ];
         $subject = new DeletedRestriction();
-        $expression = $subject->buildExpression(['aTable' => ''], $this->expressionBuilder);
+        $expression = $subject->buildExpression(['aTable' => 'aTable'], $this->expressionBuilder);
         $this->assertSame('"aTable"."deleted" = 0', (string)$expression);
     }
 }
index c437595..24e65eb 100644 (file)
@@ -43,7 +43,7 @@ class EndTimeRestrictionTest extends AbstractRestrictionTestCase
         $this->expectExceptionCode(1462821084);
 
         $subject = new EndTimeRestriction();
-        $subject->buildExpression(['aTable' => ''], $this->expressionBuilder);
+        $subject->buildExpression(['aTable' => 'aTable'], $this->expressionBuilder);
     }
 
     /**
@@ -58,7 +58,7 @@ class EndTimeRestrictionTest extends AbstractRestrictionTestCase
         ];
 
         $subject = new EndTimeRestriction(42);
-        $expression = $subject->buildExpression(['aTable' => ''], $this->expressionBuilder);
+        $expression = $subject->buildExpression(['aTable' => 'aTable'], $this->expressionBuilder);
         $this->assertSame('("aTable"."myEndTimeField" = 0) OR ("aTable"."myEndTimeField" > 42)', (string)$expression);
     }
 }
index 05718e8..410d7b9 100644 (file)
@@ -38,7 +38,7 @@ class FrontendGroupRestrictionTest extends AbstractRestrictionTestCase
             ],
         ];
         $subject = new FrontendGroupRestriction([]);
-        $expression = $subject->buildExpression(['aTable' => ''], $this->expressionBuilder);
+        $expression = $subject->buildExpression(['aTable' => 'aTable'], $this->expressionBuilder);
         $this->assertSame('("aTable"."myGroupField" IS NULL) OR ("aTable"."myGroupField" = \'\') OR ("aTable"."myGroupField" = \'0\')', (string)$expression);
     }
 
@@ -53,7 +53,7 @@ class FrontendGroupRestrictionTest extends AbstractRestrictionTestCase
             ],
         ];
         $subject = new FrontendGroupRestriction([2, 3]);
-        $expression = $subject->buildExpression(['aTable' => ''], $this->expressionBuilder);
+        $expression = $subject->buildExpression(['aTable' => 'aTable'], $this->expressionBuilder);
         $this->assertSame('("aTable"."myGroupField" IS NULL) OR ("aTable"."myGroupField" = \'\') OR ("aTable"."myGroupField" = \'0\') OR (FIND_IN_SET(\'2\', "aTable"."myGroupField")) OR (FIND_IN_SET(\'3\', "aTable"."myGroupField"))', (string)$expression);
     }
 }
index 2cf9c83..09ae82a 100644 (file)
@@ -174,7 +174,7 @@ class FrontendRestrictionContainerTest extends AbstractRestrictionTestCase
         $GLOBALS['SIM_ACCESS_TIME'] = 42;
 
         $subject = new FrontendRestrictionContainer();
-        $expression = $subject->buildExpression([$tableName => ''], $this->expressionBuilder);
+        $expression = $subject->buildExpression([$tableName => $tableName], $this->expressionBuilder);
         $this->assertSame($expectedSQL, (string)$expression);
     }
 }
index 356416e..5d54d86 100644 (file)
@@ -45,7 +45,7 @@ class FrontendWorkspaceRestrictionTest extends AbstractRestrictionTestCase
         $pageRepository->versioningPreview = false;
 
         $subject = new FrontendWorkspaceRestriction(0);
-        $expression = $subject->buildExpression(['aTable' => ''], $this->expressionBuilder);
+        $expression = $subject->buildExpression(['aTable' => 'aTable'], $this->expressionBuilder);
         $this->assertSame('("aTable"."t3ver_state" <= 0) AND ("aTable"."pid" <> -1)', (string)$expression);
     }
 
@@ -67,7 +67,7 @@ class FrontendWorkspaceRestrictionTest extends AbstractRestrictionTestCase
         $pageRepository->versioningWorkspaceId = 42;
 
         $subject = new FrontendWorkspaceRestriction(42, true);
-        $expression = $subject->buildExpression(['aTable' => ''], $this->expressionBuilder);
+        $expression = $subject->buildExpression(['aTable' => 'aTable'], $this->expressionBuilder);
         $this->assertSame('(("aTable"."t3ver_wsid" = 0) OR ("aTable"."t3ver_wsid" = 42)) AND ("aTable"."pid" <> -1)', (string)$expression);
     }
 
@@ -89,7 +89,7 @@ class FrontendWorkspaceRestrictionTest extends AbstractRestrictionTestCase
         $pageRepository->versioningWorkspaceId = 42;
 
         $subject = new FrontendWorkspaceRestriction(42, true, false);
-        $expression = $subject->buildExpression(['aTable' => ''], $this->expressionBuilder);
+        $expression = $subject->buildExpression(['aTable' => 'aTable'], $this->expressionBuilder);
         $this->assertSame('("aTable"."t3ver_wsid" = 0) OR ("aTable"."t3ver_wsid" = 42)', (string)$expression);
     }
 }
index 9938889..2815cfa 100644 (file)
@@ -38,7 +38,7 @@ class HiddenRestrictionTest extends AbstractRestrictionTestCase
             ],
         ];
         $subject = new HiddenRestriction();
-        $expression = $subject->buildExpression(['aTable' => ''], $this->expressionBuilder);
+        $expression = $subject->buildExpression(['aTable' => 'aTable'], $this->expressionBuilder);
         $this->assertSame('"aTable"."myHiddenField" = 0', (string)$expression);
     }
 }
index d2c787f..c7d4899 100644 (file)
@@ -25,7 +25,7 @@ class RootLevelRestrictionTest extends AbstractRestrictionTestCase
     public function buildRestrictionsAddsPidWhereClause()
     {
         $subject = new RootLevelRestriction();
-        $expression = $subject->buildExpression(['aTable' => ''], $this->expressionBuilder);
+        $expression = $subject->buildExpression(['aTable' => 'aTable'], $this->expressionBuilder);
         $this->assertSame('"aTable"."pid" = 0', (string)$expression);
     }
 
@@ -35,7 +35,7 @@ class RootLevelRestrictionTest extends AbstractRestrictionTestCase
     public function buildRestrictionsAddsAliasedPidWhereClause()
     {
         $subject = new RootLevelRestriction();
-        $expression = $subject->buildExpression(['aTable' => 'aTableAlias'], $this->expressionBuilder);
+        $expression = $subject->buildExpression(['aTableAlias' => 'aTable'], $this->expressionBuilder);
         $this->assertSame('"aTableAlias"."pid" = 0', (string)$expression);
     }
 
@@ -45,7 +45,7 @@ class RootLevelRestrictionTest extends AbstractRestrictionTestCase
     public function buildRestrictionsAddsPidWhereClauseIfTableIsSpecified()
     {
         $subject = new RootLevelRestriction(['aTable']);
-        $expression = $subject->buildExpression(['aTable' => ''], $this->expressionBuilder);
+        $expression = $subject->buildExpression(['aTable' => 'aTable'], $this->expressionBuilder);
         $this->assertSame('"aTable"."pid" = 0', (string)$expression);
     }
 
@@ -55,7 +55,7 @@ class RootLevelRestrictionTest extends AbstractRestrictionTestCase
     public function buildRestrictionsAddsAliasedPidWhereClauseIfAliasIsSpecified()
     {
         $subject = new RootLevelRestriction(['aTableAlias']);
-        $expression = $subject->buildExpression(['aTable' => 'aTableAlias'], $this->expressionBuilder);
+        $expression = $subject->buildExpression(['aTableAlias' => 'aTable'], $this->expressionBuilder);
         $this->assertSame('"aTableAlias"."pid" = 0', (string)$expression);
     }
 
@@ -65,7 +65,7 @@ class RootLevelRestrictionTest extends AbstractRestrictionTestCase
     public function buildRestrictionsSkipsUnrestrictedTablesIfOtherTableIsSpecifiedThanUsedInTheQuery()
     {
         $subject = new RootLevelRestriction(['aTable']);
-        $expression = $subject->buildExpression(['anotherTable' => ''], $this->expressionBuilder);
+        $expression = $subject->buildExpression(['anotherTable' => 'anotherTable'], $this->expressionBuilder);
         $this->assertSame('', (string)$expression);
     }
 }
index f2349d8..b462860 100644 (file)
@@ -43,7 +43,7 @@ class StartTimeRestrictionTest extends AbstractRestrictionTestCase
         $this->expectExceptionCode(1462820645);
 
         $subject = new StartTimeRestriction();
-        $subject->buildExpression(['aTable' => ''], $this->expressionBuilder);
+        $subject->buildExpression(['aTable' => 'aTable'], $this->expressionBuilder);
     }
 
     /**
@@ -58,7 +58,7 @@ class StartTimeRestrictionTest extends AbstractRestrictionTestCase
         ];
 
         $subject = new StartTimeRestriction(42);
-        $expression = $subject->buildExpression(['aTable' => ''], $this->expressionBuilder);
+        $expression = $subject->buildExpression(['aTable' => 'aTable'], $this->expressionBuilder);
         $this->assertSame('"aTable"."myStartTimeField" <= 42', (string)$expression);
     }
 }