forked from friendica/friendica-addons
Merge pull request #68 from annando/master
facebook, libertree, privacy_image_cache, statusnet, twitter and tumblr ...
This commit is contained in:
commit
f0397d5237
6 changed files with 104 additions and 31 deletions
|
@ -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))
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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("/(<img [^>]*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("/(<img [^>]*src *= *[\"'])([^\"']+)([\"'][^>]*>)/siU", "privacy_image_cache_img_cb", $o);
|
||||
//$o = preg_replace_callback("/(<img [^>]*src *= *[\"'])([^\"']+)([\"'][^>]*>)/siU", "privacy_image_cache_img_cb", $o);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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('<br>','<br />'),"\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 . '"');
|
||||
}
|
||||
|
|
|
@ -204,19 +204,18 @@ function tumblr_send(&$a,&$b) {
|
|||
$params['embed'] = $link;
|
||||
if ($title != '')
|
||||
$params['caption'] = '<h1><a href="'.$link.'">'.$title.
|
||||
"</a></h1><p>".bbcode($body)."</p>";
|
||||
"</a></h1><p>".bbcode($body, false, false)."</p>";
|
||||
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);
|
||||
|
|
|
@ -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('<br>','<br />'),"\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) {
|
||||
|
@ -363,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));
|
||||
|
|
Loading…
Reference in a new issue