]> git.mxchange.org Git - friendica.git/commitdiff
Pending contacts part 2: Fix contact deletion / added cron job for repairs
authorMichael <heluecht@pirati.ca>
Mon, 9 Sep 2019 20:03:11 +0000 (20:03 +0000)
committerMichael <heluecht@pirati.ca>
Mon, 9 Sep 2019 20:03:11 +0000 (20:03 +0000)
mod/notifications.php
src/Worker/CronJobs.php

index ed83de8ab2240407f8d073ba70a134ffe4769e3d..ac642122c28af096661aa360ac861a3e0c24a68e 100644 (file)
@@ -12,9 +12,11 @@ use Friendica\Core\L10n;
 use Friendica\Core\NotificationsManager;
 use Friendica\Core\Protocol;
 use Friendica\Core\Renderer;
+use Friendica\Core\Logger;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\Module\Login;
+use Friendica\Model\Contact;
 
 function notifications_post(App $a)
 {
@@ -46,13 +48,14 @@ function notifications_post(App $a)
 
                if ($_POST['submit'] == L10n::t('Discard')) {
                        DBA::delete('intro', ['id' => $intro_id]);
-
                        if (!$fid) {
-                               // The check for blocked and pending is in case the friendship was already approved
-                               // and we just want to get rid of the now pointless notification
+                               // The check for pending is in case the friendship was already approved
+                               // and we just want to get rid of the pending contact
                                $condition = ['id' => $contact_id, 'uid' => local_user(),
-                                       'self' => false, 'blocked' => true, 'pending' => true];
-                               DBA::delete('contact', $condition);
+                                       'self' => false, 'pending' => true, 'rel' => Contact::FOLLOWER];
+                               if (DBA::exists('contact', $condition)) {
+                                       Contact::remove($contact_id);
+                               }
                        }
                        $a->internalRedirect('notifications/intros');
                }
index 3a2c330fe5cf20b0d6712e749e3e294b84e083ab..32f9b64aa4f8555221e3035c2f7145fea6540e6c 100644 (file)
@@ -23,6 +23,7 @@ use Friendica\Network\Probe;
 use Friendica\Protocol\PortableContact;
 use Friendica\Util\Network;
 use Friendica\Util\Proxy as ProxyUtils;
+use Friendica\Util\Strings;
 
 class CronJobs
 {
@@ -301,6 +302,15 @@ class CronJobs
                /// - remove sign entries without item
                /// - remove children when parent got lost
                /// - set contact-id in item when not present
+
+               // Add intro entries for pending contacts
+               $pending_contacts = DBA::p("SELECT `uid`, `id`, `url`, `network`, `created` FROM `contact`
+                       WHERE `pending` AND `rel` = ? AND NOT EXISTS (SELECT `id` FROM `intro` WHERE `contact-id` = `contact`.`id`)", 0); //Contact::FOLLOWER);
+               while ($contact = DBA::fetch($pending_contacts)) {
+                       DBA::insert('intro', ['uid' => $contact['uid'], 'contact-id' => $contact['id'], 'blocked' => false,
+                               'hash' => Strings::getRandomHex(), 'datetime' => $contact['created']]);
+               }
+               DBA::close($pending_contacts);
        }
 
        /**