Brion Vibber [Tue, 5 Jan 2010 23:04:08 +0000 (15:04 -0800)]
Ticket 2135: trim overlong repeats with ellipsis rather than failing.
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.
Zach Copley [Thu, 31 Dec 2009 22:32:10 +0000 (22:32 +0000)]
- Use a stripped down new notice form for FB app because FB canvas apps
can't support image upload via multipart/form-data (and location sharing
is iffy).
- Deal with new error code 100 from Facebook, which seem to be for
inactive accounts.
Brion Vibber [Mon, 4 Jan 2010 22:38:56 +0000 (14:38 -0800)]
Exclude process-specific link & result cache references from serialized Memcached_Data_Object instances.
Should fix seemingly-random bugs due to destructor free()ing local resources by mistake.
Brion Vibber [Mon, 4 Jan 2010 21:01:17 +0000 (13:01 -0800)]
Ticket 2141: bugs with weighted popularity lists across year boundary.
Consolidated several separate implementations of the same weighting algorithm into common_sql_weight() and fixed some bugs...
For MySQL, now using timestampdiff() instead of subtraction for the comparison, so we get sane results when the year doesn't match, and utc_timestamp() rather than now() so we don't get negative ages for recent items with local server timezone.
Unknown whether the same problems affect PostgreSQL, but note that it lacks the timestampdiff() SQL function.
Evan Prodromou [Thu, 31 Dec 2009 22:38:58 +0000 (12:38 -1000)]
Script to update the location ID for users
Since we added locations to the database, some users may have
location strings in their profiles but not structured locations. This
script updates the locations for single users or for all users.
Brion Vibber [Wed, 30 Dec 2009 23:09:24 +0000 (15:09 -0800)]
temp debug logging hack for subscriber list early cutoff bug - we can see a cut off list at http://identi.ca/petercook/subscribers but haven't been able to explain it. will log a little data on the execution through the list
Evan Prodromou [Mon, 28 Dec 2009 20:42:22 +0000 (12:42 -0800)]
First version of blacklist plugin
First version of blacklist plugin. Replaces custom code in identi.ca's
config.php, which was getting scary and long. Also correctly handles
changed nicknames or URLs in profile settings and using 'forbidden'
URLs in notice text.
Brion Vibber [Wed, 23 Dec 2009 04:18:27 +0000 (20:18 -0800)]
Fix for massively slow friends timeline query due to indexing bug introduced with repeats.
Sorting on notice.id when our primary selector was notice_inbox.user_id caused a filesort and table scan of the notice table.
Switchng to notice_inbox's notice_id means we can use our index, and everything comes right up.
Before:
mysql> explain SELECT notice.id AS id FROM notice JOIN notice_inbox ON notice.id = notice_inbox.notice_id WHERE notice_inbox.user_id = 18574 AND notice.repeat_of IS NULL ORDER BY notice.id DESC LIMIT 61 OFFSET 0;
+----+-------------+--------------+--------+------------------------------------+---------+---------+-------------------------------+--------+----------------------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+--------------+--------+------------------------------------+---------+---------+-------------------------------+--------+----------------------------------------------+
| 1 | SIMPLE | notice_inbox | ref | PRIMARY,notice_inbox_notice_id_idx | PRIMARY | 4 | const | 102600 | Using index; Using temporary; Using filesort |
| 1 | SIMPLE | notice | eq_ref | PRIMARY | PRIMARY | 4 | stoica.notice_inbox.notice_id | 1 | Using index |
+----+-------------+--------------+--------+------------------------------------+---------+---------+-------------------------------+--------+----------------------------------------------+
After:
mysql> explain SELECT notice.id AS id FROM notice JOIN notice_inbox ON notice.id = notice_inbox.notice_id WHERE notice_inbox.user_id = 18574 AND notice.repeat_of IS NULL ORDER BY notice_id DESC LIMIT 61 OFFSET 0;
+----+-------------+--------------+--------+------------------------------------+---------+---------+-------------------------------+--------+--------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+--------------+--------+------------------------------------+---------+---------+-------------------------------+--------+--------------------------+
| 1 | SIMPLE | notice_inbox | ref | PRIMARY,notice_inbox_notice_id_idx | PRIMARY | 4 | const | 102816 | Using where; Using index |
| 1 | SIMPLE | notice | eq_ref | PRIMARY,notice_repeatof_idx | PRIMARY | 4 | stoica.notice_inbox.notice_id | 1 | Using where |
+----+-------------+--------------+--------+------------------------------------+---------+---------+-------------------------------+--------+--------------------------+
Brion Vibber [Sat, 19 Dec 2009 19:03:31 +0000 (14:03 -0500)]
Ignore user language settings that aren't listed in language config; we'll then fall back to current autodetection. This prevents the surprises where your profile suddenly switches to Arabic because it was selected by default due to lack of a match in the drop-down box.
Brion Vibber [Fri, 18 Dec 2009 14:36:30 +0000 (09:36 -0500)]
Followup fix for ticket 1672: Twitter bridge !group->#hash conversion will now happen regardless of whether account was configured with oauth or basic auth (previously applied only on the oauth path)
Brion Vibber [Tue, 15 Dec 2009 21:53:19 +0000 (13:53 -0800)]
PHP 5.3 closure-based implementation of curry(); old implementation used as fallback for older PHP versions. Added unit tests to confirm they both work!
Brion Vibber [Tue, 15 Dec 2009 00:36:01 +0000 (16:36 -0800)]
Add destructor on Memcached_DataObject to free DB_DataObject's global storage for an object when that object itself is destroyed.
Reduces some, but not all, memory leakage for long-running processes.