diff --git a/facebook.tgz b/facebook.tgz
index 6ec94f3a8..ff920dc60 100644
Binary files a/facebook.tgz and b/facebook.tgz differ
diff --git a/facebook/facebook.php b/facebook/facebook.php
index 127456af5..6786febbb 100644
--- a/facebook/facebook.php
+++ b/facebook/facebook.php
@@ -418,7 +418,7 @@ function fb_get_friends($uid, $fullsync = true) {
return;
$s = fetch_url('https://graph.facebook.com/me/friends?access_token=' . $access_token);
if($s) {
- logger('facebook: fb_get_friends: ' . $s, LOGGER_DATA);
+ logger('facebook: fb_gwet_friends: ' . $s, LOGGER_DATA);
$j = json_decode($s);
logger('facebook: fb_get_friends: json: ' . print_r($j,true), LOGGER_DATA);
if(! $j->data)
@@ -1006,6 +1006,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) {
@@ -1088,38 +1092,42 @@ function facebook_post_hook(&$a,&$b) {
}
// Fallback - if message is empty
+ if(!strlen($msg))
+ $msg = $linkname;
+
if(!strlen($msg))
$msg = $link;
if(!strlen($msg))
$msg = $image;
- if(!strlen($msg))
- $msg = $linkname;
-
// If there is nothing to post then exit
if(!strlen($msg))
return;
logger('Facebook post: msg=' . $msg, LOGGER_DATA);
- if($likes) {
+ if($likes) {
$postvars = array('access_token' => $fb_token);
}
else {
+ // message, picture, link, name, caption, description, source, place, tags
$postvars = array(
- 'access_token' => $fb_token,
+ 'access_token' => $fb_token,
'message' => $msg
);
- if(isset($image)) {
+ if(trim($image) != "") {
$postvars['picture'] = $image;
- //$postvars['type'] = "photo";
}
- if(isset($link)) {
+ if(trim($link) != "") {
$postvars['link'] = $link;
- //$postvars['type'] = "link";
+
+ // The following doesn't work - why?
+ if ((stristr($link,'youtube')) || (stristr($link,'youtu.be')) || (stristr($link,'vimeo'))) {
+ $postvars['source'] = $link;
+ }
}
- if(isset($linkname))
+ if(trim($linkname) != "")
$postvars['name'] = $linkname;
}
@@ -1135,7 +1143,7 @@ function facebook_post_hook(&$a,&$b) {
if($reply) {
$url = 'https://graph.facebook.com/' . $reply . '/' . (($likes) ? 'likes' : 'comments');
- } else if (($link != "") or ($image != "") or ($b['title'] == '') or (strlen($msg) < 500)) {
+ } else if (($link != "") or ($image != "") or ($b['title'] == '') or (strlen($msg) < 500)) {
$url = 'https://graph.facebook.com/me/feed';
if($b['plink'])
$postvars['actions'] = '{"name": "' . t('View on Friendica') . '", "link": "' . $b['plink'] . '"}';
@@ -1780,7 +1788,7 @@ function fb_consume_stream($uid,$j,$wall = false) {
// oembed display a picture of the video as well
if ($entry->type != "video") {
if(isset($entry->picture) && isset($entry->link)) {
- $datarray['body'] .= "\n" . '[url=' . $entry->link . '][img]'.$entry->picture.'[/img][/url]';
+ $datarray['body'] .= "\n" . '[url=' . $entry->link . '][img]'.$entry->picture.'[/img][/url]';
}
else {
if(isset($entry->picture))
diff --git a/libertree.tgz b/libertree.tgz
index f467bc00c..a36e792b1 100644
Binary files a/libertree.tgz and b/libertree.tgz differ
diff --git a/libertree/libertree.php b/libertree/libertree.php
index 0e7e1a819..2809adee3 100755
--- a/libertree/libertree.php
+++ b/libertree/libertree.php
@@ -153,7 +153,8 @@ function libertree_send(&$a,&$b) {
$ltree_api_token = get_pconfig($b['uid'],'libertree','libertree_api_token');
$ltree_url = get_pconfig($b['uid'],'libertree','libertree_url');
$ltree_blog = "$ltree_url/api/v1/posts/create/?token=$ltree_api_token";
- $ltree_source = "Friendica";
+ //$ltree_source = "Friendica";
+ $ltree_source = "[".$a->config['sitename']."](".$a->get_baseurl().")";
if($ltree_url && $ltree_api_token && $ltree_blog && $ltree_source) {
require_once('include/bb2diaspora.php');
@@ -188,12 +189,12 @@ function libertree_send(&$a,&$b) {
} while ($oldbody != $body);
// convert to markdown
- $body = bb2diaspora($body);
+ $body = bb2diaspora($body, false, false);
// Adding the title
if(strlen($title))
$body = "## ".html_entity_decode($title)."\n\n".$body;
-
+
$params = array(
'text' => $body,
diff --git a/morechoice.tgz b/morechoice.tgz
index fcdc04f69..a00b7dccc 100644
Binary files a/morechoice.tgz and b/morechoice.tgz differ
diff --git a/morechoice/morechoice.php b/morechoice/morechoice.php
index e96f0c970..bf97b76bc 100644
--- a/morechoice/morechoice.php
+++ b/morechoice/morechoice.php
@@ -14,6 +14,7 @@ function morechoice_install() {
register_hook('gender_selector', 'addon/morechoice/morechoice.php', 'morechoice_gender_selector');
register_hook('sexpref_selector', 'addon/morechoice/morechoice.php', 'morechoice_sexpref_selector');
register_hook('marital_selector', 'addon/morechoice/morechoice.php', 'morechoice_marital_selector');
+ register_hook('poke_verbs', 'addon/morechoice/morechoice.php', 'morechoice_poke_verbs');
}
@@ -23,6 +24,7 @@ function morechoice_uninstall() {
unregister_hook('gender_selector', 'addon/morechoice/morechoice.php', 'morechoice_gender_selector');
unregister_hook('sexpref_selector', 'addon/morechoice/morechoice.php', 'morechoice_sexpref_selector');
unregister_hook('marital_selector', 'addon/morechoice/morechoice.php', 'morechoice_marital_selector');
+ unregister_hook('poke_verbs', 'addon/morechoice/morechoice.php', 'morechoice_poke_verbs');
}
@@ -122,3 +124,10 @@ function morechoice_marital_selector($a,&$b) {
$b[] = 'Wallowing in self-pity';
}
}
+
+function morechoice_poke_verbs($a,&$b) {
+ $b['bitchslap'] = array('bitchslapped', t('bitchslap'), t('bitchslapped'));
+ $b['shag'] = array('shag', t('shag'), t('shagged'));
+
+
+}
\ No newline at end of file
diff --git a/nsfw/nsfw.php b/nsfw/nsfw.php
index 4a65b7208..60ab45813 100755
--- a/nsfw/nsfw.php
+++ b/nsfw/nsfw.php
@@ -10,7 +10,7 @@
*/
function nsfw_install() {
- register_hook('prepare_body', 'addon/nsfw/nsfw.php', 'nsfw_prepare_body');
+ register_hook('prepare_body', 'addon/nsfw/nsfw.php', 'nsfw_prepare_body', 10);
register_hook('plugin_settings', 'addon/nsfw/nsfw.php', 'nsfw_addon_settings');
register_hook('plugin_settings_post', 'addon/nsfw/nsfw.php', 'nsfw_addon_settings_post');
diff --git a/privacy_image_cache.tgz b/privacy_image_cache.tgz
index 27943df53..9712a0677 100644
Binary files a/privacy_image_cache.tgz and b/privacy_image_cache.tgz differ
diff --git a/privacy_image_cache/privacy_image_cache.php b/privacy_image_cache/privacy_image_cache.php
index b7236d09d..f0d8e39ac 100644
--- a/privacy_image_cache/privacy_image_cache.php
+++ b/privacy_image_cache/privacy_image_cache.php
@@ -11,7 +11,8 @@ define("PRIVACY_IMAGE_CACHE_DEFAULT_TIME", 86400); // 1 Day
require_once('include/security.php');
function privacy_image_cache_install() {
- register_hook('bbcode', 'addon/privacy_image_cache/privacy_image_cache.php', 'privacy_image_cache_bbcode_hook');
+ register_hook('prepare_body', 'addon/privacy_image_cache/privacy_image_cache.php', 'privacy_image_cache_prepare_body_hook');
+ // register_hook('bbcode', 'addon/privacy_image_cache/privacy_image_cache.php', 'privacy_image_cache_bbcode_hook');
register_hook('display_item', 'addon/privacy_image_cache/privacy_image_cache.php', 'privacy_image_cache_display_item_hook');
register_hook('ping_xmlize', 'addon/privacy_image_cache/privacy_image_cache.php', 'privacy_image_cache_ping_xmlize_hook');
register_hook('cron', 'addon/privacy_image_cache/privacy_image_cache.php', 'privacy_image_cache_cron');
@@ -19,6 +20,7 @@ function privacy_image_cache_install() {
function privacy_image_cache_uninstall() {
+ unregister_hook('prepare_body', 'addon/privacy_image_cache/privacy_image_cache.php', 'privacy_image_cache_prepare_body_hook');
unregister_hook('bbcode', 'addon/privacy_image_cache/privacy_image_cache.php', 'privacy_image_cache_bbcode_hook');
unregister_hook('display_item', 'addon/privacy_image_cache/privacy_image_cache.php', 'privacy_image_cache_display_item_hook');
unregister_hook('ping_xmlize', 'addon/privacy_image_cache/privacy_image_cache.php', 'privacy_image_cache_ping_xmlize_hook');
@@ -30,6 +32,8 @@ function privacy_image_cache_module() {}
function privacy_image_cache_init() {
+ global $a;
+
if(function_exists('header_remove')) {
header_remove('Pragma');
header_remove('pragma');
@@ -39,6 +43,24 @@ function privacy_image_cache_init() {
// Double encoded url - happens with Diaspora
$urlhash2 = 'pic:' . sha1(urldecode($_REQUEST['url']));
+ $cache = get_config('system','itemcache');
+ if (($cache != '') and is_dir($cache)) {
+ $cachefile = $cache."/".hash("md5", $urlhash);
+ if (file_exists($cachefile)) {
+ $img_str = file_get_contents($cachefile);
+
+ $mime = image_type_to_mime_type(exif_imagetype($cachefile));
+
+ header("Content-type: $mime");
+ header("Expires: " . gmdate("D, d M Y H:i:s", time() + (3600*24)) . " GMT");
+ header("Cache-Control: max-age=" . (3600*24));
+
+ echo $img_str;
+
+ killme();
+ }
+ }
+
$r = q("SELECT * FROM `photo` WHERE `resource-id` in ('%s', '%s') LIMIT 1", $urlhash, $urlhash2);
if (count($r)) {
$img_str = $r[0]['data'];
@@ -47,9 +69,22 @@ function privacy_image_cache_init() {
} else {
require_once("Photo.php");
+ // It shouldn't happen but it does - spaces in URL
+ $_REQUEST['url'] = str_replace(" ", "+", $_REQUEST['url']);
+
$img_str = fetch_url($_REQUEST['url'],true);
- if (substr($img_str, 0, 6) == "GIF89a") {
- $mime = "image/gif";
+
+ $tempfile = tempnam("", "cache");
+ file_put_contents($tempfile, $img_str);
+ $mime = image_type_to_mime_type(exif_imagetype($tempfile));
+ unlink($tempfile);
+
+ // If there is an error then return a blank image
+ if ((substr($a->get_curl_code(), 0, 1) == "4") or (!$img_str)) {
+ $img_str = file_get_contents("images/blank.png");
+ $mime = "image/png";
+ //} else if (substr($img_str, 0, 6) == "GIF89a") {
+ } else if ($mime != "image/jpeg") {
$image = @imagecreatefromstring($img_str);
if($image === FALSE) die();
@@ -64,7 +99,7 @@ function privacy_image_cache_init() {
dbesc(''),
intval(imagesy($image)),
intval(imagesx($image)),
- 'image/gif',
+ $mime,
dbesc($img_str),
100,
intval(0),
@@ -81,6 +116,9 @@ function privacy_image_cache_init() {
}
}
+ // Writing in cachefile
+ if (isset($cachefile) && $cachefile != '')
+ file_put_contents($cachefile, $img_str);
header("Content-type: $mime");
header("Expires: " . gmdate("D, d M Y H:i:s", time() + (3600*24)) . " GMT");
@@ -111,16 +149,27 @@ function privacy_image_cache_is_local_image($url) {
*/
function privacy_image_cache_img_cb($matches) {
// following line changed per bug #431
- 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];
+ 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=" . addslashes(rawurlencode(htmlspecialchars_decode($matches[2]))) . $matches[3];
}
/**
* @param App $a
* @param string $o
*/
+function privacy_image_cache_prepare_body_hook(&$a, &$o) {
+ $o["html"] = preg_replace_callback("/(]*src *= *[\"'])([^\"']+)([\"'][^>]*>)/siU", "privacy_image_cache_img_cb", $o["html"]);
+}
+
+/**
+ * @param App $a
+ * @param string $o
+ * Function disabled because the plugin moved
+ */
function privacy_image_cache_bbcode_hook(&$a, &$o) {
- $o = preg_replace_callback("/(]*src *= *[\"'])([^\"']+)([\"'][^>]*>)/siU", "privacy_image_cache_img_cb", $o);
+ //$o = preg_replace_callback("/(]*src *= *[\"'])([^\"']+)([\"'][^>]*>)/siU", "privacy_image_cache_img_cb", $o);
}
diff --git a/showmore/showmore.php b/showmore/showmore.php
index 2b4d5d0fc..096fd3f70 100755
--- a/showmore/showmore.php
+++ b/showmore/showmore.php
@@ -66,6 +66,33 @@ function showmore_addon_settings_post(&$a,&$b) {
}
}
+function get_body_length($body) {
+ $string = trim($body);
+
+ // We need to get rid of hidden tags (display: none)
+
+ // Get rid of the warning. It would be better to have some valid html as input
+ $dom = @DomDocument::loadHTML($body);
+ $xpath = new DOMXPath($dom);
+
+ /*
+ * Checking any possible syntax of the style attribute with xpath is impossible
+ * So we just get any element with a style attribute, and check them with a regexp
+ */
+ $xr = $xpath->query('//*[@style]');
+ foreach($xr as $node) {
+ if(preg_match('/.*display: *none *;.*/',$node->getAttribute('style'))) {
+ // Hidden, remove it from its parent
+ $node->parentNode->removeChild($node);
+ }
+ }
+ // Now we can get the body of our HTML DomDocument, it contains only what is visible
+ $string = $dom->saveHTML();
+
+ $string = strip_tags($string);
+ return strlen($string);
+}
+
function showmore_prepare_body(&$a,&$b) {
$words = null;
@@ -76,7 +103,7 @@ function showmore_prepare_body(&$a,&$b) {
if(!$chars)
$chars = 1100;
- if (strlen(strip_tags(trim($b['html']))) > $chars) {
+ if (get_body_length($b['html']) > $chars) {
$found = true;
$shortened = trim(showmore_cutitem($b['html'], $chars))."...";
}
diff --git a/statusnet.tgz b/statusnet.tgz
index 51390d305..a9fe97967 100755
Binary files a/statusnet.tgz and b/statusnet.tgz differ
diff --git a/statusnet/statusnet.php b/statusnet/statusnet.php
index 99e844752..b433f57b2 100755
--- a/statusnet/statusnet.php
+++ b/statusnet/statusnet.php
@@ -482,9 +482,14 @@ function statusnet_post_hook(&$a,&$b) {
}
// ok, all the links we want to send out are save, now strip
// away the remaining bbcode
- $msg = strip_tags(bbcode($tmp, false, false));
+ //$msg = strip_tags(bbcode($tmp, false, false));
+ $msg = bbcode($tmp, false, false);
+ $msg = str_replace(array('
','
'),"\n",$msg);
+ $msg = strip_tags($msg);
+
// quotes not working - let's try this
$msg = html_entity_decode($msg);
+
if (( strlen($msg) > $max_char) && $max_char > 0) {
$shortlink = short_link( $b['plink'] );
// the new message will be shortened such that "... $shortlink"
@@ -498,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/tumblr.tgz b/tumblr.tgz
index 2a137b54f..fe0389554 100755
Binary files a/tumblr.tgz and b/tumblr.tgz differ
diff --git a/tumblr/tumblr.php b/tumblr/tumblr.php
index 03a67949b..eeb51348b 100755
--- a/tumblr/tumblr.php
+++ b/tumblr/tumblr.php
@@ -204,19 +204,18 @@ function tumblr_send(&$a,&$b) {
$params['embed'] = $link;
if ($title != '')
$params['caption'] = '
".bbcode($body)."
"; + "".bbcode($body, false, false)."
"; else - $params['caption'] = bbcode($body); + $params['caption'] = bbcode($body, false, false); } else if (($link != '') and !$video) { $params['type'] = "link"; $params['name'] = $title; $params['url'] = $link; - //$params['description'] = bbcode($body); - $params['description'] = bbcode($b["body"]); + $params['description'] = bbcode($b["body"], false, false); } else { $params['type'] = "regular"; $params['title'] = $title; - $params['body'] = bbcode($b['body']); + $params['body'] = bbcode($b['body'], false, false); } $x = post_url($tmbl_blog,$params); diff --git a/twitter.tgz b/twitter.tgz index 192d6f85d..ec5d55d5c 100755 Binary files a/twitter.tgz and b/twitter.tgz differ diff --git a/twitter/twitter.php b/twitter/twitter.php index 9984f3695..d55e3b73c 100755 --- a/twitter/twitter.php +++ b/twitter/twitter.php @@ -209,7 +209,7 @@ function twitter_settings(&$a,&$s) { $s .= ''; } } - $s .= ''; + $s .= ''; } @@ -347,7 +347,11 @@ function twitter_post_hook(&$a,&$b) { } // ok, all the links we want to send out are save, now strip // away the remaining bbcode - $msg = strip_tags(bbcode($tmp, false, false)); + //$msg = strip_tags(bbcode($tmp, false, false)); + $msg = bbcode($tmp, false, false); + $msg = str_replace(array('