if ($a->argc == 3) {
if (substr($a->argv[2], -5) == '.atom') {
$item_id = substr($a->argv[2], 0, -5);
- $xml = dfrn::itemFeed($item_id);
- if ($xml == '') {
- http_status_exit(500);
- }
- header("Content-type: application/atom+xml");
- echo $xml;
- killme();
+ displayShowFeed($item_id);
}
}
AND `item`.`guid` = ? LIMIT 1", $a->argv[1]);
}
if (dbm::is_result($r)) {
+
+ if (strstr($_SERVER['HTTP_ACCEPT'], 'application/atom+xml')) {
+ logger('Directly serving XML for id '.$r["id"], LOGGER_DEBUG);
+ displayShowFeed($r["id"]);
+ }
+
if ($r["id"] != $r["parent"]) {
$r = dba::fetch_first("SELECT `id`, `author-name`, `author-link`, `author-avatar`, `network`, `body`, `uid`, `owner-link` FROM `item`
WHERE `item`.`visible` AND NOT `item`.`deleted` AND NOT `item`.`moderated`
}
// We are displaying an "alternate" link if that post was public. See issue 2864
- $is_public = dba::exists('item', array('id' => $item_id, 'private' => false, 'wall' => true));
+ $is_public = dba::exists('item', array('id' => $item_id, 'private' => false));
if ($is_public) {
$alternate = System::baseUrl().'/display/'.$nick.'/'.$item_id.'.atom';
} else {
}
}
- $r = dba::p(item_query()." AND `item`.`uid` = ?
- AND `item`.`parent` = (SELECT `parent` FROM `item` WHERE `id` = ?)
+ $r = dba::p(item_query()."AND `item`.`parent` = (SELECT `parent` FROM `item` WHERE `id` = ?)
$sql_extra
ORDER BY `parent` DESC, `gravity` ASC, `id` ASC",
- $a->profile['uid'],
$item_id
);
return $o;
}
-
$r = dba::fetch_first("SELECT `id`,`deleted` FROM `item` WHERE `id` = ? OR `uri` = ? LIMIT 1",
$item_id,
$item_id
);
- if ($r) {
+ if (dbm::is_result($r)) {
if ($r['deleted']) {
notice(t('Item has been removed.') . EOL);
} else {
return $o;
}
+function displayShowFeed($item_id) {
+ $xml = dfrn::itemFeed($item_id);
+ if ($xml == '') {
+ http_status_exit(500);
+ }
+ header("Content-type: application/atom+xml");
+ echo $xml;
+ killme();
+}