diff --git a/lib/Service/OcrService.php b/lib/Service/OcrService.php index e2ce5db..12f1fa5 100644 --- a/lib/Service/OcrService.php +++ b/lib/Service/OcrService.php @@ -27,6 +27,7 @@ namespace OCA\WorkflowOcr\Service; use OC\User\NoUserException; +use OCA\Files_Versions\Versions\IVersionManager; use OCA\WorkflowOcr\Exception\OcrResultEmptyException; use OCA\WorkflowOcr\Helper\IProcessingFileAccessor; use OCA\WorkflowOcr\Model\WorkflowSettings; @@ -52,6 +53,9 @@ class OcrService implements IOcrService { /** @var IGlobalSettingsService */ private $globalSettingsService; + /** @var IVersionManager */ + private $versionManager; + /** @var ISystemTagObjectMapper */ private $systemTagObjectMapper; @@ -82,6 +86,7 @@ class OcrService implements IOcrService { public function __construct( IOcrProcessorFactory $ocrProcessorFactory, IGlobalSettingsService $globalSettingsService, + IVersionManager $versionManager, ISystemTagObjectMapper $systemTagObjectMapper, IUserManager $userManager, IFilesystem $filesystem, @@ -93,6 +98,7 @@ public function __construct( LoggerInterface $logger) { $this->ocrProcessorFactory = $ocrProcessorFactory; $this->globalSettingsService = $globalSettingsService; + $this->versionManager = $versionManager; $this->systemTagObjectMapper = $systemTagObjectMapper; $this->userManager = $userManager; $this->filesystem = $filesystem; @@ -133,6 +139,20 @@ public function runOcrProcess(int $fileId, string $uid, WorkflowSettings $settin // Only create a new file version if the file OCR result was not empty #130 if ($result->getRecognizedText() !== '') { + $fileMTime = $file->getMTime(); + $user = $this->userManager->get($uid); + $versions = $this->versionManager->getVersionsForFile($user, $file); + + foreach ($versions as $version) { + $versionTimestamp = $version->getTimestamp(); + $versionLabel = $version->getMetadataValue('label'); + + if ($fileMTime === $versionTimestamp && ($versionLabel === null || $versionLabel === '')) { + // Add label to current file version to prevent its expiry + $this->versionManager->setMetadataValue($file, $version->getRevisionId(), 'label', 'PreOCR'); + } + } + $newFilePath = $originalFileExtension === $newFileExtension ? $filePath : $filePath . ".pdf";