]> git.mxchange.org Git - friendica.git/blobdiff - src/Worker/RemoveContact.php
version 2021.03-dev
[friendica.git] / src / Worker / RemoveContact.php
index 40e3a67fcf8fd933767c782868bcfa975b93b814..a84cb0d53760701f9eb9a825b5a24c22fbf3255d 100644 (file)
@@ -23,32 +23,40 @@ namespace Friendica\Worker;
 
 use Friendica\Core\Logger;
 use Friendica\Database\DBA;
-use Friendica\Core\Protocol;
 use Friendica\Model\Item;
+use Friendica\Model\Photo;
 
 /**
  * Removes orphaned data from deleted contacts
  */
 class RemoveContact {
        public static function execute($id) {
-
                // Only delete if the contact is to be deleted
-               $contact = DBA::selectFirst('contact', ['uid'], ['deleted' => true]);
+               $contact = DBA::selectFirst('contact', ['uid'], ['deleted' => true, 'id' => $id]);
                if (!DBA::isResult($contact)) {
                        return;
                }
 
+               Logger::info('Start deleting contact', ['id' => $id]);
                // Now we delete the contact and all depending tables
-               $condition = ['uid' => $contact['uid'], 'contact-id' => $id];
+               if ($contact['uid'] == 0) {
+                       DBA::delete('post-tag', ['cid' => $id]);
+                       $condition = ["`author-id` = ? OR `owner-id` = ? OR `causer-id` = ? OR `contact-id` = ?",
+                               $id, $id, $id, $id];
+               } else {
+                       $condition = ['uid' => $contact['uid'], 'contact-id' => $id];
+               }
                do {
-                       $items = Item::select(['id'], $condition, ['limit' => 100]);
+                       $items = Item::select(['id', 'guid'], $condition, ['limit' => 100]);
                        while ($item = Item::fetch($items)) {
-                               Logger::notice('Delete removed contact item', ['id' => $item["id"]]);
+                               Logger::info('Delete removed contact item', ['id' => $item['id'], 'guid' => $item['guid']]);
                                DBA::delete('item', ['id' => $item['id']]);
                        }
                        DBA::close($items);
                } while (Item::exists($condition));
 
-               DBA::delete('contact', ['id' => $id]);
+               Photo::delete(['contact-id' => $id]);
+               $ret = DBA::delete('contact', ['id' => $id]);
+               Logger::info('Deleted contact', ['id' => $id, 'result' => $ret]);
        }
 }