[TASK] Remove sys_file.deleted flag and it's usage 42/23742/3
authorErnesto Baschny <ernst@cron-it.de>
Wed, 11 Sep 2013 12:39:43 +0000 (14:39 +0200)
committerStefan Neufeind <typo3.neufeind@speedpartner.de>
Wed, 11 Sep 2013 13:46:21 +0000 (15:46 +0200)
This also fixes the 'Uncaught TYPO3 Exception #1317178604
No file found for given UID.' that appears when some sys_file
entries have a deleted flag set by mistake.

Resolves: #51562
Releases: 6.2, 6.1, 6.0
Change-Id: Id23636d2732f3562b8a155025656b26041c9a4e2
Reviewed-on: https://review.typo3.org/23742
Reviewed-by: Stefan Neufeind
Tested-by: Stefan Neufeind
typo3/sysext/core/Classes/Resource/AbstractRepository.php
typo3/sysext/core/Classes/Resource/ResourceFactory.php
typo3/sysext/core/Classes/Resource/Service/IndexerService.php
typo3/sysext/core/Classes/Resource/StorageRepository.php
typo3/sysext/core/Configuration/TCA/sys_file.php
typo3/sysext/core/ext_tables.sql

index fd699e9..b5e6cd8 100644 (file)
@@ -133,10 +133,11 @@ abstract class AbstractRepository implements \TYPO3\CMS\Extbase\Persistence\Repo
         */
        public function findAll() {
                $itemList = array();
         */
        public function findAll() {
                $itemList = array();
-               $whereClause = 'deleted = 0';
+               $whereClause = '1=1';
                if ($this->type != '') {
                if ($this->type != '') {
-                       $whereClause .= ' AND ' . $this->typeField . ' = ' . $GLOBALS['TYPO3_DB']->fullQuoteStr($this->type, $this->table);
+                       $whereClause .= ' AND ' . $this->typeField . ' = ' . $GLOBALS['TYPO3_DB']->fullQuoteStr($this->type, $this->table) . ' ';
                }
                }
+               $whereClause .= $this->getWhereClauseForEnabledFields();
                $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', $this->table, $whereClause);
                while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
                        $itemList[] = $this->createDomainObject($row);
                $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', $this->table, $whereClause);
                while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
                        $itemList[] = $this->createDomainObject($row);
@@ -189,7 +190,7 @@ abstract class AbstractRepository implements \TYPO3\CMS\Extbase\Persistence\Repo
                if (!\TYPO3\CMS\Core\Utility\MathUtility::canBeInterpretedAsInteger($uid)) {
                        throw new \InvalidArgumentException('uid has to be integer.', 1316779798);
                }
                if (!\TYPO3\CMS\Core\Utility\MathUtility::canBeInterpretedAsInteger($uid)) {
                        throw new \InvalidArgumentException('uid has to be integer.', 1316779798);
                }
-               $row = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow('*', $this->table, 'uid=' . intval($uid) . ' AND deleted=0');
+               $row = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow('*', $this->table, 'uid=' . intval($uid) . $this->getWhereClauseForEnabledFields());
                if (empty($row) || !is_array($row)) {
                        throw new \RuntimeException('Could not find row with uid "' . $uid . '" in table ' . $this->table, 1314354065);
                }
                if (empty($row) || !is_array($row)) {
                        throw new \RuntimeException('Could not find row with uid "' . $uid . '" in table ' . $this->table, 1314354065);
                }
@@ -197,6 +198,25 @@ abstract class AbstractRepository implements \TYPO3\CMS\Extbase\Persistence\Repo
        }
 
        /**
        }
 
        /**
+        * get the WHERE clause for the enabled fields of this TCA table
+        * depending on the context
+        *
+        * @return string the additional where clause, something like " AND deleted=0 AND hidden=0"
+        */
+       protected function getWhereClauseForEnabledFields() {
+               if ($this->getEnvironmentMode() === 'FE') {
+                       // 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;
+       }
+
+       /**
         * Sets the property names to order the result by per default.
         * Expected like this:
         * array(
         * Sets the property names to order the result by per default.
         * Expected like this:
         * array(
index 54b6e0d..8881a42 100644 (file)
@@ -338,7 +338,7 @@ class ResourceFactory implements \TYPO3\CMS\Core\SingletonInterface {
                        // Fetches data in case $fileData is empty
                        if (empty($fileData)) {
                                /** @var $GLOBALS['TYPO3_DB'] \TYPO3\CMS\Core\Database\DatabaseConnection */
                        // Fetches data in case $fileData is empty
                        if (empty($fileData)) {
                                /** @var $GLOBALS['TYPO3_DB'] \TYPO3\CMS\Core\Database\DatabaseConnection */
-                               $fileData = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow('*', 'sys_file', 'uid=' . intval($uid) . ' AND deleted=0');
+                               $fileData = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow('*', 'sys_file', 'uid=' . intval($uid));
                                if (!is_array($fileData)) {
                                        throw new \TYPO3\CMS\Core\Resource\Exception\FileDoesNotExistException('No file found for given UID.', 1317178604);
                                }
                                if (!is_array($fileData)) {
                                        throw new \TYPO3\CMS\Core\Resource\Exception\FileDoesNotExistException('No file found for given UID.', 1317178604);
                                }
index a692444..9220f9d 100644 (file)
@@ -97,7 +97,6 @@ class IndexerService implements \TYPO3\CMS\Core\SingletonInterface {
                // If the file is already indexed, then the file information will
                // be updated on the existing record
                if ($fileObject->isIndexed()) {
                // If the file is already indexed, then the file information will
                // be updated on the existing record
                if ($fileObject->isIndexed()) {
-                       $fileInfo['deleted'] = 0;
                        $GLOBALS['TYPO3_DB']->exec_UPDATEquery('sys_file', sprintf('uid = %d', $fileObject->getUid()), $fileInfo);
                } else {
                        // Check if a file has been moved outside of FAL -- we have some
                        $GLOBALS['TYPO3_DB']->exec_UPDATEquery('sys_file', sprintf('uid = %d', $fileObject->getUid()), $fileInfo);
                } else {
                        // Check if a file has been moved outside of FAL -- we have some
index eba5bff..055558e 100644 (file)
@@ -200,25 +200,6 @@ class StorageRepository extends AbstractRepository {
        }
 
        /**
        }
 
        /**
-        * get the WHERE clause for the enabled fields of this TCA table
-        * depending on the context
-        *
-        * @return string the additional where clause, something like " AND deleted=0 AND hidden=0"
-        */
-       protected function getWhereClauseForEnabledFields() {
-               if ($this->getEnvironmentMode() === 'FE') {
-                       // 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;
-       }
-
-       /**
         * Function to return the current TYPO3_MODE.
         * This function can be mocked in unit tests to be able to test frontend behaviour.
         *
         * Function to return the current TYPO3_MODE.
         * This function can be mocked in unit tests to be able to test frontend behaviour.
         *
index 1ced99c..3e571f7 100644 (file)
@@ -12,7 +12,6 @@ return array(
                'versioningWS' => TRUE,
                'origUid' => 't3_origuid',
                'default_sortby' => 'ORDER BY crdate DESC',
                'versioningWS' => TRUE,
                'origUid' => 't3_origuid',
                'default_sortby' => 'ORDER BY crdate DESC',
-               'delete' => 'deleted',
                'dividers2tabs' => TRUE,
                'typeicon_column' => 'type',
                'typeicon_classes' => array(
                'dividers2tabs' => TRUE,
                'typeicon_column' => 'type',
                'typeicon_classes' => array(
index 1b1bce4..1991245 100644 (file)
@@ -284,7 +284,6 @@ CREATE TABLE sys_file (
        tstamp int(11) DEFAULT '0' NOT NULL,
        crdate int(11) DEFAULT '0' NOT NULL,
        cruser_id int(11) DEFAULT '0' NOT NULL,
        tstamp int(11) DEFAULT '0' NOT NULL,
        crdate int(11) DEFAULT '0' NOT NULL,
        cruser_id int(11) DEFAULT '0' NOT NULL,
-       deleted tinyint(4) DEFAULT '0' NOT NULL,
 
        # Versioning fields
        t3ver_oid int(11) DEFAULT '0' NOT NULL,
 
        # Versioning fields
        t3ver_oid int(11) DEFAULT '0' NOT NULL,