]> git.mxchange.org Git - friendica.git/commitdiff
Bugfix: Shadow copy. Improvement: Fetching of missing items for pictures
authorMichael Vogel <icarus@dabo.de>
Sun, 3 May 2015 19:25:03 +0000 (21:25 +0200)
committerMichael Vogel <icarus@dabo.de>
Sun, 3 May 2015 19:25:03 +0000 (21:25 +0200)
include/diaspora.php
include/threads.php

index a6e341729ce519b70aa8030c08bbf2d7682d6a1e..294690a48e6143774e5cee0ae045e79d2b87efb8 100755 (executable)
@@ -603,7 +603,7 @@ function diaspora_request($importer,$xml) {
                        if(count($self) && $contact['rel'] == CONTACT_IS_FOLLOWER) {
 
                                $arr = array();
-                               $arr['uri'] = $arr['parent-uri'] = item_new_uri($a->get_hostname(), $importer['uid']); 
+                               $arr['uri'] = $arr['parent-uri'] = item_new_uri($a->get_hostname(), $importer['uid']);
                                $arr['uid'] = $importer['uid'];
                                $arr['contact-id'] = $self[0]['id'];
                                $arr['wall'] = 1;
@@ -827,18 +827,6 @@ function diaspora_post($importer,$xml,$msg) {
                return;
        }
 
-       // allocate a guid on our system - we aren't fixing any collisions.
-       // we're ignoring them
-
-       $g = q("select * from guid where guid = '%s' limit 1",
-               dbesc($guid)
-       );
-       if(! count($g)) {
-               q("insert into guid ( guid ) values ( '%s' )",
-                       dbesc($guid)
-               );
-       }
-
        $created = unxmlify($xml->created_at);
        $private = ((unxmlify($xml->public) == 'false') ? 1 : 0);
 
@@ -1041,10 +1029,10 @@ function diaspora_fetch_message($guid, $server, $level = 0) {
        } else {
                // Maybe it is a reshare of a photo that will be delivered at a later time (testing)
                logger('no content found: '.print_r($source_xml,true));
-               $body = "";
+               return false;
        }
 
-       if ($body == "")
+       if (trim($body) == "")
                return false;
 
        $item["tag"] = '';
@@ -1150,18 +1138,6 @@ function diaspora_reshare($importer,$xml,$msg) {
 
        $person = find_diaspora_person_by_handle($orig_author);
 
-       // allocate a guid on our system - we aren't fixing any collisions.
-       // we're ignoring them
-
-       $g = q("select * from guid where guid = '%s' limit 1",
-               dbesc($guid)
-       );
-       if(! count($g)) {
-               q("insert into guid ( guid ) values ( '%s' )",
-                       dbesc($guid)
-               );
-       }
-
        $created = unxmlify($xml->created_at);
        $private = ((unxmlify($xml->public) == 'false') ? 1 : 0);
 
@@ -1270,18 +1246,6 @@ function diaspora_asphoto($importer,$xml,$msg) {
                return;
        }
 
-       // allocate a guid on our system - we aren't fixing any collisions.
-       // we're ignoring them
-
-       $g = q("select * from guid where guid = '%s' limit 1",
-               dbesc($guid)
-       );
-       if(! count($g)) {
-               q("insert into guid ( guid ) values ( '%s' )",
-                       dbesc($guid)
-               );
-       }
-
        $created = unxmlify($xml->created_at);
        $private = ((unxmlify($xml->public) == 'false') ? 1 : 0);
 
@@ -1683,7 +1647,7 @@ function diaspora_conversation($importer,$xml,$msg) {
                        dbesc($person['name']),
                        dbesc($person['photo']),
                        dbesc($person['url']),
-                       intval($contact['id']),  
+                       intval($contact['id']),
                        dbesc($subject),
                        dbesc($body),
                        0,
@@ -1705,7 +1669,7 @@ function diaspora_conversation($importer,$xml,$msg) {
                        'language' => $importer['language'],
                        'to_name' => $importer['username'],
                        'to_email' => $importer['email'],
-                       'uid' =>$importer['importer_uid'],
+                       'uid' =>$importer['uid'],
                        'item' => array('subject' => $subject, 'body' => $body),
                        'source_name' => $person['name'],
                        'source_link' => $person['url'],
@@ -1852,7 +1816,7 @@ function diaspora_photo($importer,$xml,$msg,$attempt=1) {
                intval($importer['uid']),
                dbesc($status_message_guid)
        );
-       if(! count($r)) {
+       if(!count($r)) {
                if($attempt <= 3) {
                        q("INSERT INTO dsprphotoq (uid, msg, attempt) VALUES (%d, '%s', %d)",
                           intval($importer['uid']),
@@ -1860,6 +1824,20 @@ function diaspora_photo($importer,$xml,$msg,$attempt=1) {
                           intval($attempt + 1)
                        );
                }
+
+               $r = q("SELECT `id` FROM `item` WHERE `uid` = 0 AND `guid` = '%s' LIMIT 1", dbesc($status_message_guid));
+               if(!count($r)) {
+                       // Fetching the missing item as a public shadow
+                       // To-Do: Doing it for every post that is missing
+                       $item = array();
+                       $item["author-link"] = $contact['url'];
+                       $item["owner-link"] = $contact['url'];
+
+                       DiasporaFetchGuidSub($status_message_guid, $item);
+
+                       logger("Storing missing item ".$status_message_guid." as public shadow", LOGGER_DEBUG);
+               }
+
                logger('diaspora_photo: attempt = ' . $attempt . '; status message not found: ' . $status_message_guid . ' for photo: ' . $guid);
                return;
        }
index d88307ecfb648ff1c653b0f7bfb55ab22fbf77b3..3cfa02564036b4d38577da017a31ee48f1b243a7 100644 (file)
@@ -112,7 +112,7 @@ function update_thread_uri($itemuri, $uid) {
 }
 
 function update_thread($itemid, $setmention = false) {
-       $items = q("SELECT `uid`, `uri`, `created`, `edited`, `commented`, `received`, `changed`, `wall`, `private`, `pubmail`, `moderated`, `visible`, `spam`, `starred`, `bookmark`, `contact-id`,
+       $items = q("SELECT `uid`, `guid`, `title`, `body`, `created`, `edited`, `commented`, `received`, `changed`, `wall`, `private`, `pubmail`, `moderated`, `visible`, `spam`, `starred`, `bookmark`, `contact-id`,
                        `deleted`, `origin`, `forum_mode`, `network`  FROM `item` WHERE `id` = %d AND (`parent` = %d OR `parent` = 0) LIMIT 1", intval($itemid), intval($itemid));
 
        if (!$items)
@@ -126,7 +126,7 @@ function update_thread($itemid, $setmention = false) {
        $sql = "";
 
        foreach ($item AS $field => $data)
-               if ($field != "uri") {
+               if (!in_array($field, array("guid", "title", "body"))) {
                        if ($sql != "")
                                $sql .= ", ";
 
@@ -135,40 +135,20 @@ function update_thread($itemid, $setmention = false) {
 
        $result = q("UPDATE `thread` SET ".$sql." WHERE `iid` = %d", intval($itemid));
 
-       logger("update_thread: Update thread for item ".$itemid." - ".print_r($result, true)." ".print_r($item, true), LOGGER_DEBUG);
+       logger("Update thread for item ".$itemid." - guid ".$item["guid"]." - ".print_r($result, true)." ".print_r($item, true), LOGGER_DEBUG);
 
        // Updating a shadow item entry
-       $items = q("SELECT `id`, `title`, `body`, `created`, `edited`, `commented`, `received`, `changed`, `wall`, `private`, `pubmail`,
-                       `moderated`, `visible`, `spam`, `starred`, `bookmark`, `deleted`, `origin`, `forum_mode`, `network`
-                       FROM `item` WHERE `uri` = '%s' AND `uid` = 0 LIMIT 1", dbesc($item["uri"]));
+       $items = q("SELECT `id` FROM `item` WHERE `guid` = '%s' AND `uid` = 0 LIMIT 1", dbesc($item["guid"]));
 
        if (!$items)
                return;
 
-       $item = $items[0];
-
-       $result = q("UPDATE `item` SET `title` = '%s', `body` = '%s', `network` = '%s' WHERE `id` = %d",
+       $result = q("UPDATE `item` SET `title` = '%s', `body` = '%s' WHERE `id` = %d",
                        dbesc($item["title"]),
                        dbesc($item["body"]),
-                       dbesc($item["network"]),
-                       intval($item["id"])
+                       intval($items[0]["id"])
                );
-       logger("update_thread: Updating public shadow for post ".$item["id"]." Result: ".print_r($result, true), LOGGER_DEBUG);
-
-       /*
-       $sql = "";
-
-       foreach ($item AS $field => $data)
-               if ($field != "id") {
-                       if ($sql != "")
-                               $sql .= ", ";
-
-                       $sql .= "`".$field."` = '".dbesc($data)."'";
-               }
-       //logger("update_thread: Updating public shadow for post ".$item["id"]." SQL: ".$sql, LOGGER_DEBUG);
-       $result = q("UPDATE `item` SET ".$sql." WHERE `id` = %d", intval($item["id"]));
-       logger("update_thread: Updating public shadow for post ".$item["id"]." Result: ".print_r($result, true), LOGGER_DEBUG);
-       */
+       logger("Updating public shadow for post ".$items[0]["id"]." - guid ".$item["guid"]." Result: ".print_r($result, true), LOGGER_DEBUG);
 }
 
 function delete_thread_uri($itemuri, $uid) {