[TASK] Make sys_file_metadata translatable
[Packages/TYPO3.CMS.git] / typo3 / sysext / core / Classes / Resource / Index / MetaDataRepository.php
index 2604430..2197eac 100644 (file)
@@ -31,7 +31,6 @@ namespace TYPO3\CMS\Core\Resource\Index;
 use TYPO3\CMS\Core\Resource\File;
 use TYPO3\CMS\Core\SingletonInterface;
 
-
 /**
  * Repository Class as an abstraction layer to sys_file_metadata
  *
@@ -76,7 +75,7 @@ class MetaDataRepository implements SingletonInterface {
                if ($uid <= 0) {
                        throw new \RuntimeException('Metadata can only be retrieved for indexed files.', 1381590731);
                }
-               $record = $this->getDatabase()->exec_SELECTgetSingleRow('*', $this->tableName, 'file = ' . $uid);
+               $record = $this->getDatabase()->exec_SELECTgetSingleRow('*', $this->tableName, 'file = ' . $uid . $this->getGeneralWhereClause());
 
                if ($record === FALSE) {
                        $record = $this->createMetaDataRecord($uid);
@@ -91,8 +90,9 @@ class MetaDataRepository implements SingletonInterface {
         * @return string
         */
        protected function getGeneralWhereClause() {
-               return ' AND 1=1';
+               return ' AND sys_language_uid IN (0,-1) AND pid=0';
        }
+
        /**
         * Create empty
         *
@@ -113,4 +113,23 @@ class MetaDataRepository implements SingletonInterface {
 
                return $record;
        }
+
+       /**
+        * Updates the metadata record in the database
+        *
+        * @internal
+        * @param int $fileUid the file uid to update
+        * @param array $data Data to update
+        */
+       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']);
+               }
+               $row = $this->findByFileUid($fileUid);
+               if (count($updateRow) > 0) {
+                       $updateRow['tstamp'] = time();
+                       $this->getDatabase()->exec_UPDATEquery($this->tableName, 'uid = ' . intval($row['uid']), $updateRow);
+               }
+       }
 }
\ No newline at end of file