From 56fd821c7eb492bf21632c6c581ec2fe4d75c574 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 8 Jul 2012 18:29:31 +0200 Subject: [PATCH] Fixed problems with images where the address contains special chars --- facebook/facebook.php | 10 +++++++--- privacy_image_cache/privacy_image_cache.php | 2 +- statusnet/statusnet.php | 6 +++++- twitter/twitter.php | 3 +++ 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/facebook/facebook.php b/facebook/facebook.php index 30f72862..51f1fc84 100644 --- a/facebook/facebook.php +++ b/facebook/facebook.php @@ -1004,6 +1004,10 @@ function facebook_post_hook(&$a,&$b) { if(preg_match("/\[img\](.*?)\[\/img\]/is",$b['body'],$matches)) $image = $matches[1]; + // When saved into the database the content is sent through htmlspecialchars + // That means that we have to decode all image-urls + $image = htmlspecialchars_decode($image); + // Checking for a bookmark element $body = $b['body']; if (strpos($body, "[bookmark") !== false) { @@ -1110,10 +1114,10 @@ function facebook_post_hook(&$a,&$b) { 'access_token' => $fb_token, 'message' => $msg ); - if(isset($image)) { + if(trim($image) != "") { $postvars['picture'] = $image; } - if(isset($link)) { + if(trim($link) != "") { $postvars['link'] = $link; // The following doesn't work - why? @@ -1121,7 +1125,7 @@ function facebook_post_hook(&$a,&$b) { $postvars['source'] = $link; } } - if(isset($linkname)) + if(trim($linkname) != "") $postvars['name'] = $linkname; } diff --git a/privacy_image_cache/privacy_image_cache.php b/privacy_image_cache/privacy_image_cache.php index b5cfb13e..cd8a65f8 100644 --- a/privacy_image_cache/privacy_image_cache.php +++ b/privacy_image_cache/privacy_image_cache.php @@ -127,7 +127,7 @@ function privacy_image_cache_img_cb($matches) { if (privacy_image_cache_is_local_image($matches[2])) return $matches[1] . $matches[2] . $matches[3]; - return $matches[1] . get_app()->get_baseurl() . "/privacy_image_cache/?url=" . escape_tags(addslashes(rawurlencode($matches[2]))) . $matches[3]; + return $matches[1] . get_app()->get_baseurl() . "/privacy_image_cache/?url=" . addslashes(rawurlencode(htmlspecialchars_decode($matches[2]))) . $matches[3]; } /** diff --git a/statusnet/statusnet.php b/statusnet/statusnet.php index b3a8a1a1..b433f57b 100755 --- a/statusnet/statusnet.php +++ b/statusnet/statusnet.php @@ -503,10 +503,14 @@ function statusnet_post_hook(&$a,&$b) { $msg = implode(' ', $e); $msg .= '... ' . $shortlink; } + + $msg = trim($msg); + // and now dent it :-) if(strlen($msg)) { $result = $dent->post('statuses/update', array('status' => $msg)); - logger('statusnet_post send, result: ' . print_r($result, true), LOGGER_DEBUG); + logger('statusnet_post send, result: ' . print_r($result, true). + "\nmessage: ".$msg, LOGGER_DEBUG."\nOriginal post: ".print_r($b)); if ($result->error) { logger('Send to StatusNet failed: "' . $result->error . '"'); } diff --git a/twitter/twitter.php b/twitter/twitter.php index 2849db96..04c1c87d 100755 --- a/twitter/twitter.php +++ b/twitter/twitter.php @@ -367,6 +367,9 @@ function twitter_post_hook(&$a,&$b) { $msg = implode(' ', $e); $msg .= '... ' . $shortlink; } + + $msg = trim($msg); + // and now tweet it :-) if(strlen($msg)) { $result = $tweet->post('statuses/update', array('status' => $msg)); -- 2.39.5