[BUGFIX] Minor glitches in FileIndex- and MetaDataRepositories 97/24897/2
authorSteffen Ritter <info@rs-websystems.de>
Fri, 18 Oct 2013 13:04:10 +0000 (15:04 +0200)
committerSteffen Ritter <info@rs-websystems.de>
Fri, 18 Oct 2013 13:12:24 +0000 (15:12 +0200)
There are two minor issues with the Repositories for file meta
data.
The FileIndexRepository::hasIndexRecord returns false if there
is more than one entry in the database. As a result the file
can be indexed over and over again.

In addition while updating file-meta-data it is possible to
update the uid of an record since it is removed from the wrong
array.

Resolves: #52954
Releases: 6.2
Change-Id: Iee4deaa60933f5fd67a31ac70246bc1226b9007a
Reviewed-on: https://review.typo3.org/24897
Reviewed-by: Steffen Ritter
Tested-by: Steffen Ritter
typo3/sysext/core/Classes/Resource/Index/FileIndexRepository.php
typo3/sysext/core/Classes/Resource/Index/MetaDataRepository.php

index f4b5e0f..5bf27a0 100644 (file)
@@ -177,7 +177,7 @@ class FileIndexRepository implements SingletonInterface {
         * @return bool
         */
        public function hasIndexRecord(File $file) {
-               return $this->getDatabase()->exec_SELECTcountRows('uid', $this->table, $this->getWhereClauseForFile($file)) === 1;
+               return $this->getDatabase()->exec_SELECTcountRows('uid', $this->table, $this->getWhereClauseForFile($file)) >= 1;
        }
 
        /**
index 347eda1..3fdee1b 100644 (file)
@@ -125,8 +125,8 @@ class MetaDataRepository implements SingletonInterface {
         */
        public function update($fileUid, array $data) {
                $updateRow = array_intersect_key($data, $this->getDatabase()->admin_get_fields($this->tableName));
-               if (array_key_exists('uid', $data)) {
-                       unset($data['uid']);
+               if (array_key_exists('uid', $updateRow)) {
+                       unset($updateRow['uid']);
                }
                $row = $this->findByFileUid($fileUid);
                if (count($updateRow) > 0) {