]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Ticket 2135: trim overlong repeats with ellipsis rather than failing.
authorBrion Vibber <brion@pobox.com>
Tue, 5 Jan 2010 23:04:08 +0000 (15:04 -0800)
committerBrion Vibber <brion@pobox.com>
Wed, 6 Jan 2010 00:11:02 +0000 (16:11 -0800)
In web interface and retweet/repeat API we show the original untrimmed text, but some back-compat API messages will still show the trimmed 'RT' version.
This matches Twitter's behavior on overlong retweets, though we're outputting the RT version in more API results than they do.

classes/Notice.php

index 93e94230d9c5e45a640db78fa82cf5b85ef0578c..6d75cbcade56f4f1a2b600df9cf70430d9f5a154 100644 (file)
@@ -1366,12 +1366,21 @@ class Notice extends Memcached_DataObject
     {
         $author = Profile::staticGet('id', $this->profile_id);
 
-        // FIXME: truncate on long repeats...?
-
         $content = sprintf(_('RT @%1$s %2$s'),
                            $author->nickname,
                            $this->content);
 
+        $maxlen = common_config('site', 'textlimit');
+        if (mb_strlen($content) > $maxlen) {
+            // Web interface and current Twitter API clients will
+            // pull the original notice's text, but some older
+            // clients and RSS/Atom feeds will see this trimmed text.
+            //
+            // Unfortunately this is likely to lose tags or URLs
+            // at the end of long notices.
+            $content = mb_substr($content, 0, $maxlen - 4) . ' ...';
+        }
+
         return self::saveNew($repeater_id, $content, $source,
                              array('repeat_of' => $this->id));
     }