X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=include%2Fdfrn.php;h=728a043ccd40e2279451cda17ff714c6561afe80;hb=143e7fc6b707f377d383a498999ce712d04dd102;hp=eb0f9fbb4ee0d0fd7513095f053d31f83e8f246b;hpb=4c75c59039cc9788eb351e74c637019a5361a021;p=friendica.git diff --git a/include/dfrn.php b/include/dfrn.php index eb0f9fbb4e..728a043ccd 100644 --- a/include/dfrn.php +++ b/include/dfrn.php @@ -289,10 +289,17 @@ class dfrn { * @brief Generate an atom entry for a given item id * * @param int $item_id The item id + * @param boolean $conversation Show the conversation. If false show the single post. * * @return string DFRN feed entry */ - public static function itemFeed($item_id) { + public static function itemFeed($item_id, $conversation = false) { + if ($conversation) { + $condition = '`item`.`parent`'; + } else { + $condition = '`item`.`id`'; + } + $r = q("SELECT `item`.*, `item`.`id` AS `item_id`, `contact`.`name`, `contact`.`network`, `contact`.`photo`, `contact`.`url`, `contact`.`name-date`, `contact`.`uri-date`, `contact`.`avatar-date`, @@ -302,8 +309,9 @@ class dfrn { STRAIGHT_JOIN `contact` ON `contact`.`id` = `item`.`contact-id` AND (NOT `contact`.`blocked` OR `contact`.`pending`) LEFT JOIN `sign` ON `sign`.`iid` = `item`.`id` - WHERE `item`.`id` = %d AND `item`.`visible` AND NOT `item`.`moderated` AND `item`.`parent` != 0 + WHERE %s = %d AND `item`.`visible` AND NOT `item`.`moderated` AND `item`.`parent` != 0 AND NOT `item`.`private`", + $condition, intval($item_id) ); @@ -311,6 +319,7 @@ class dfrn { killme(); } + $items = $r; $item = $r[0]; $r = q("SELECT `contact`.*, `user`.`nickname`, `user`.`timezone`, `user`.`page-flags`, `user`.`account-type` @@ -327,12 +336,31 @@ class dfrn { $doc = new DOMDocument('1.0', 'utf-8'); $doc->formatOutput = true; + $type = 'html'; - $alternatelink = $owner['url']; + if ($conversation) { + $root = $doc->createElementNS(NAMESPACE_ATOM1, 'feed'); + $doc->appendChild($root); - $type = 'html'; + $root->setAttribute("xmlns:thr", NAMESPACE_THREAD); + $root->setAttribute("xmlns:at", NAMESPACE_TOMB); + $root->setAttribute("xmlns:media", NAMESPACE_MEDIA); + $root->setAttribute("xmlns:dfrn", NAMESPACE_DFRN); + $root->setAttribute("xmlns:activity", NAMESPACE_ACTIVITY); + $root->setAttribute("xmlns:georss", NAMESPACE_GEORSS); + $root->setAttribute("xmlns:poco", NAMESPACE_POCO); + $root->setAttribute("xmlns:ostatus", NAMESPACE_OSTATUS); + $root->setAttribute("xmlns:statusnet", NAMESPACE_STATUSNET); - $root = self::entry($doc, $type, $item, $owner, true, 0, true); + //$root = self::add_header($doc, $owner, "dfrn:owner", "", false); + + foreach ($items as $item) { + $entry = self::entry($doc, $type, $item, $owner, true, 0); + $root->appendChild($entry); + } + } else { + $root = self::entry($doc, $type, $item, $owner, true, 0, true); + } $atom = trim($doc->saveXML()); return $atom; @@ -1978,15 +2006,13 @@ class dfrn { return false; } - $r = q("UPDATE `item` SET `title` = '%s', `body` = '%s', `tag` = '%s', `edited` = '%s', `changed` = '%s' WHERE `uri` = '%s' AND `uid` IN (0, %d)", - dbesc($item["title"]), - dbesc($item["body"]), - dbesc($item["tag"]), - dbesc(datetime_convert("UTC","UTC",$item["edited"])), - dbesc(datetime_convert()), - dbesc($item["uri"]), - intval($importer["importer_uid"]) - ); + $fields = array('title' => $item["title"], 'body' => $item["body"], + 'tag' => $item["tag"], 'changed' => datetime_convert(), + 'edited' => datetime_convert("UTC", "UTC", $item["edited"])); + + $condition = array("`uri` = ? AND `uid` IN (0, ?)", $item["uri"], $importer["importer_uid"]); + dba::update('item', $fields, $condition); + create_tags_from_itemuri($item["uri"], $importer["importer_uid"]); update_thread_uri($item["uri"], $importer["importer_uid"]);