From e2d2428444d14da57a666e8fdf71973da9272ecd Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 14 Jul 2024 10:16:12 +0000 Subject: [PATCH] Delete cached avatar data from storage --- src/Console/Storage.php | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/Console/Storage.php b/src/Console/Storage.php index 76c939d05d..667ee10460 100644 --- a/src/Console/Storage.php +++ b/src/Console/Storage.php @@ -25,6 +25,9 @@ use Asika\SimpleConsole\CommandArgsException; use Friendica\Core\Storage\Repository\StorageManager; use Friendica\Core\Storage\Exception\ReferenceStorageException; use Friendica\Core\Storage\Exception\StorageException; +use Friendica\Database\DBA; +use Friendica\Model\Contact; +use Friendica\Model\Photo; /** * tool to manage storage backend and stored data from CLI @@ -57,6 +60,9 @@ Synopsis bin/console storage list List available storage backends + bin/console storage clear + Remove the contact avatar cache data + bin/console storage set Set current storage backend name storage backend to use. see "list". @@ -87,6 +93,9 @@ HELP; case 'list': return $this->doList(); break; + case 'clear': + return $this->clear(); + break; case 'set': return $this->doSet(); break; @@ -126,6 +135,22 @@ HELP; return 0; } + protected function clear() + { + $fields = ['photo' => '', 'thumb' => '', 'micro' => '']; + $photos = DBA::select('photo', ['id', 'contact-id'], ['uid' => 0, 'photo-type' => [Photo::CONTACT_AVATAR, Photo::CONTACT_BANNER]]); + while ($photo = DBA::fetch($photos)) { + if (Photo::delete(['id' => $photo['id']])) { + Contact::update($fields, ['id' => $photo['contact-id']]); + $this->out('Cleared photo id ' . $photo['id'] . ' - contact id ' . $photo['contact-id']); + } else { + $this->out('Photo id ' . $photo['id'] . ' was not deleted.'); + } + } + DBA::close($photos); + return 0; + } + protected function doSet() { if (count($this->args) !== 2 || empty($this->args[1])) {