48 if ($this->repository === NULL) {
79 public function indexFile(
File $fileObject, $updateObject = TRUE) {
89 $fileInfo[
'missing'] = 0;
96 $otherFiles = array();
97 foreach ($resultRows as $row) {
98 $otherFiles[] = $this->
getFactory()->getFileObject($row[
'uid'], $row);
103 foreach ($otherFiles as $otherFile) {
104 if (!$otherFile->exists()) {
107 $fileInfo[
'missing'] = 0;
108 $otherFile->updateProperties($fileInfo);
110 $fileInfo[
'uid'] = $otherFile->getUid();
111 $fileObject = $otherFile;
119 if ($movedFile === FALSE) {
122 $additionalInfo = array(
126 if (isset(
$GLOBALS[
'BE_USER']->user[
'uid'])) {
127 $additionalInfo[
'cruser_id'] = (int)
$GLOBALS[
'BE_USER']->user[
'uid'];
129 $indexRecord = array_merge($fileInfo, $additionalInfo);
136 $error =
$GLOBALS[
'TYPO3_DB']->sql_error();
138 throw new \RuntimeException(
'Error during file indexing: "' . $error .
'"', 1314455642);
140 if ($fileInfo[
'type'] == $fileObject::FILETYPE_IMAGE) {
143 $imageSize = getimagesize($rawFileLocation);
144 if ($imageSize === FALSE) {
145 $metaData[
'width'] = 0;
146 $metaData[
'height'] = 0;
148 list($metaData[
'width'], $metaData[
'height']) = $imageSize;
172 foreach ($fileObjects as $fileObject) {
173 $this->indexFile($fileObject);
186 public function indexFilesInFolder(\
TYPO3\CMS\Core\Resource\
Folder $folder) {
187 $numberOfIndexedFiles = 0;
188 $fileIdentifiers = array();
191 $fileObjects = $folder->getFiles();
195 foreach ($fileObjects as $fileObject) {
196 $this->indexFile($fileObject);
197 $fileIdentifiers[] = $fileObject->getIdentifier();
198 $numberOfIndexedFiles++;
203 foreach ($fileIndexRecords as $file) {
204 if (!in_array($file[
'identifier'], $fileIdentifiers)) {
206 $fileObject = $this->
getRepository()->findByIdentifier($file[
'uid']);
207 $fileObject->setMissing(TRUE);
217 unset($fileIdentifiers);
220 $subFolders = $folder->getSubfolders();
221 foreach ($subFolders as $subFolder) {
222 $numberOfIndexedFiles += $this->indexFilesInFolder($subFolder);
224 return $numberOfIndexedFiles;
237 $fileInfo = new \ArrayObject(array());
238 $gatherDefaultInformation = new \stdClass();
239 $gatherDefaultInformation->getDefaultFileInfo = 1;
244 if ($gatherDefaultInformation->getDefaultFileInfo) {
248 $info = $storage->getFileInfo($file);
249 $defaultFileInfo = array(
250 'creation_date' => $info[
'ctime'],
251 'modification_date' => $info[
'mtime'],
252 'size' => $info[
'size'],
254 'identifier_hash' => $storage->hashFileIdentifier($file->
getIdentifier()),
255 'folder_hash' => $storage->hashFileIdentifier($storage->getFolderIdentifierFromFileIdentifier($file->
getIdentifier())),
256 'storage' => $storage->getUid(),
258 'sha1' => $storage->hashFile($file,
'sha1'),
263 $fileInfo = array_merge($defaultFileInfo, $fileInfo->getArrayCopy());
264 $fileInfo = new \ArrayObject($fileInfo);
268 return $fileInfo->getArrayCopy();
281 $this->
getSignalSlotDispatcher()->dispatch(
'TYPO3\\CMS\\Core\\Resource\\Service\\IndexerService',
'preGatherFileInformation', array($fileObject, $fileInfo, $gatherDefaultInformation));
293 $this->
getSignalSlotDispatcher()->dispatch(
'TYPO3\\CMS\\Core\\Resource\\Service\\IndexerService',
'postGatherFileInformation', array($fileObject, $fileInfo, $hasGatheredDefaultInformation));
303 $this->
getSignalSlotDispatcher()->dispatch(
'TYPO3\\CMS\\Core\\Resource\\Service\\IndexerService',
'preMultipleFileIndex', array($fileObjectsToIndex));
313 $this->
getSignalSlotDispatcher()->dispatch(
'TYPO3\\CMS\\Core\\Resource\\Service\\IndexerService',
'postMultipleFileIndex', array($fileObjectsToIndex));
324 $this->
getSignalSlotDispatcher()->dispatch(
'TYPO3\\CMS\\Core\\Resource\\Service\\IndexerService',
'preFileIndex', array($fileObject, $fileInfo));
335 $this->
getSignalSlotDispatcher()->dispatch(
'TYPO3\\CMS\\Core\\Resource\\Service\\IndexerService',
'postFileIndex', array($fileObject, $fileInfo));
344 return $this->
getObjectManager()->get(
'TYPO3\\CMS\\Extbase\\SignalSlot\\Dispatcher');
353 return \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(
'TYPO3\\CMS\\Extbase\\Object\\ObjectManager');
emitPostFileIndexSignal(File $fileObject, $fileInfo)
emitPreFileIndexSignal(File $fileObject, $fileInfo)
getSignalSlotDispatcher()
emitPreGatherFileInformationSignal(File $fileObject, $fileInfo, $gatherDefaultInformation)
updateProperties(array $properties)
static makeInstance($className)
emitPreMultipleFilesIndexSignal(array $fileObjectsToIndex)
emitPostGatherFileInformationSignal(File $fileObject, $fileInfo, $hasGatheredDefaultInformation)
getForLocalProcessing($writable=TRUE)
indexFiles(array $fileObjects)
emitPostMultipleFilesIndexSignal(array $fileObjectsToIndex)
if(!defined('TYPO3_MODE')) $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_userauth.php']['logoff_pre_processing'][]
setIndexingInProgess($indexingState)
gatherFileInformation(File $file)