Пример #1
0
 /**
  * @param File $file
  * @return string
  */
 protected function getUri(File $file)
 {
     $metadataProperties = $file->_getMetaData();
     $parameterName = sprintf('edit[sys_file_metadata][%s]', $metadataProperties['uid']);
     $uri = BackendUtility::getModuleUrl('record_edit', array($parameterName => 'edit', 'returnUrl' => BackendUtility::getModuleUrl(GeneralUtility::_GP('M'), $this->getAdditionalParameters())));
     return $uri;
 }
Пример #2
0
 /**
  * Extract metadata for given fileObject
  *
  * @param File $fileObject
  */
 public function extractMetaData(File $fileObject)
 {
     $newMetaData = [0 => $fileObject->_getMetaData()];
     // Loop through available extractors and fetch metadata for the given file.
     foreach ($this->getExtractionServices() as $service) {
         if ($this->isFileTypeSupportedByExtractor($fileObject, $service) && $service->canProcess($fileObject)) {
             $newMetaData[$service->getPriority()] = $service->extractMetaData($fileObject, $newMetaData);
         }
     }
     // Sort metadata by priority so that merging happens in order of precedence.
     ksort($newMetaData);
     // Merge the collected metadata.
     $metaData = [];
     foreach ($newMetaData as $data) {
         $metaData = array_merge($metaData, $data);
     }
     $fileObject->_updateMetaDataProperties($metaData);
     $this->getMetaDataRepository()->update($fileObject->getUid(), $metaData);
     $this->getFileIndexRepository()->updateIndexingTime($fileObject->getUid());
 }
Пример #3
0
 /**
  * Wraps filenames in links which opens the metadata editor.
  *
  * @param string $code String to be wrapped in links
  * @param File $fileObject File to be linked
  * @return string HTML
  */
 public function linkWrapFile($code, File $fileObject)
 {
     try {
         if ($fileObject instanceof File && $fileObject->isIndexed() && $fileObject->checkActionPermission('write') && $this->getBackendUser()->check('tables_modify', 'sys_file_metadata')) {
             $metaData = $fileObject->_getMetaData();
             $data = array('sys_file_metadata' => array($metaData['uid'] => 'edit'));
             $editOnClick = BackendUtility::editOnClick(GeneralUtility::implodeArrayForUrl('edit', $data), '', $this->listUrl());
             $title = htmlspecialchars($this->getLanguageService()->sL('LLL:EXT:lang/locallang_core.xlf:cm.editMetadata'));
             $code = '<a href="#" title="' . $title . '" onclick="' . htmlspecialchars($editOnClick) . '">' . GeneralUtility::fixed_lgd_cs($code, $this->fixedL) . '</a>';
         }
     } catch (\Exception $e) {
         // intentional fall-through
     }
     return $code;
 }
 /**
  * migrate file from dam record to fal system
  *
  * @param array $damRecord
  * @param \TYPO3\CMS\Core\Resource\File $fileObject
  * @throws \Exception
  * @return void
  */
 protected function migrateFileFromDamToFal(array $damRecord, \TYPO3\CMS\Core\Resource\File $fileObject)
 {
     // in getProperties() we don't have the required UID of metadata record
     // if no metadata record is available it will automatically created within FAL
     $metadataRecord = $fileObject->_getMetaData();
     if (is_array($metadataRecord)) {
         // update existing record
         $this->database->exec_UPDATEquery('sys_file_metadata', 'uid = ' . $metadataRecord['uid'], $this->createArrayForUpdateInsertSysFileRecord($damRecord));
         // add the migrated uid of the DAM record to the FAL record
         $this->database->exec_UPDATEquery('sys_file', 'uid = ' . $fileObject->getUid(), array('_migrateddamuid' => $damRecord['uid']));
     }
 }
Пример #5
0
 /**
  * Remove all category references of the deleted file.
  *
  * @param File $fileObject
  * @return void
  */
 protected function cleanupCategoryReferences(File $fileObject)
 {
     // Retrieve the file metadata uid which is different from the file uid.
     $metadataProperties = $fileObject->_getMetaData();
     $metaDataUid = isset($metadataProperties['_ORIG_uid']) ? $metadataProperties['_ORIG_uid'] : $metadataProperties['uid'];
     $this->getDatabaseConnection()->exec_DELETEquery('sys_category_record_mm', 'uid_foreign=' . (int) $metaDataUid . ' AND tablenames = \'sys_file_metadata\'');
 }
Пример #6
0
 /**
  * Wraps filenames in links which opens the metadata editor.
  *
  * @param string $code String to be wrapped in links
  * @param File $fileObject File to be linked
  * @return string HTML
  */
 public function linkWrapFile($code, File $fileObject)
 {
     try {
         if ($fileObject instanceof File && $fileObject->isIndexed() && $fileObject->checkActionPermission('write') && $this->getBackendUser()->check('tables_modify', 'sys_file_metadata')) {
             $metaData = $fileObject->_getMetaData();
             $urlParameters = ['edit' => ['sys_file_metadata' => [$metaData['uid'] => 'edit']], 'returnUrl' => $this->listURL()];
             $url = BackendUtility::getModuleUrl('record_edit', $urlParameters);
             $title = htmlspecialchars($this->getLanguageService()->sL('LLL:EXT:lang/locallang_core.xlf:cm.editMetadata'));
             $code = '<a href="' . htmlspecialchars($url) . '" title="' . $title . '">' . GeneralUtility::fixed_lgd_cs($code, $this->fixedL) . '</a>';
         }
     } catch (\Exception $e) {
         // intentional fall-through
     }
     return $code;
 }
Пример #7
0
 /**
  * Extract metadata for given fileObject
  *
  * @param File $fileObject
  */
 public function extractMetaData(File $fileObject)
 {
     $newMetaData = array(0 => $fileObject->_getMetaData());
     foreach ($this->getExtractionServices() as $service) {
         if ($service->canProcess($fileObject)) {
             $newMetaData[$service->getPriority()] = $service->extractMetaData($fileObject, $newMetaData);
         }
     }
     ksort($newMetaData);
     $metaData = array();
     foreach ($newMetaData as $data) {
         $metaData = array_merge($metaData, $data);
     }
     $fileObject->_updateMetaDataProperties($metaData);
     $this->getMetaDataRepository()->update($fileObject->getUid(), $metaData);
     $this->getFileIndexRepository()->updateIndexingTime($fileObject->getUid());
 }
Пример #8
0
 /**
  * Retrieve the file metadata uid which is different from the file uid.
  *
  * @param \TYPO3\CMS\Core\Resource\File $file
  * @return int
  */
 protected function getFileMetadataIdentifier(File $file)
 {
     $metadataProperties = $file->_getMetaData();
     return isset($metadataProperties['_ORIG_uid']) ? (int) $metadataProperties['_ORIG_uid'] : (int) $metadataProperties['uid'];
 }