From 0c9a9b6f0c20470748b1403a6b8354dd08182c2e Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 4 Jan 2018 19:48:56 +0000 Subject: [PATCH] Commenting to (nearly) every Friendica contact is now possible --- include/conversation.php | 5 +++-- mod/item.php | 2 +- src/Protocol/Diaspora.php | 10 +++++++++- src/Worker/Delivery.php | 7 ++++++- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/include/conversation.php b/include/conversation.php index 97630a65fb..0a565c68e3 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -624,7 +624,7 @@ function conversation(App $a, $items, $mode, $update, $preview = false) { $community_readonly = false; $writable = true; } else { - $writable = ($items[0]['uid'] == 0) && in_array($items[0]['network'], array(NETWORK_OSTATUS, NETWORK_DIASPORA)); + $writable = ($items[0]['uid'] == 0) && in_array($items[0]['network'], array(NETWORK_OSTATUS, NETWORK_DIASPORA, NETWORK_DFRN)); } } else { $writable = false; @@ -929,6 +929,7 @@ function community_add_items($parents) { ); $comments = dba::inArray($thread_items); + if (count($comments) == 0) { $thread_items = dba::p(item_query()." AND `item`.`uid` = 0 AND `item`.`parent-uri` = ? @@ -945,7 +946,7 @@ function community_add_items($parents) { foreach ($items as $index => $item) { if ($item['uid'] == 0) { - $items[$index]['writable'] = in_array($item['network'], [NETWORK_DIASPORA, NETWORK_OSTATUS]); + $items[$index]['writable'] = in_array($item['network'], [NETWORK_OSTATUS, NETWORK_DIASPORA, NETWORK_DFRN]); } } diff --git a/mod/item.php b/mod/item.php index 1faef96016..450aac5f2e 100644 --- a/mod/item.php +++ b/mod/item.php @@ -209,7 +209,7 @@ function item_post(App $a) { } // Allow commenting if it is an answer to a public post - $allow_comment = ($profile_uid == 0) && $parent && in_array($parent_item['network'], [NETWORK_OSTATUS, NETWORK_DIASPORA]); + $allow_comment = ($profile_uid == 0) && $parent && in_array($parent_item['network'], [NETWORK_OSTATUS, NETWORK_DIASPORA, NETWORK_DFRN]); /* * Now check that it is a page_type of PAGE_BLOG, and that valid personal details diff --git a/src/Protocol/Diaspora.php b/src/Protocol/Diaspora.php index 59ca2757f3..6b5f5d5769 100644 --- a/src/Protocol/Diaspora.php +++ b/src/Protocol/Diaspora.php @@ -3114,7 +3114,15 @@ class Diaspora } $logid = random_string(4); - $dest_url = (($public_batch) ? $contact["batch"] : $contact["notify"]); + $dest_url = ($public_batch ? $contact["batch"] : $contact["notify"]); + + // Fetch the fcontact entry when there is missing data + // Will possibly happen when data is transmitted to a DFRN contact + if (empty($dest_url) && !empty($contact['addr'])) { + $fcontact = self::personByHandle($contact['addr']); + $dest_url = ($public_batch ? $fcontact["batch"] : $fcontact["notify"]); + } + if (!$dest_url) { logger("no url for contact: ".$contact["id"]." batch mode =".$public_batch); return 0; diff --git a/src/Worker/Delivery.php b/src/Worker/Delivery.php index 192c5e815d..fc7f884f6a 100644 --- a/src/Worker/Delivery.php +++ b/src/Worker/Delivery.php @@ -217,9 +217,14 @@ class Delivery { } $deliver_status = 0; + // Transmit via Diaspora if not possible via Friendica + if (($item['uid'] == 0) && ($contact['network'] == NETWORK_DFRN)) { + $contact['network'] = NETWORK_DIASPORA; + } + logger("main delivery by delivery: followup=$followup mail=$mail fsuggest=$fsuggest relocate=$relocate - network ".$contact['network']); - switch($contact['network']) { + switch ($contact['network']) { case NETWORK_DFRN: logger('notifier: '.$target_item["guid"].' dfrndelivery: '.$contact['name']);