]> git.mxchange.org Git - friendica.git/blobdiff - include/threads.php
Merge remote-tracking branch 'upstream/master'
[friendica.git] / include / threads.php
index 28bf87f4dae97a7a1ee650a7d022145ff235b876..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;
@@ -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);
                }
        }
 }