mirror of
https://github.com/nextcloud/server.git
synced 2026-04-15 22:11:17 -04:00
feat: add command to clear contacts photo cache
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
This commit is contained in:
parent
07fa9b9311
commit
8a1ae0934e
4 changed files with 78 additions and 0 deletions
|
|
@ -56,6 +56,7 @@
|
|||
|
||||
<commands>
|
||||
<command>OCA\DAV\Command\ClearCalendarUnshares</command>
|
||||
<command>OCA\DAV\Command\ClearContactsPhotoCache</command>
|
||||
<command>OCA\DAV\Command\CreateAddressBook</command>
|
||||
<command>OCA\DAV\Command\CreateCalendar</command>
|
||||
<command>OCA\DAV\Command\CreateSubscription</command>
|
||||
|
|
|
|||
|
|
@ -156,6 +156,7 @@ return array(
|
|||
'OCA\\DAV\\CardDAV\\Validation\\CardDavValidatePlugin' => $baseDir . '/../lib/CardDAV/Validation/CardDavValidatePlugin.php',
|
||||
'OCA\\DAV\\CardDAV\\Xml\\Groups' => $baseDir . '/../lib/CardDAV/Xml/Groups.php',
|
||||
'OCA\\DAV\\Command\\ClearCalendarUnshares' => $baseDir . '/../lib/Command/ClearCalendarUnshares.php',
|
||||
'OCA\\DAV\\Command\\ClearContactsPhotoCache' => $baseDir . '/../lib/Command/ClearContactsPhotoCache.php',
|
||||
'OCA\\DAV\\Command\\CreateAddressBook' => $baseDir . '/../lib/Command/CreateAddressBook.php',
|
||||
'OCA\\DAV\\Command\\CreateCalendar' => $baseDir . '/../lib/Command/CreateCalendar.php',
|
||||
'OCA\\DAV\\Command\\CreateSubscription' => $baseDir . '/../lib/Command/CreateSubscription.php',
|
||||
|
|
|
|||
|
|
@ -171,6 +171,7 @@ class ComposerStaticInitDAV
|
|||
'OCA\\DAV\\CardDAV\\Validation\\CardDavValidatePlugin' => __DIR__ . '/..' . '/../lib/CardDAV/Validation/CardDavValidatePlugin.php',
|
||||
'OCA\\DAV\\CardDAV\\Xml\\Groups' => __DIR__ . '/..' . '/../lib/CardDAV/Xml/Groups.php',
|
||||
'OCA\\DAV\\Command\\ClearCalendarUnshares' => __DIR__ . '/..' . '/../lib/Command/ClearCalendarUnshares.php',
|
||||
'OCA\\DAV\\Command\\ClearContactsPhotoCache' => __DIR__ . '/..' . '/../lib/Command/ClearContactsPhotoCache.php',
|
||||
'OCA\\DAV\\Command\\CreateAddressBook' => __DIR__ . '/..' . '/../lib/Command/CreateAddressBook.php',
|
||||
'OCA\\DAV\\Command\\CreateCalendar' => __DIR__ . '/..' . '/../lib/Command/CreateCalendar.php',
|
||||
'OCA\\DAV\\Command\\CreateSubscription' => __DIR__ . '/..' . '/../lib/Command/CreateSubscription.php',
|
||||
|
|
|
|||
75
apps/dav/lib/Command/ClearContactsPhotoCache.php
Normal file
75
apps/dav/lib/Command/ClearContactsPhotoCache.php
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
|
||||
namespace OCA\DAV\Command;
|
||||
|
||||
use OCP\Files\AppData\IAppDataFactory;
|
||||
use OCP\Files\NotPermittedException;
|
||||
use Symfony\Component\Console\Attribute\AsCommand;
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
use Symfony\Component\Console\Helper\ProgressBar;
|
||||
use Symfony\Component\Console\Helper\QuestionHelper;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
use Symfony\Component\Console\Question\ConfirmationQuestion;
|
||||
|
||||
#[AsCommand(
|
||||
name: 'dav:clear-contacts-photo-cache',
|
||||
description: 'Clear cached contact photos',
|
||||
hidden: false,
|
||||
)]
|
||||
class ClearContactsPhotoCache extends Command {
|
||||
|
||||
public function __construct(
|
||||
private IAppDataFactory $appDataFactory,
|
||||
) {
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
protected function execute(InputInterface $input, OutputInterface $output): int {
|
||||
$photoCacheAppData = $this->appDataFactory->get('dav-photocache');
|
||||
|
||||
$folders = $photoCacheAppData->getDirectoryListing();
|
||||
$countFolders = count($folders);
|
||||
|
||||
if ($countFolders === 0) {
|
||||
$output->writeln('No cached contact photos found.');
|
||||
return self::SUCCESS;
|
||||
}
|
||||
|
||||
$output->writeln('Found ' . count($folders) . ' cached contact photos.');
|
||||
|
||||
/** @var QuestionHelper $helper */
|
||||
$helper = $this->getHelper('question');
|
||||
$question = new ConfirmationQuestion('Please confirm to clear the contacts photo cache [y/n] ', true);
|
||||
|
||||
if ($helper->ask($input, $output, $question) === false) {
|
||||
$output->writeln('Clearing the contacts photo cache aborted.');
|
||||
return self::SUCCESS;
|
||||
}
|
||||
|
||||
$progressBar = new ProgressBar($output, $countFolders);
|
||||
$progressBar->start();
|
||||
|
||||
foreach ($folders as $folder) {
|
||||
try {
|
||||
$folder->delete();
|
||||
} catch (NotPermittedException) {
|
||||
}
|
||||
$progressBar->advance();
|
||||
}
|
||||
|
||||
$progressBar->finish();
|
||||
|
||||
$output->writeln('');
|
||||
$output->writeln('Contacts photo cache cleared.');
|
||||
|
||||
return self::SUCCESS;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue