From c88c2515e43f7a446a9b358fb657290a8a6c847a Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Wed, 11 Apr 2012 19:31:01 +0200 Subject: [PATCH] API: Improved the timeline. Several (disabled) tests with caching of photos. --- include/api.php | 15 ++++++++++++--- include/conversation.php | 5 ----- mod/photo.php | 29 +++++++++++++++++++++++++++++ view/api_timeline_xml.tpl | 1 + 4 files changed, 42 insertions(+), 8 deletions(-) diff --git a/include/api.php b/include/api.php index ab83d63be4..0885a1434b 100644 --- a/include/api.php +++ b/include/api.php @@ -1233,8 +1233,17 @@ $in_reply_to_status_id = 0; } + // Workaround for ostatus messages where the title is identically to the body + $statusbody = trim(html2plain(bbcode($item['body']), 0)); + $statustitle = trim($item['title']); + + if (($statustitle != '') and (strpos($statusbody, $statustitle) !== false)) + $statustext = trim($statusbody); + else + $statustext = trim($statustitle."\n\n".$statusbody); + $status = array( - 'text' => trim($item['title']." \n".html2plain(bbcode($item['body']), 0)), + 'text' => $statustext, 'truncated' => False, 'created_at'=> api_date($item['created']), 'in_reply_to_status_id' => $in_reply_to_status_id, @@ -1245,8 +1254,8 @@ 'geo' => '', 'favorited' => $item['starred'] ? true : false, 'user' => $status_user , - 'statusnet_html' => bbcode($item['body']), - 'statusnet_conversation_id' => 0, + 'statusnet_html' => trim(bbcode($item['body'])), + 'statusnet_conversation_id' => $item['parent'], ); // Seesmic doesn't like the following content diff --git a/include/conversation.php b/include/conversation.php index df92a40ed0..a32cbeb8ba 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -626,10 +626,6 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { else $profile_avatar = (((strlen($item['author-avatar'])) && $diff_author) ? $item['author-avatar'] : $thumb); - - - - $like = ((x($alike,$item['id'])) ? format_like($alike[$item['id']],$alike[$item['id'] . '-l'],'like',$item['id']) : ''); $dislike = ((x($dlike,$item['id'])) ? format_like($dlike[$item['id']],$dlike[$item['id'] . '-l'],'dislike',$item['id']) : ''); @@ -1089,4 +1085,3 @@ function render_location_google($item) { } return $location; } - diff --git a/mod/photo.php b/mod/photo.php index 3a70251200..ec53af8996 100644 --- a/mod/photo.php +++ b/mod/photo.php @@ -4,6 +4,30 @@ require_once('include/security.php'); function photo_init(&$a) { + // To-Do: + // - checking with realpath + // - checking permissions + /* + $cache = get_config('system','itemcache'); + if (($cache != '') and is_dir($cache)) { + $cachefile = $cache."/".$a->argc."-".$a->argv[1]."-".$a->argv[2]."-".$a->argv[3]; + if (file_exists($cachefile)) { + $data = file_get_contents($cachefile); + + if(function_exists('header_remove')) { + header_remove('Pragma'); + header_remove('pragma'); + } + + header("Content-type: image/jpeg"); + header("Expires: " . gmdate("D, d M Y H:i:s", time() + (3600*24)) . " GMT"); + header("Cache-Control: max-age=" . (3600*24)); + echo $data; + killme(); + // NOTREACHED + } + }*/ + switch($a->argc) { case 4: $person = $a->argv[3]; @@ -27,6 +51,7 @@ function photo_init(&$a) { if(isset($type)) { + /** * Profile photos */ @@ -144,6 +169,10 @@ function photo_init(&$a) { } } + // Writing in cachefile + if ($cachefile != '') + file_put_contents($cachefile, $data); + if(function_exists('header_remove')) { header_remove('Pragma'); header_remove('pragma'); diff --git a/view/api_timeline_xml.tpl b/view/api_timeline_xml.tpl index 551439682a..4a32b411b5 100644 --- a/view/api_timeline_xml.tpl +++ b/view/api_timeline_xml.tpl @@ -11,6 +11,7 @@ $status.geo $status.favorited {{ inc api_user_xml.tpl with $user=$status.user }}{{ endinc }} $status.statusnet_html + $status.statusnet_conversation_id $status.url $status.coordinates $status.place