From e7aa2b99a116c71c8ff625daa33442fbee3e9fce Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 16 Jun 2013 13:28:04 +0200 Subject: [PATCH] OStatus: identi.ca seemed to have changed the format of activity streams for their migration. This fixes it API: It is now possible to fetch only posts from one thread. --- include/api.php | 22 ++++++++++++++++++---- include/ostatus_conversation.php | 4 ++++ 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/include/api.php b/include/api.php index 45cad9ca8..5b26328d0 100644 --- a/include/api.php +++ b/include/api.php @@ -741,8 +741,9 @@ if ($page<0) $page=0; $since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0); $max_id = (x($_REQUEST,'max_id')?$_REQUEST['max_id']:0); - $exclude_replies = (x($_REQUEST,'exclude_replies')?1:0); //$since_id = 0;//$since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0); + $exclude_replies = (x($_REQUEST,'exclude_replies')?1:0); + $parent_id = (x($_REQUEST,'parent_id')?$_REQUEST['parent_id']:0); $start = $page*$count; @@ -753,6 +754,8 @@ $sql_extra .= ' AND `item`.`id` <= '.intval($max_id); if ($exclude_replies > 0) $sql_extra .= ' AND `item`.`parent` = `item`.`id`'; + if ($parent_id > 0) + $sql_extra .= ' AND `item`.`parent` = '.intval($parent_id); $r = q("SELECT `item`.*, `item`.`id` AS `item_id`, `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`, @@ -816,6 +819,8 @@ $since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0); $max_id = (x($_REQUEST,'max_id')?$_REQUEST['max_id']:0); //$since_id = 0;//$since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0); + $exclude_replies = (x($_REQUEST,'exclude_replies')?1:0); + $parent_id = (x($_REQUEST,'parent_id')?$_REQUEST['parent_id']:0); $start = $page*$count; @@ -823,6 +828,10 @@ if ($max_id > 0) $sql_extra = 'AND `item`.`id` <= '.intval($max_id); + if ($exclude_replies > 0) + $sql_extra .= ' AND `item`.`parent` = `item`.`id`'; + if ($parent_id > 0) + $sql_extra .= ' AND `item`.`parent` = '.intval($parent_id); /*$r = q("SELECT `item`.*, `item`.`id` AS `item_id`, `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`, @@ -1124,14 +1133,19 @@ $page = (x($_REQUEST,'page')?$_REQUEST['page']-1:0); if ($page<0) $page=0; $since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0); - $exclude_replies = (x($_REQUEST,'exclude_replies')?1:0); //$since_id = 0;//$since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0); - + $exclude_replies = (x($_REQUEST,'exclude_replies')?1:0); + $parent_id = (x($_REQUEST,'parent_id')?$_REQUEST['parent_id']:0); + $start = $page*$count; $sql_extra = ''; if ($user_info['self']==1) $sql_extra .= " AND `item`.`wall` = 1 "; - if ($exclude_replies > 0) $sql_extra .= ' AND `item`.`parent` = `item`.`id`'; + + if ($exclude_replies > 0) + $sql_extra .= ' AND `item`.`parent` = `item`.`id`'; + if ($parent_id > 0) + $sql_extra .= ' AND `item`.`parent` = '.intval($parent_id); $r = q("SELECT `item`.*, `item`.`id` AS `item_id`, `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`, diff --git a/include/ostatus_conversation.php b/include/ostatus_conversation.php index c63acfadc..480506a06 100644 --- a/include/ostatus_conversation.php +++ b/include/ostatus_conversation.php @@ -100,6 +100,10 @@ function complete_conversation($itemid, $conversation_url, $only_add_conversatio $items = array_reverse($items); foreach ($items as $single_conv) { + // identi.ca just changed the format of the activity streams. This is a quick fix. + if (@is_string($single_conv->object->id)) + $single_conv->id = $single_conv->object->id; + if (@!$single_conv->id AND $single_conv->provider->url AND $single_conv->statusnet_notice_info->local_id) $single_conv->id = $single_conv->provider->url."notice/".$single_conv->statusnet_notice_info->local_id;