return;
}
- Contact::terminateFriendship($r[0], $orig_record);
+ Contact::terminateFriendship($r[0], $orig_record, true);
Contact::remove($orig_record['id']);
}
$encrypted_id = '';
$id_str = $my_id . '.' . mt_rand(1000,9999);
- $prv_key = trim($importer['prvkey']);
- $pub_key = trim($importer['pubkey']);
+ $prv_key = trim($importer['cprvkey']);
+ $pub_key = trim($importer['cpubkey']);
$dplx = intval($importer['duplex']);
if (($dplx && strlen($prv_key)) || (strlen($prv_key) && !strlen($pub_key))) {
$local = Config::get('system','poco_local_search');
- $search = $prefix.notags(trim($_REQUEST['search']));
+ $search = $prefix.notags(trim(defaults($_REQUEST, 'search', '')));
$header = '';
// NOTREACHED
}
+ $dissolve = ($contact['rel'] == Contact::SHARING);
+
$owner = User::getOwnerDataById($uid);
if ($owner) {
- Contact::terminateFriendship($owner, $contact);
+ Contact::terminateFriendship($owner, $contact, $dissolve);
}
// Sharing-only contacts get deleted as there no relationship any more
- if ($contact['rel'] == Contact::SHARING) {
+ if ($dissolve) {
Contact::remove($contact['id']);
$return_path = 'contacts';
} else {
use Friendica\Network\Probe;
use Friendica\Object\Image;
use Friendica\Protocol\Diaspora;
+use Friendica\Protocol\DFRN;
use Friendica\Protocol\OStatus;
use Friendica\Protocol\PortableContact;
use Friendica\Protocol\Salmon;
/**
* @brief Sends an unfriend message. Does not remove the contact
*
- * @param array $user User unfriending
- * @param array $contact Contact unfriended
+ * @param array $user User unfriending
+ * @param array $contact Contact unfriended
+ * @param boolean $dissolve Remove the contact on the remote side
* @return void
*/
- public static function terminateFriendship(array $user, array $contact)
+ public static function terminateFriendship(array $user, array $contact, $dissolve = false)
{
- if (in_array($contact['network'], [Protocol::OSTATUS, Protocol::DFRN])) {
+ if (($contact['network'] == Protocol::DFRN) && $dissolve) {
+ DFRN::deliver($user, $contact, 'placeholder', true);
+ } elseif (in_array($contact['network'], [Protocol::OSTATUS, Protocol::DFRN])) {
// create an unfollow slap
$item = [];
$item['verb'] = NAMESPACE_OSTATUS . "/unfollow";
return [];
}
- $user['importer_uid'] = $user['uid'];
+ $user['importer_uid'] = $user['uid'];
+ $user['uprvkey'] = $user['prvkey'];
} else {
$user = ['importer_uid' => 0, 'uprvkey' => '', 'timezone' => 'UTC',
'nickname' => '', 'sprvkey' => '', 'spubkey' => '',
$a = get_app();
// At first try the Diaspora transport layer
- $ret = self::transmit($owner, $contact, $atom);
- if ($ret >= 200) {
- logger('Delivery via Diaspora transport layer was successful with status ' . $ret);
- return $ret;
+ if (!$dissolve) {
+ $ret = self::transmit($owner, $contact, $atom);
+ if ($ret >= 200) {
+ logger('Delivery via Diaspora transport layer was successful with status ' . $ret);
+ return $ret;
+ }
}
$idtosend = $orig_id = (($contact['dfrn-id']) ? $contact['dfrn-id'] : $contact['issued-id']);
return;
}
foreach ($r as $contact) {
- Contact::terminateFriendship($user, $contact);
+ Contact::terminateFriendship($user, $contact, true);
}
return;
} elseif ($cmd == Delivery::RELOCATION) {