setName('groupfolders:expire') ->setDescription('Trigger expiry of versions for files stored in group folders'); } protected function execute(InputInterface $input, OutputInterface $output): int { $this->eventDispatcher->addListener(GroupVersionsExpireEnterFolderEvent::class, function (GroupVersionsExpireEnterFolderEvent $event) use ($output): void { $output->writeln("Expiring version in '{$event->folder->mountPoint}'"); }); $this->eventDispatcher->addListener(GroupVersionsExpireDeleteVersionEvent::class, function (GroupVersionsExpireDeleteVersionEvent $event) use ($output): void { $id = $event->version->getRevisionId(); $file = $event->version->getSourceFileName(); $output->writeln("Expiring version $id for '$file'"); }); $this->eventDispatcher->addListener(GroupVersionsExpireDeleteFileEvent::class, function (GroupVersionsExpireDeleteFileEvent $event) use ($output): void { $output->writeln('Cleaning up versions for no longer existing file with id ' . $event->fileId . ''); }); $this->expireManager->expireAll(); return 0; } }