]> git.mxchange.org Git - friendica.git/commitdiff
Some functions had been moved away from include/items.php
authorMichael <heluecht@pirati.ca>
Wed, 24 Jan 2018 20:27:32 +0000 (20:27 +0000)
committerMichael <heluecht@pirati.ca>
Wed, 24 Jan 2018 20:27:32 +0000 (20:27 +0000)
include/items.php
src/Protocol/DFRN.php
src/Worker/Delivery.php

index 85da1d1ccf892f68abd8edc45ac59d445b213e15..d9e96ba8145a9eca97dc608f5f13aec22f79f3db 100644 (file)
@@ -1073,20 +1073,6 @@ function get_item_id($guid, $uid = 0) {
        return ["nick" => $nick, "id" => $id];
 }
 
-// return - test
-/// @TODO move to src/Model/Item.php
-function get_item_contact($item, $contacts) {
-       if (! count($contacts) || (! is_array($item))) {
-               return false;
-       }
-       foreach ($contacts as $contact) {
-               if ($contact['id'] == $item['contact-id']) {
-                       return $contact;
-               }
-       }
-       return false;
-}
-
 /**
  * look for mention tags and setup a second delivery chain for forum/community posts if appropriate
  * @param int $uid
@@ -1198,78 +1184,6 @@ function tag_deliver($uid, $item_id)
 
 }
 
-/// @TODO move to src/Protocol/DFRN.php
-function tgroup_check($uid, $item) {
-
-       $mention = false;
-
-       // check that the message originated elsewhere and is a top-level post
-
-       if (($item['wall']) || ($item['origin']) || ($item['uri'] != $item['parent-uri'])) {
-               return false;
-       }
-
-       /// @TODO Encapsulate this or find it encapsulated and replace all occurrances
-       $u = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1",
-               intval($uid)
-       );
-       if (! DBM::is_result($u)) {
-               return false;
-       }
-
-       $community_page = (($u[0]['page-flags'] == PAGE_COMMUNITY) ? true : false);
-       $prvgroup = (($u[0]['page-flags'] == PAGE_PRVGROUP) ? true : false);
-
-       $link = normalise_link(System::baseUrl() . '/profile/' . $u[0]['nickname']);
-
-       /*
-        * Diaspora uses their own hardwired link URL in @-tags
-        * instead of the one we supply with webfinger
-        */
-       $dlink = normalise_link(System::baseUrl() . '/u/' . $u[0]['nickname']);
-
-       $cnt = preg_match_all('/[\@\!]\[url\=(.*?)\](.*?)\[\/url\]/ism', $item['body'], $matches, PREG_SET_ORDER);
-       if ($cnt) {
-               foreach ($matches as $mtch) {
-                       if (link_compare($link, $mtch[1]) || link_compare($dlink, $mtch[1])) {
-                               $mention = true;
-                               logger('tgroup_check: mention found: ' . $mtch[2]);
-                       }
-               }
-       }
-
-       if (! $mention) {
-               return false;
-       }
-
-       /// @TODO Combine both return statements into one
-       return (($community_page) || ($prvgroup));
-}
-
-/**
- * This function returns true if $update has an edited timestamp newer
- * than $existing, i.e. $update contains new data which should override
- * what's already there.  If there is no timestamp yet, the update is
- * assumed to be newer.  If the update has no timestamp, the existing
- * item is assumed to be up-to-date.  If the timestamps are equal it
- * assumes the update has been seen before and should be ignored.
- *
- * @TODO fix type-hints (both array)
- */
-/// @TODO move to src/Protocol/DFRN.php
-function edited_timestamp_is_newer($existing, $update) {
-       if (!x($existing, 'edited') || !$existing['edited']) {
-               return true;
-       }
-       if (!x($update, 'edited') || !$update['edited']) {
-               return false;
-       }
-
-       $existing_edited = datetime_convert('UTC', 'UTC', $existing['edited']);
-       $update_edited = datetime_convert('UTC', 'UTC', $update['edited']);
-       return (strcmp($existing_edited, $update_edited) < 0);
-}
-
 /**
  *
  * consume_feed - process atom feed and update anything/everything we might need to update
index 7b76ddc711d95434b6384adcd10c3dbb91500f73..15867179cdd17d70709c1a8800d209ddb6bcfa90 100644 (file)
@@ -2075,7 +2075,7 @@ class DFRN
        {
                $changed = false;
 
-               if (edited_timestamp_is_newer($current, $item)) {
+               if (self::editedTimestampIsNewer($current, $item)) {
                        // do not accept (ignore) an earlier edit than one we currently have.
                        if (datetime_convert("UTC", "UTC", $item["edited"]) < $current["edited"]) {
                                return false;
@@ -2417,7 +2417,7 @@ class DFRN
                );
 
                // Is there an existing item?
-               if (DBM::is_result($current) && edited_timestamp_is_newer($current[0], $item)
+               if (DBM::is_result($current) && self::editedTimestampIsNewer($current[0], $item)
                        && (datetime_convert("UTC", "UTC", $item["edited"]) < $current[0]["edited"])
                ) {
                        logger("Item ".$item["uri"]." already existed.", LOGGER_DEBUG);
@@ -2708,7 +2708,7 @@ class DFRN
                                $item["owner-avatar"] = $importer["thumb"];
                        }
 
-                       if (($importer["rel"] == CONTACT_IS_FOLLOWER) && (!tgroup_check($importer["importer_uid"], $item))) {
+                       if (($importer["rel"] == CONTACT_IS_FOLLOWER) && (!self::tgroupCheck($importer["importer_uid"], $item))) {
                                logger("Contact ".$importer["id"]." is only follower and tgroup check was negative.", LOGGER_DEBUG);
                                return;
                        }
@@ -3089,4 +3089,73 @@ class DFRN
                }
                return ACTIVITY_POST;
        }
+
+       private static function tgroupCheck($uid, $item)
+       {
+               $mention = false;
+
+               // check that the message originated elsewhere and is a top-level post
+
+               if ($item['wall'] || $item['origin'] || ($item['uri'] != $item['parent-uri'])) {
+                       return false;
+               }
+
+               $u = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1",
+                       intval($uid)
+               );
+               if (!DBM::is_result($u)) {
+                       return false;
+               }
+
+               $community_page = ($u[0]['page-flags'] == PAGE_COMMUNITY);
+               $prvgroup = ($u[0]['page-flags'] == PAGE_PRVGROUP);
+
+               $link = normalise_link(System::baseUrl() . '/profile/' . $u[0]['nickname']);
+
+               /*
+                * Diaspora uses their own hardwired link URL in @-tags
+                * instead of the one we supply with webfinger
+                */
+               $dlink = normalise_link(System::baseUrl() . '/u/' . $u[0]['nickname']);
+
+               $cnt = preg_match_all('/[\@\!]\[url\=(.*?)\](.*?)\[\/url\]/ism', $item['body'], $matches, PREG_SET_ORDER);
+               if ($cnt) {
+                       foreach ($matches as $mtch) {
+                               if (link_compare($link, $mtch[1]) || link_compare($dlink, $mtch[1])) {
+                                       $mention = true;
+                                       logger('mention found: ' . $mtch[2]);
+                               }
+                       }
+               }
+
+               if (!$mention) {
+                       return false;
+               }
+
+               return $community_page || $prvgroup;
+       }
+
+       /**
+        * This function returns true if $update has an edited timestamp newer
+        * than $existing, i.e. $update contains new data which should override
+        * what's already there.  If there is no timestamp yet, the update is
+        * assumed to be newer.  If the update has no timestamp, the existing
+        * item is assumed to be up-to-date.  If the timestamps are equal it
+        * assumes the update has been seen before and should be ignored.
+        *
+        */
+       private static function editedTimestampIsNewer($existing, $update)
+       {
+               if (!x($existing, 'edited') || !$existing['edited']) {
+                       return true;
+               }
+               if (!x($update, 'edited') || !$update['edited']) {
+                       return false;
+               }
+
+               $existing_edited = datetime_convert('UTC', 'UTC', $existing['edited']);
+               $update_edited = datetime_convert('UTC', 'UTC', $update['edited']);
+
+               return (strcmp($existing_edited, $update_edited) < 0);
+       }
 }
index b394b0ed30d8e24579d3fca7f085bfbface38416..a5befb84490a4026bc710b070f31e3b860155fce 100644 (file)
@@ -238,7 +238,7 @@ class Delivery {
                                                        return;
                                                }
 
-                                               $item_contact = get_item_contact($item,$icontacts);
+                                               $item_contact = self::getItemContact($item,$icontacts);
                                                if (!$item_contact) {
                                                        return;
                                                }
@@ -505,4 +505,17 @@ class Delivery {
 
                return;
        }
+
+       private static function getItemContact($item, $contacts)
+       {
+               if (!count($contacts) || !is_array($item)) {
+                       return false;
+               }
+               foreach ($contacts as $contact) {
+                       if ($contact['id'] == $item['contact-id']) {
+                               return $contact;
+                       }
+               }
+               return false;
+       }
 }