]> git.mxchange.org Git - friendica.git/commitdiff
Now comments are really working
authorMichael <heluecht@pirati.ca>
Wed, 3 May 2017 05:22:39 +0000 (05:22 +0000)
committerMichael <heluecht@pirati.ca>
Wed, 3 May 2017 05:22:39 +0000 (05:22 +0000)
include/diaspora.php

index 520aa8caa4ed9c58c20b8d6b32e33b264f588586..8640e2d6a7f47af735e64d944a5858540986f237 100644 (file)
@@ -333,6 +333,23 @@ class Diaspora {
                        return false;
                }
 
+               if (!self::valid_posting($msg, $fields)) {
+                       logger("Invalid posting");
+                       return false;
+               }
+
+               // Is it a an action (comment, like, ...) for our own post?
+               if (isset($fields->parent_guid)) {
+                       $guid = notags(unxmlify($fields->parent_guid));
+
+                       $importer = self::importer_for_guid($guid);
+                       if (is_array($importer)) {
+                               logger("delivering to origin: ".$importer["name"]);
+                               $message_id = self::dispatch($importer, $msg);
+                               return $message_id;
+                       }
+               }
+
                // Now distribute it to the followers
                $r = q("SELECT `user`.* FROM `user` WHERE `user`.`uid` IN
                        (SELECT `contact`.`uid` FROM `contact` WHERE `contact`.`network` = '%s' AND `contact`.`addr` = '%s')
@@ -346,9 +363,10 @@ class Diaspora {
                                logger("delivering to: ".$rr["username"]);
                                self::dispatch($rr, $msg);
                        }
+               } elseif (!Config::get('system', 'relay_subscribe', false)) {
+                       logger("Unwanted message from ".$sender." send by ".$_SERVER["REMOTE_ADDR"]." with ".$_SERVER["HTTP_USER_AGENT"].": ".print_r($msg, true), LOGGER_DEBUG);
                } else {
                        // Use a dummy importer to import the data for the public copy
-                       // or for comments from unknown people
                        $importer = array("uid" => 0, "page-flags" => PAGE_FREELOVE);
                        $message_id = self::dispatch($importer, $msg);
                }
@@ -377,11 +395,6 @@ class Diaspora {
 
                $type = $fields->getName();
 
-               $social_relay = Config::get('system', 'relay_subscribe', false);
-               if (!$social_relay AND (in_array($type, array('status_message', 'reshare')))) {
-                       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) {
@@ -828,10 +841,13 @@ class Diaspora {
                        logger("defining user ".$contact["nick"]." as friend");
                }
 
+               // We don't seem to like that person
                if ($contact["blocked"] || $contact["readonly"] || $contact["archive"]) {
                        return false;
+               // We are following this person? Then it is okay
                } elseif (($contact["rel"] == CONTACT_IS_SHARING) || ($contact["rel"] == CONTACT_IS_FRIEND)) {
                        return true;
+               // Is it a post to a community? That's good
                } elseif (($contact["rel"] == CONTACT_IS_FOLLOWER) && ($importer["page-flags"] == PAGE_COMMUNITY)) {
                        return true;
                }
@@ -860,7 +876,7 @@ class Diaspora {
                        if ($is_comment) {
                                return $importer;
                        } else {
-                               return true;
+                               return false;
                        }
                }
 
@@ -1233,24 +1249,23 @@ class Diaspora {
        }
 
        /**
-        * @brief Find the best importer for a comment
+        * @brief Find the best importer for a comment, like, ...
         *
-        * @param array $importer Array of the importer user
         * @param string $guid The guid of the item
         *
-        * @return array the importer that fits the best
+        * @return array|boolean the origin owner of that post - or false
         */
-       private static function importer_for_comment($importer, $guid) {
+       private static function importer_for_guid($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 $contact;
                        }
                }
-               return $importer;
+               return false;
        }
 
        /**
@@ -1282,11 +1297,6 @@ 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;
@@ -1631,11 +1641,6 @@ class Diaspora {
                if (!in_array($parent_type, array("Post", "Comment")))
                        return false;
 
-               // 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;