From 71347bb9e0c5daca206b0ea32812874e165b7b63 Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 6 Aug 2013 03:29:57 -0700 Subject: we've been storing json_encoded structures on disk in several places because it's a lot easier to parse than xml - but OMG do they get mangled - stored as single quoted strings when escaped as if double quoted. We need to use my new function json_decode_plus() wherever we need to parse one of these babies to make sure we get it right. Maybe we should've just used serialize(). --- include/conversation.php | 8 +++----- include/enotify.php | 3 ++- include/text.php | 8 ++++++++ version.inc | 2 +- 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/include/conversation.php b/include/conversation.php index fab8da9f9..2d92b37be 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -92,8 +92,8 @@ function item_redir_and_replace_images($body, $images, $cid) { function localize_item(&$item){ if (activity_match($item['verb'],ACTIVITY_LIKE) || activity_match($item['verb'],ACTIVITY_DISLIKE)){ - - $obj= json_decode($item['object'],true); + + $obj = json_decode_plus($item['object']); if($obj['author'] && $obj['author']['link']) $author_link = get_rel_link($obj['author']['link'],'alternate'); @@ -106,7 +106,7 @@ function localize_item(&$item){ $Bphoto = ''; - switch($obj->type) { + switch($obj['type']) { case ACTIVITY_OBJ_PHOTO: $post_type = t('photo'); break; @@ -142,12 +142,10 @@ function localize_item(&$item){ break; } - // If we couldn't parse something useful, don't bother translating. // We need something better than zid here, probably magic_link(), but it needs writing if($author_link && $author_name && $item_url) { - $author = '[zrl=' . chanlink_url($item['author']['xchan_url']) . ']' . $item['author']['xchan_name'] . '[/zrl]'; $objauthor = '[zrl=' . chanlink_url($author_link) . ']' . $author_name . '[/zrl]'; diff --git a/include/enotify.php b/include/enotify.php index 440156bb9..a15e42b73 100644 --- a/include/enotify.php +++ b/include/enotify.php @@ -50,13 +50,13 @@ function notification($params) { $additional_mail_header = ""; - if(array_key_exists('item',$params)) { // if it's a normal item... if(array_key_exists('verb',$params['item'])) { require_once('include/conversation.php'); // localize_item() alters the original item so make a copy first $i = $params['item']; + logger('calling localize'); localize_item($i); $title = $i['title']; $body = $i['body']; @@ -70,6 +70,7 @@ function notification($params) { $title = $body = ''; } + // e.g. "your post", "David's photo", etc. $possess_desc = t('%s '); diff --git a/include/text.php b/include/text.php index 814c564a3..979fd897a 100755 --- a/include/text.php +++ b/include/text.php @@ -1717,3 +1717,11 @@ function jindent($json) { } +function json_decode_plus($s) { + + $x = json_decode($s,true); + if(! $x) + $x = json_decode(str_replace(array('\\"','\\\\'),array('"','\\'),$s),true); + return $x; + +} \ No newline at end of file diff --git a/version.inc b/version.inc index 4c8f44e38..33795d3f2 100644 --- a/version.inc +++ b/version.inc @@ -1 +1 @@ -2013-08-05.396 +2013-08-06.397 -- cgit v1.2.3