X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=twitter%2Ftwitter.php;h=5e01db959f1973b2d66802dabdd501f898baeb19;hb=804bc7a0673cab728195aa538fdd924dff2f0a6c;hp=808768f8305bbefccfcf8b9750e935c582ca5b6a;hpb=e5499d75db18cd93d1f4c8db5ecf9298e3ec255c;p=friendica-addons.git diff --git a/twitter/twitter.php b/twitter/twitter.php index 808768f8..5e01db95 100755 --- a/twitter/twitter.php +++ b/twitter/twitter.php @@ -3,10 +3,36 @@ * Name: Twitter Connector * Description: Relay public postings to a connected Twitter account * Version: 1.0.4 - * Author: Tobias Diekershoff + * Author: Tobias Diekershoff + * Author: Michael Vogel + * + * Copyright (c) 2011-2013 Tobias Diekershoff, Michael Vogel + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * * copyright notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the distribution. + * * Neither the name of the nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * */ - - + /* Twitter Plugin for Friendica * * Author: Tobias Diekershoff @@ -32,8 +58,6 @@ * from "Settings -> Plugin Settings". * * Requirements: PHP5, curl [Slinky library] - * - * Documentation: http://diekershoff.homeunix.net/redmine/wiki/friendikaplugin/Twitter_Plugin */ define('TWITTER_DEFAULT_POLL_INTERVAL', 5); // given in minutes @@ -351,6 +375,8 @@ function twitter_shortenmsg($b) { while (strpos($msg, " ") !== false) $msg = str_replace(" ", " ", $msg); + $origmsg = $msg; + // Removing URLs $msg = preg_replace('/(https?\:\/\/[a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)/i', "", $msg); @@ -386,11 +412,31 @@ function twitter_shortenmsg($b) { if (($msglink == "") and strlen($msg) > $max_char) $msglink = $b["plink"]; - if (strlen($msglink) > 20) - $msglink = short_link($msglink); + // If the message is short enough then don't modify it. + if ((strlen(trim($origmsg)) <= $max_char) AND ($msglink == "")) + return(trim($origmsg)); - if (strlen(trim($msg." ".$msglink)) > $max_char) { - $msg = substr($msg, 0, $max_char - (strlen($msglink))); + // If the message is short enough and the link exists in the original message don't modify it as well + // -3 because of the bad shortener of twitter + if ((strlen(trim($origmsg)) <= ($max_char - 3)) AND strpos($origmsg, $msglink)) + return(trim($origmsg)); + + // Preserve the unshortened link + $orig_link = $msglink; + + //if (strlen($msglink) > 20) + // $msglink = short_link($msglink); + // + //if (strlen(trim($msg." ".$msglink)) > ($max_char - 3)) { + // $msg = substr($msg, 0, ($max_char - 3) - (strlen($msglink))); + + // Just replace the message link with a 15 character long string + // Twitter shortens it anyway to this length + if (trim($msglink) <> '') + $msglink = "123456789012345"; + + if (strlen(trim($msg." ".$msglink)) > ($max_char)) { + $msg = substr($msg, 0, ($max_char) - (strlen($msglink))); $lastchar = substr($msg, -1); $msg = substr($msg, 0, -1); $pos = strrpos($msg, "\n"); @@ -399,13 +445,14 @@ function twitter_shortenmsg($b) { else if ($lastchar != "\n") $msg = substr($msg, 0, -3)."..."; } - $msg = str_replace("\n", " ", $msg); + //$msg = str_replace("\n", " ", $msg); // Removing multiple spaces - again while (strpos($msg, " ") !== false) $msg = str_replace(" ", " ", $msg); - return(trim($msg." ".$msglink)); + //return(trim($msg." ".$msglink)); + return(trim($msg."\n".$orig_link)); } function twitter_post_hook(&$a,&$b) { @@ -505,7 +552,7 @@ 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 = bbcode($tmp, false, false); + $msg = bbcode($tmp, false, false, true); $msg = str_replace(array('
','
'),"\n",$msg); $msg = strip_tags($msg); @@ -613,6 +660,10 @@ function twitter_fetchtimeline($a, $uid) { $parameters["since_id"] = $lastid; $items = $connection->get('statuses/user_timeline', $parameters); + + if (!is_array($items)) + return; + $posts = array_reverse($items); if (count($posts)) { @@ -627,6 +678,7 @@ function twitter_fetchtimeline($a, $uid) { $_SESSION["authenticated"] = true; $_SESSION["uid"] = $uid; + unset($_REQUEST); $_REQUEST["type"] = "wall"; $_REQUEST["api_source"] = true; $_REQUEST["profile_uid"] = $uid; @@ -634,6 +686,8 @@ function twitter_fetchtimeline($a, $uid) { //$_REQUEST["date"] = $post->created_at; + $_REQUEST["title"] = ""; + $_REQUEST["body"] = $post->text; if (is_string($post->place->name)) $_REQUEST["location"] = $post->place->name;