[BUGFIX] StorageRepository must respect 'deleted' flag 88/17588/4
authorSebastian Michaelsen <michaelsen@t3seo.de>
Fri, 18 Jan 2013 10:44:47 +0000 (11:44 +0100)
committerChristian Kuhn <lolli@schwarzbu.ch>
Fri, 1 Feb 2013 14:02:07 +0000 (15:02 +0100)
The FAL's Storage Repository find* methods also load
deleted file storages at the moment.

Reproduce:
* Create some "File Storage" records on the root page and
delete some of them
* Open the File module, it will showdeleted File Storages

Resolves: #44630
Releases: 6.1, 6.0
Change-Id: I5c60f16261508978ddbe47aa26b52be5b05a82bc
Reviewed-on: https://review.typo3.org/17588
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
typo3/sysext/core/Classes/Resource/StorageRepository.php
typo3/sysext/core/Tests/Unit/Resource/StorageRepositoryTest.php [new file with mode: 0644]

index 9f7572e..4ef171f 100644 (file)
@@ -204,9 +204,11 @@ class StorageRepository extends AbstractRepository {
                if (is_object($GLOBALS['TSFE'])) {
                        // frontend context
                        $whereClause = $GLOBALS['TSFE']->sys_page->enableFields($this->table);
+                       $whereClause .= $GLOBALS['TSFE']->sys_page->deleteClause($this->table);
                } else {
                        // backend context
                        $whereClause = \TYPO3\CMS\Backend\Utility\BackendUtility::BEenableFields($this->table);
+                       $whereClause .= \TYPO3\CMS\Backend\Utility\BackendUtility::deleteClause($this->table);
                }
                return $whereClause;
        }
diff --git a/typo3/sysext/core/Tests/Unit/Resource/StorageRepositoryTest.php b/typo3/sysext/core/Tests/Unit/Resource/StorageRepositoryTest.php
new file mode 100644 (file)
index 0000000..a577281
--- /dev/null
@@ -0,0 +1,72 @@
+<?php
+namespace TYPO3\CMS\Core\Tests\Unit\Resource;
+
+/***************************************************************
+ * Copyright notice
+ *
+ * (c) 2013 Christian Kuhn <lolli@schwarzbu.ch>
+ * All rights reserved
+ *
+ * This script is part of the TYPO3 project. The TYPO3 project is
+ * free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * The GNU General Public License can be found at
+ * http://www.gnu.org/copyleft/gpl.html.
+ *
+ * This script is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * This copyright notice MUST APPEAR in all copies of the script!
+ ***************************************************************/
+
+/**
+ * Test case
+ *
+ * @author Christian Kuhn <lolli@schwarzbu.ch>
+ */
+class StorageRepositoryTest extends \TYPO3\CMS\Core\Tests\UnitTestCase {
+
+       /**
+        * @test
+        */
+       public function getWhereClauseForEnabledFieldsIncludesDeletedCheckInBackend() {
+               unset($GLOBALS['TSFE']);
+               $storageRepositoryMock = $this->getAccessibleMock(
+                       'TYPO3\\CMS\\Core\\Resource\\StorageRepository',
+                       array('dummy'),
+                       array(),
+                       '',
+                       FALSE
+               );
+               $result = $storageRepositoryMock->_call('getWhereClauseForEnabledFields');
+               $this->assertContains('sys_file_storage.deleted=0', $result);
+       }
+
+       /**
+        * @test
+        */
+       public function getWhereClauseForEnabledFieldsCallsSysPageForDeletedFlagInFrontend() {
+               $GLOBALS['TSFE'] = new \stdClass();
+               $sysPageMock = $this->getMock('TYPO3\\CMS\\Frontend\\Page\\PageRepository');
+               $GLOBALS['TSFE']->sys_page = $sysPageMock;
+               $sysPageMock
+                       ->expects($this->once())
+                       ->method('deleteClause')
+                       ->with('sys_file_storage');
+               $storageRepositoryMock = $this->getAccessibleMock(
+                       'TYPO3\\CMS\\Core\\Resource\\StorageRepository',
+                       array('dummy'),
+                       array(),
+                       '',
+                       FALSE
+               );
+               $storageRepositoryMock->_call('getWhereClauseForEnabledFields');
+       }
+}
+
+?>
\ No newline at end of file