* @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`,
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)
);
killme();
}
+ $items = $r;
$item = $r[0];
$r = q("SELECT `contact`.*, `user`.`nickname`, `user`.`timezone`, `user`.`page-flags`, `user`.`account-type`
$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;
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"]);