X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=statusnet%2Fstatusnet.php;h=d7ec4abb3948e89016abe026157d8d3ac2fbcffd;hb=57441b4def0f4bb42044ea444b6c59bcaa166d61;hp=8f2fbf8190965e9a95a0a2237e3985ae341d4b2d;hpb=e81e7f7e79710233c0aeac9f8039bf6548cf8013;p=friendica-addons.git diff --git a/statusnet/statusnet.php b/statusnet/statusnet.php index 8f2fbf81..d7ec4abb 100755 --- a/statusnet/statusnet.php +++ b/statusnet/statusnet.php @@ -2,8 +2,8 @@ /** * Name: StatusNet Connector * Description: Relay public postings to a connected StatusNet account - * Version: 1.0.3 - * Author: Tobias Diekershoff + * Version: 1.0.5 + * Author: Tobias Diekershoff */ /* StatusNet Plugin for Friendica @@ -155,6 +155,7 @@ function statusnet_settings_post ($a,$post) { del_pconfig( local_user(), 'statusnet', 'oauthtoken' ); del_pconfig( local_user(), 'statusnet', 'oauthsecret' ); del_pconfig( local_user(), 'statusnet', 'baseapi' ); + del_pconfig( local_user(), 'statusnet', 'post_taglinks'); } else { if (isset($_POST['statusnet-preconf-apiurl'])) { /*** @@ -218,14 +219,16 @@ function statusnet_settings_post ($a,$post) { // ok, now that we have the Access Token, save them in the user config set_pconfig(local_user(),'statusnet', 'oauthtoken', $token['oauth_token']); set_pconfig(local_user(),'statusnet', 'oauthsecret', $token['oauth_token_secret']); - set_pconfig(local_user(),'statusnet', 'post', 1); + set_pconfig(local_user(),'statusnet', 'post', 1); + set_pconfig(local_user(),'statusnet', 'post_taglinks', 1); // reload the Addon Settings page, if we don't do it see Bug #42 goaway($a->get_baseurl().'/settings/connectors'); } else { // if no PIN is supplied in the POST variables, the user has changed the setting - // to post a tweet for every new __public__ posting to the wall + // to post a dent for every new __public__ posting to the wall set_pconfig(local_user(),'statusnet','post',intval($_POST['statusnet-enable'])); - set_pconfig(local_user(),'statusnet','post_by_default',intval($_POST['statusnet-default'])); + set_pconfig(local_user(),'statusnet','post_by_default',intval($_POST['statusnet-default'])); + set_pconfig(local_user(),'statusnet','post_taglinks',intval($_POST['statusnet-sendtaglinks'])); info( t('StatusNet settings updated.') . EOL); }}}} } @@ -247,7 +250,9 @@ function statusnet_settings(&$a,&$s) { $enabled = get_pconfig(local_user(), 'statusnet', 'post'); $checked = (($enabled) ? ' checked="checked" ' : ''); $defenabled = get_pconfig(local_user(),'statusnet','post_by_default'); - $defchecked = (($defenabled) ? ' checked="checked" ' : ''); + $defchecked = (($defenabled) ? ' checked="checked" ' : ''); + $linksenabled = get_pconfig(local_user(),'statusnet','post_taglinks'); + $linkschecked = (($linksenabled) ? ' checked="checked" ' : ''); $s .= '
'; $s .= '

'. t('StatusNet Posting Settings').'

'; @@ -336,6 +341,9 @@ function statusnet_settings(&$a,&$s) { $s .= '
'; $s .= ''; $s .= ''; + $s .= '
'; + $s .= ''; + $s .= ''; $s .= '
'; $s .= '
'; @@ -418,14 +426,19 @@ function statusnet_post_hook(&$a,&$b) { if($ckey && $csecret && $otoken && $osecret) { - require_once('include/bbcode.php'); + require_once('include/bbcode.php'); $dent = new StatusNetOAuth($api,$ckey,$csecret,$otoken,$osecret); $max_char = $dent->get_maxlength(); // max. length for a dent // we will only work with up to two times the length of the dent - // we can later send to StatusNet. This way we can "gain" some - // information during shortening of potential links but do not + // we can later send to StatusNet. This way we can "gain" some + // information during shortening of potential links but do not // shorten all the links in a 200000 character long essay. - $tmp = substr($b['body'], 0, 2*$max_char); + if (! $b['title']=='') { + $tmp = $b['title'].": \n".$b['body']; +// $tmp = substr($tmp, 0, 4*$max_char); + } else { + $tmp = $b['body']; // substr($b['body'], 0, 3*$max_char); + } // if [url=bla][img]blub.png[/img][/url] get blub.png $tmp = preg_replace( '/\[url\=(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)\]\[img\](\\w+.*?)\\[\\/img\]\\[\\/url\]/i', '$2', $tmp); // preserve links to images, videos and audios @@ -435,11 +448,16 @@ function statusnet_post_hook(&$a,&$b) { $tmp = preg_replace( '/\[\\/?youtube(\\s+.*?\]|\])/i', '', $tmp); $tmp = preg_replace( '/\[\\/?vimeo(\\s+.*?\]|\])/i', '', $tmp); $tmp = preg_replace( '/\[\\/?audio(\\s+.*?\]|\])/i', '', $tmp); + $linksenabled = get_pconfig($b['uid'],'statusnet','post_taglinks'); // if a #tag is linked, don't send the [url] over to SN - // this is commented out by default as it means backlinks - // to friendica, if you don't like this feel free to - // uncomment the following line -// $tmp = preg_replace( '/#\[url\=(\w+.*?)\](\w+.*?)\[\/url\]/i', '#$2', $tmp); + // that is, don't send if the option is not set in the + // connector settings + if ($linksenabled=='0') { + // #-tags + $tmp = preg_replace( '/#\[url\=(\w+.*?)\](\w+.*?)\[\/url\]/i', '#$2', $tmp); + // @-mentions + $tmp = preg_replace( '/@\[url\=(\w+.*?)\](\w+.*?)\[\/url\]/i', '@$2', $tmp); + } // preserve links to webpages $tmp = preg_replace( '/\[url\=(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)\](\w+.*?)\[\/url\]/i', '$2 $1', $tmp); $tmp = preg_replace( '/\[bookmark\=(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)\](\w+.*?)\[\/bookmark\]/i', '$2 $1', $tmp); @@ -458,19 +476,30 @@ 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)); + $msg = strip_tags(bbcode($tmp, false, false)); // 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" // will fit into the character limit - $msg = substr($msg, 0, $max_char-strlen($shortlink)-4); + $msg = nl2br(substr($msg, 0, $max_char-strlen($shortlink)-4)); + $msg = str_replace(array('
','
'),' ',$msg); + $e = explode(' ', $msg); + // remove the last word from the cut down message to + // avoid sending cut words to the MicroBlog + array_pop($e); + $msg = implode(' ', $e); $msg .= '... ' . $shortlink; } - // and now tweet it :-) - if(strlen($msg)) - $dent->post('statuses/update', array('status' => $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); + if ($result->error) { + logger('Send to StatusNet failed: "' . $result->error . '"'); + } + } } }