From 96d10c25e359b74d4b0bcab08c234625c0ecf031 Mon Sep 17 00:00:00 2001 From: Michael Date: Wed, 12 Sep 2018 06:05:14 +0000 Subject: [PATCH] Issue 5733: Removing contacts does work now on the same machine as well --- mod/contacts.php | 7 +++++++ mod/dfrn_notify.php | 14 +++++++------- src/Protocol/DFRN.php | 5 +---- src/Worker/RemoveContact.php | 4 ++-- 4 files changed, 17 insertions(+), 13 deletions(-) diff --git a/mod/contacts.php b/mod/contacts.php index 68f68fec3b..69bf2b47f9 100644 --- a/mod/contacts.php +++ b/mod/contacts.php @@ -47,6 +47,11 @@ function contacts_init(App $a) if (!DBA::isResult($contact)) { $contact = DBA::selectFirst('contact', [], ['id' => $contact_id, 'uid' => 0]); } + + // Don't display contacts that are about to be deleted + if (($contact['network'] == Protocol::PHANTOM)) { + $contact = false; + } } if (DBA::isResult($contact)) { @@ -719,6 +724,8 @@ function contacts_content(App $a, $update = 0) $sql_extra = " AND `blocked` = 0 "; } + $sql_extra .= sprintf(" AND `network` != '%s' ", Protocol::PHANTOM); + $search = x($_GET, 'search') ? notags(trim($_GET['search'])) : ''; $nets = x($_GET, 'nets' ) ? notags(trim($_GET['nets'])) : ''; diff --git a/mod/dfrn_notify.php b/mod/dfrn_notify.php index 666c388a4a..2f76b59b97 100644 --- a/mod/dfrn_notify.php +++ b/mod/dfrn_notify.php @@ -79,13 +79,13 @@ function dfrn_notify_post(App $a) { $condition = []; switch ($direction) { case (-1): - $condition = ["`issued-id` = ? OR `dfrn-id` = ?", $dfrn_id, $dfrn_id]; + $condition = ["(`issued-id` = ? OR `dfrn-id` = ?) AND `uid` = ?", $dfrn_id, $dfrn_id, $user['uid']]; break; case 0: - $condition = ['issued-id' => $dfrn_id, 'duplex' => true]; + $condition = ['issued-id' => $dfrn_id, 'duplex' => true, 'uid' => $user['uid']]; break; case 1: - $condition = ['dfrn-id' => $dfrn_id, 'duplex' => true]; + $condition = ['dfrn-id' => $dfrn_id, 'duplex' => true, 'uid' => $user['uid']]; break; default: System::xmlExit(3, 'Invalid direction'); @@ -287,15 +287,15 @@ function dfrn_notify_content(App $a) { $condition = []; switch ($direction) { case (-1): - $condition = ["`issued-id` = ? OR `dfrn-id` = ?", $dfrn_id, $dfrn_id]; + $condition = ["(`issued-id` = ? OR `dfrn-id` = ?) AND `uid` = ?", $dfrn_id, $dfrn_id, $user['uid']]; $my_id = $dfrn_id; break; case 0: - $condition = ['issued-id' => $dfrn_id, 'duplex' => true]; + $condition = ['issued-id' => $dfrn_id, 'duplex' => true, 'uid' => $user['uid']]; $my_id = '1:' . $dfrn_id; break; case 1: - $condition = ['dfrn-id' => $dfrn_id, 'duplex' => true]; + $condition = ['dfrn-id' => $dfrn_id, 'duplex' => true, 'uid' => $user['uid']]; $my_id = '0:' . $dfrn_id; break; default: @@ -326,7 +326,7 @@ function dfrn_notify_content(App $a) { $pub_key = trim($importer['cpubkey']); $dplx = intval($importer['duplex']); - if (($dplx && strlen($prv_key)) || (strlen($prv_key) && !strlen($pub_key))) { + if (!empty($prv_key) && empty($pub_key)) { openssl_private_encrypt($hash, $challenge, $prv_key); openssl_private_encrypt($id_str, $encrypted_id, $prv_key); } elseif (strlen($pub_key)) { diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index b207c3ca87..3832e38e16 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -1280,10 +1280,7 @@ class DFRN } } - if (($contact['duplex'] && strlen($contact['pubkey'])) - || ($owner['page-flags'] == Contact::PAGE_COMMUNITY && strlen($contact['pubkey'])) - || ($contact['rel'] == Contact::SHARING && strlen($contact['pubkey'])) - ) { + if (empty($contact['prvkey']) && !empty($contact['pubkey'])) { openssl_public_decrypt($sent_dfrn_id, $final_dfrn_id, $contact['pubkey']); openssl_public_decrypt($challenge, $postvars['challenge'], $contact['pubkey']); } else { diff --git a/src/Worker/RemoveContact.php b/src/Worker/RemoveContact.php index b07661b7a9..8f986eab11 100644 --- a/src/Worker/RemoveContact.php +++ b/src/Worker/RemoveContact.php @@ -13,8 +13,8 @@ require_once 'include/dba.php'; class RemoveContact { public static function execute($id) { - // Only delete if the contact is archived - $condition = ['archive' => true, 'network' => Protocol::PHANTOM, 'id' => $id]; + // Only delete if the contact is to be deleted + $condition = ['network' => Protocol::PHANTOM, 'id' => $id]; $r = DBA::exists('contact', $condition); if (!DBA::isResult($r)) { return;