+ $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
+ // shorten all the links in a 200000 character long essay.
+ 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
+ $tmp = preg_replace( '/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism', '$3', $tmp);
+ $tmp = preg_replace( '/\[\\/?img(\\s+.*?\]|\])/i', '', $tmp);
+ $tmp = preg_replace( '/\[\\/?video(\\s+.*?\]|\])/i', '', $tmp);
+ $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
+ // 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);
+ // recycle 1
+ $recycle = html_entity_decode("♲ ", ENT_QUOTES, 'UTF-8');
+ $tmp = preg_replace( '/'.$recycle.'\[url\=(\w+.*?)\](\w+.*?)\[\/url\]/i', $recycle.'$2', $tmp);
+ // recycle 2
+ //$recycle = html_entity_decode("♻ ", ENT_QUOTES, 'UTF-8');
+ //$tmp = preg_replace( '/'.$recycle.'\[url\=(\w+.*?)\](\w+.*?)\[\/url\]/i', 'RT @$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);
+ // find all http or https links in the body of the entry and
+ // apply the shortener if the link is longer then 20 characters
+ if (( strlen($tmp)>$max_char ) && ( $max_char > 0 )) {
+ preg_match_all ( '/(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)/i', $tmp, $allurls );
+ foreach ($allurls as $url) {
+ foreach ($url as $u) {
+ if (strlen($u)>20) {
+ $sl = short_link($u);
+ $tmp = str_replace( $u, $sl, $tmp );
+ }
+ }
+ }
+ }
+ // ok, all the links we want to send out are save, now strip
+ // away the remaining bbcode
+ $msg = strip_tags(bbcode($tmp, false, false));