]> git.mxchange.org Git - friendica.git/blobdiff - include/threads.php
Merge remote-tracking branch 'upstream/master'
[friendica.git] / include / threads.php
index f80212fad49d972ffce710cfc76ac40d7dfca920..d88307ecfb648ff1c653b0f7bfb55ab22fbf77b3 100644 (file)
@@ -19,10 +19,6 @@ function add_thread($itemid, $onlyshadow = false) {
                logger("add_thread: Add thread for item ".$itemid." - ".print_r($result, true), LOGGER_DEBUG);
        }
 
-       // Store a shadow copy of public items for displaying a global community page?
-       if (!get_config('system', 'global_community'))
-               return;
-
        // is it already a copy?
        if (($itemid == 0) OR ($item['uid'] == 0))
                return;
@@ -32,7 +28,7 @@ function add_thread($itemid, $onlyshadow = false) {
                return;
 
        // is it an entry from a connector? Only add an entry for natively connected networks
-       if (!in_array($item["network"], array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS, NETWORK_FEED, "")))
+       if (!in_array($item["network"], array(NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS, "")))
                return;
 
        // Only do these checks if the post isn't a wall post
@@ -66,9 +62,11 @@ function add_thread($itemid, $onlyshadow = false) {
                if (!$r) {
                        // Preparing public shadow (removing user specific data)
                        require_once("include/items.php");
+                       require_once("include/Contact.php");
+
                        unset($item[0]['id']);
                        $item[0]['uid'] = 0;
-                       $item[0]['contact-id'] = 0;
+                       $item[0]['contact-id'] = get_contact($item[0]['author-link'], 0);
                        $public_shadow = item_store($item[0], false, false, true);
 
                        logger("add_thread: Stored public shadow for post ".$itemid." under id ".$public_shadow, LOGGER_DEBUG);
@@ -76,6 +74,35 @@ function add_thread($itemid, $onlyshadow = false) {
        }
 }
 
+function add_shadow_entry($item) {
+
+       // Is this a shadow entry?
+       if ($item['uid'] == 0)
+               return;
+
+       // Is there a shadow parent?
+       $r = q("SELECT `id` FROM `item` WHERE `uri` = '%s' AND `uid` = 0 LIMIT 1", dbesc($item['parent-uri']));
+       if (!count($r))
+               return;
+
+       // Is there already a shadow entry?
+       $r = q("SELECT `id` FROM `item` WHERE `uri` = '%s' AND `uid` = 0 LIMIT 1", dbesc($item['uri']));
+
+       if (count($r))
+               return;
+
+       // Preparing public shadow (removing user specific data)
+       require_once("include/items.php");
+       require_once("include/Contact.php");
+
+       unset($item['id']);
+       $item['uid'] = 0;
+       $item['contact-id'] = get_contact($item['author-link'], 0);
+       $public_shadow = item_store($item, false, false, true);
+
+       logger("Stored public shadow for comment ".$item['uri']." under id ".$public_shadow, LOGGER_DEBUG);
+}
+
 function update_thread_uri($itemuri, $uid) {
        $messages = q("SELECT `id` FROM `item` WHERE uri ='%s' AND uid=%d", dbesc($itemuri), intval($uid));
 
@@ -149,26 +176,26 @@ function delete_thread_uri($itemuri, $uid) {
 
        if(count($messages))
                foreach ($messages as $message)
-                       delete_thread($message["id"]);
+                       delete_thread($message["id"], $itemuri);
 }
 
-function delete_thread($itemid) {
-       $item = q("SELECT `uri`, `uid` FROM `thread` WHERE `iid` = %d", intval($itemid));
+function delete_thread($itemid, $itemuri = "") {
+       $item = q("SELECT `uid` FROM `thread` WHERE `iid` = %d", intval($itemid));
 
        $result = q("DELETE FROM `thread` WHERE `iid` = %d", intval($itemid));
 
        logger("delete_thread: Deleted thread for item ".$itemid." - ".print_r($result, true), LOGGER_DEBUG);
 
-       if (count($item)) {
+       if ($itemuri != "") {
                $r = q("SELECT `id` FROM `item` WHERE `uri` = '%s' AND NOT (`uid` IN (%d, 0))",
-                               dbesc($item["uri"]),
+                               dbesc($itemuri),
                                intval($item["uid"])
                        );
                if (!count($r)) {
                        $r = q("DELETE FROM `item` WHERE `uri` = '%s' AND `uid` = 0)",
-                               dbesc($item["uri"])
+                               dbesc($itemuri)
                        );
-                       logger("delete_thread: Deleted shadow for item ".$item["uri"]." - ".print_r($result, true), LOGGER_DEBUG);
+                       logger("delete_thread: Deleted shadow for item ".$itemuri." - ".print_r($result, true), LOGGER_DEBUG);
                }
        }
 }
@@ -210,9 +237,9 @@ function update_shadow_copy() {
 
        logger("start");
 
-       $messages = $db->q(sprintf("SELECT `iid` FROM `thread` WHERE `uid` != 0 AND `network` IN ('', '%s', '%s', '%s', '%s')
+       $messages = $db->q(sprintf("SELECT `iid` FROM `thread` WHERE `uid` != 0 AND `network` IN ('', '%s', '%s', '%s')
                                        AND `visible` AND NOT `deleted` AND NOT `moderated` AND NOT `private` ORDER BY `created`",
-                               NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_FEED, NETWORK_OSTATUS), true);
+                               NETWORK_DFRN, NETWORK_DIASPORA, NETWORK_OSTATUS), true);
 
        logger("fetched messages: ".count($messages));
        while ($message = $db->qfetch())