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;
}
}