]> git.mxchange.org Git - friendica.git/commitdiff
Delete cached avatar data from storage
authorMichael <heluecht@pirati.ca>
Sun, 14 Jul 2024 10:16:12 +0000 (10:16 +0000)
committerMichael <heluecht@pirati.ca>
Mon, 15 Jul 2024 04:25:15 +0000 (04:25 +0000)
src/Console/Storage.php

index 76c939d05dc263e3de5dec058365820126de359d..667ee10460806018d71c12c724902d3f0be3cd9d 100644 (file)
@@ -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 <name>
         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])) {