X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=include%2Fdiaspora.php;h=21081dd6a7250d7e4891984c47889ad633e4b065;hb=4b16de6d8010323cc63cde302b4ee0becb429d3b;hp=b3af9cc64a48beb9ba0cc00978d9b91e1c91fb27;hpb=62b6bbeef074e51971595c22da8d229aa6e53cec;p=friendica.git diff --git a/include/diaspora.php b/include/diaspora.php index b3af9cc64a..21081dd6a7 100644 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -8,7 +8,8 @@ * This will change in the future. */ -use \Friendica\Core\Config; +use Friendica\App; +use Friendica\Core\Config; require_once 'include/items.php'; require_once 'include/bb2diaspora.php'; @@ -347,15 +348,10 @@ class Diaspora { self::dispatch($rr,$msg); } } else { - $social_relay = (bool)Config::get('system', 'relay_subscribe', false); - // Use a dummy importer to import the data for the public copy - if ($social_relay) { - $importer = array("uid" => 0, "page-flags" => PAGE_FREELOVE); - $message_id = self::dispatch($importer,$msg); - } else { - logger("Unwanted message from ".$msg["author"]." send by ".$_SERVER["REMOTE_ADDR"]." with ".$_SERVER["HTTP_USER_AGENT"].": ".print_r($msg, true), LOGGER_DEBUG); - } + // or for comments from unknown people + $importer = array("uid" => 0, "page-flags" => PAGE_FREELOVE); + $message_id = self::dispatch($importer,$msg); } return $message_id; @@ -382,6 +378,11 @@ class Diaspora { $type = $fields->getName(); + $social_relay = Config::get('system', 'relay_subscribe', false); + if (!$social_relay AND ($type == 'message')) { + logger("Unwanted message from ".$sender." send by ".$_SERVER["REMOTE_ADDR"]." with ".$_SERVER["HTTP_USER_AGENT"].": ".print_r($msg, true), LOGGER_DEBUG); + } + logger("Received message type ".$type." from ".$sender." for user ".$importer["uid"], LOGGER_DEBUG); switch ($type) { @@ -1227,6 +1228,27 @@ class Diaspora { } } + /** + * @brief Find the best importer for a comment + * + * @param array $importer Array of the importer user + * @param string $guid The guid of the item + * + * @return array the importer that fits the best + */ + private static function importer_for_comment($importer, $guid) { + $item = dba::fetch_first("SELECT `uid` FROM `item` WHERE `origin` AND `guid` = ? LIMIT 1", $guid); + + if (dbm::is_result($item)) { + logger("Found user ".$item['uid']." as owner of item ".$guid, LOGGER_DEBUG); + $contact = dba::fetch_first("SELECT * FROM `contact` WHERE `self` AND `uid` = ?", $item['uid']); + if (dbm::is_result($contact)) { + $importer = $contact; + } + } + return $importer; + } + /** * @brief Processes an incoming comment * @@ -1256,6 +1278,11 @@ class Diaspora { $thr_uri = ""; } + // Find the best importer when there was no importer found + if ($importer["uid"] == 0) { + $importer = self::importer_for_comment($importer, $parent_guid); + } + $contact = self::allowed_contact_by_handle($importer, $sender, true); if (!$contact) { return false;