Commit Graph

1088 Commits

Author SHA1 Message Date
Brion Vibber
3cb6b1670b Merge branch 'master' into testing 2010-02-17 10:13:35 -08:00
Craig Andrews
8e07926a9c parse_url returns an associative array - not an object 2010-02-17 10:10:07 -08:00
Brion Vibber
9f3246124d PostDebug plugin - saves POST data to debug log or directory to help debug form submission and server-to-server communications.
Some sensitive items are sanitized but not all - don't just shove out the log results publicly!
2010-02-17 09:58:34 -08:00
Craig Andrews
46e9aa13aa htmloutputter->script() special cases src's that begin with plugin/ or local/ so that plugins don't need to include common_path() in every call to $action->script()
Adjust plugins to not call common_path() when it's not necessary
Fix minify plugin
2010-02-17 12:03:14 -05:00
Craig Andrews
c19300272f parse_url returns an associative array - not an object 2010-02-17 12:02:59 -05:00
Craig Andrews
389e6d54bf Fix script references in infinite scroll plugin and autocomplete plugin
Add indicator.gif used by autocomplete plugin
2010-02-17 10:29:08 -05:00
Brion Vibber
e51e96d724 OStatus: override source link with the source domain and link to original message 2010-02-17 02:16:03 +00:00
Brion Vibber
454d0b5738 OStatus: moving parts of profile processing to Activity from feedmunger. Pausing before refactoring DB schema a bit to clean up feed vs person vs group info 2010-02-17 01:49:49 +00:00
Brion Vibber
4a139d1cc8 OStatus: migrated notice parsing to use Activity helper classes; on the way to killing FeedMunger 2010-02-16 23:31:11 +00:00
Brion Vibber
014a32e6b8 OStatus: check only direct children in ActivityUtil::child; fixes pulling actor's info when we wanted post info 2010-02-16 23:04:39 +00:00
Brion Vibber
440ab90391 OStatus: fix up some recent regressions in subscription setup; fix state checks and verification token, and avatar save on setup. Needs updates for new atom code next... 2010-02-16 22:03:24 +00:00
Brion Vibber
a116cde1a4 OStatus: fix for low-level remote subscribe 2010-02-16 20:11:48 +00:00
Evan Prodromou
201110ffaa restructure Activity classes to push more DOM stuff to ActivityUtils 2010-02-16 12:49:54 -05:00
Brion Vibber
d5cbfe8071 Merge branch 'testing' into 0.9.x
Conflicts:
	lib/iomaster.php
2010-02-16 09:25:09 -08:00
Brion Vibber
81b6b58e33 Merge branch 'master' into testing
Conflicts:
	lib/stompqueuemanager.php
2010-02-16 09:22:02 -08:00
Brion Vibber
c74aea589d Stomp queue restructuring for mass scalability:
- Multiplexing queues into groups and for multiple sites.
- Sharing vs breakout configurable per site and per queue via $config['queue']['breakout']
- Detect how many times a message is redelivered, discard if it's killed too many daemons
 - count configurable with $config['queue']['max_retries']
 - can dump the items to files in $config['queue']['dead_letter_dir']

Queue daemon memory & resource leak fixes:
- avoid unnecessary reconnections to memcached server (switch persistent connections back in on second initialization, assuming it's child process)
- monkey-patch for leaky .ini loads in DB_DataObject::databaseStructure() - was leaking 200k per active switch
- applied leak fixes to Status_network as well, using intermediate base Safe_DataObject for both it and Memcache_DataObject

Misc queue fixes:
- correct handling of child processes exiting due to signal termination instead of regular exit
- shutdown instead of infinite respawn loop if we're already past the soft memory limit at startup
- Added --all option for xmppdaemon... still opens one xmpp connection per site that has xmpp active

Cache updates:
- add Cache::increment() method with native support for memcached atomic increment
2010-02-16 09:16:51 -08:00
Evan Prodromou
a8c2a8261e move some nickname-guessing code to lib/util.php from OpenID 2010-02-16 11:06:10 -05:00
Evan Prodromou
813451c9f9 add a couple of FIXME comments 2010-02-16 10:18:23 -05:00
Evan Prodromou
5a357d5399 change find() to staticGet() to use cache 2010-02-16 09:58:33 -05:00
Zach Copley
d4f6235d7b Upgrade Twitter bridge to use OAuth 1.0a. It's more secure, and allows
us to automatically send in a callback url instead of having to manually
configure one for each StatusNet instance.
2010-02-16 06:19:20 +00:00
Zach Copley
f414544d0d Upgrade Twitter bridge to use OAuth 1.0a. It's more secure, and allows
us to automatically send in a callback url instead of having to manually
configure one for each StatusNet instance.
2010-02-16 06:12:08 +00:00
Zach Copley
2e1e614abe Use static class method for looking up Twitter user 2010-02-15 22:15:22 +00:00
Zach Copley
0ba3759171 Use static class method for looking up Twitter user 2010-02-15 22:14:54 +00:00
Zach Copley
9f8e25bfe7 Use static class method for looking up Twitter user 2010-02-15 22:13:10 +00:00
Zach Copley
1996b709c6 Twitter-bridge: lookup old foreign_user by primary key not url 2010-02-15 22:06:18 +00:00
Zach Copley
01c428796f Twitter-bridge: lookup old foreign_user by primary key not url 2010-02-15 22:05:23 +00:00
Zach Copley
66f427c373 Twitter-bridge: lookup old foreign_user by primary key not url 2010-02-15 21:53:49 +00:00
Zach Copley
a69863eae6 Better log msgs. Removed debugging statement. 2010-02-15 21:24:31 +00:00
Zach Copley
ead595eee8 Better log msgs. Removed debugging statement. 2010-02-15 21:24:12 +00:00
Zach Copley
fdf6ed7b1a Better log msgs. Removed debugging statement. 2010-02-15 21:23:26 +00:00
Zach Copley
5db40c440d Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing 2010-02-15 21:14:32 +00:00
Zach Copley
82033b3773 Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x 2010-02-15 21:14:01 +00:00
Zach Copley
fe2ebec732 Fix for regression introduced with my last update to the
TwitterStatusFetcher: the Twitter bridge was not saving a foreign user
record when making a foreign link.
2010-02-15 21:13:53 +00:00
Zach Copley
5cc1f8b001 Fix for regression introduced with my last update to the
TwitterStatusFetcher: the Twitter bridge was not saving a foreign user
record when making a foreign link.
2010-02-15 21:13:42 +00:00
Zach Copley
2b6a39f70f Fix for regression introduced with my last update to the
TwitterStatusFetcher: the Twitter bridge was not saving a foreign user
record when making a foreign link.
2010-02-15 21:10:45 +00:00
Sarven Capadisli
03edbfe24e Added single whitespace to separate inline text words. 2010-02-15 20:41:46 +01:00
Evan Prodromou
73e2264c6a test parsing a default atom feed for activities 2010-02-14 13:19:32 -05:00
Evan Prodromou
f78cf31303 update activity and salmon for previous commit 2010-02-14 12:12:47 -05:00
Evan Prodromou
cea7d8018a Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing 2010-02-14 12:09:07 -05:00
Evan Prodromou
62f5c04ad2 More complete activity parsing
Began the process of actually digging up activity information
from an Atom entry. Added a test script to make sure parsing
is working right.
2010-02-14 12:08:09 -05:00
Sarven Capadisli
171bf3093a Dialogbox for OStatus remote subscription 2010-02-13 20:28:05 +01:00
Sarven Capadisli
1cb94e0be6 Added dialogbox styles for OStatus subscribe form 2010-02-13 19:07:21 +01:00
Sarven Capadisli
4d050f96f3 Added XHR channel for OStatus Subscribe button 2010-02-13 18:49:14 +01:00
Sarven Capadisli
f30af7047b Updated feed subscription form markup 2010-02-13 18:46:10 +01:00
Sarven Capadisli
24394269fa Updated OStatus form markup 2010-02-13 18:44:41 +01:00
Sarven Capadisli
f6e766d5ac Using the new remote subscription event and updated subscribe label 2010-02-13 18:42:00 +01:00
Zach Copley
f3a82e787c Add OStatus PuSH hub and Salmon links back into user and group feeds 2010-02-12 19:02:27 -08:00
Brion Vibber
122c8677b7 Merge branch 'testing' of gitorious.org:statusnet/mainline into 0.9.x 2010-02-12 11:18:35 -08:00
Brion Vibber
b39047d95b OStatus: prep work for sending notifications on sub/unsub/join/leave/favorite/unfavorite via Salmon; needs to be completed and hooked up once feed gen is fixed. 2010-02-12 18:54:48 +00:00
Evan Prodromou
320532560f flesh out salmon endpoint 2010-02-12 00:43:16 -05:00
Evan Prodromou
5f94efc454 stub for activities 2010-02-12 00:42:42 -05:00
Brion Vibber
bc46621af2 OStatus sub setup code cleanup and partial group fixes (needs more work after the Atom updates are done) 2010-02-12 01:11:46 +00:00
Brion Vibber
8e6b52e899 OStatus: renamed feedinfo table to ostatus_profile -- will cover remote ostatus people and groups whether a subscription's active or not (maintains identity over unsub/resub, and between subscribers and subscribees) 2010-02-12 00:22:16 +00:00
Brion Vibber
e08657d56c OStatus: correct parsing of georss:point for max interop (commas allowed, whitespace not strictly defined) 2010-02-11 22:42:36 +00:00
Brion Vibber
1773d12a24 OStatus: save Salmon postback URI in feed subscription info, if provided. Will need it for sub/unsub postbacks and other notifications. 2010-02-11 20:12:48 +00:00
Brion Vibber
21bfbc43ad OStatus: fix salmon link on Atom feeds; add a url spec for group feeds as well (endpoint needs impl) 2010-02-11 20:02:17 +00:00
Brion Vibber
20714d1f35 OStatus fix: include feed profile at notice text processing time, fixes replies 2010-02-11 19:44:03 +00:00
Brion Vibber
71151b2583 OStatus: garbage collect unused PuSH subscriptions when the last local subscriber unsubs 2010-02-11 00:09:20 +00:00
Brion Vibber
4ae760cb62 OStatus PuSH fixes:
* HMAC now calculated correctly - confirmed interop with Google's public hub
* Can optionally use an external PuSH hub, set URL in $config['ostatus']['hub']
  (may have issues in replication environment, and will ping the hub for every
  update rather than just those with subscribers) Internal hub will still function
  when this is set, but won't be advertised. Warning: setting this, then turning
  it off later will break subscriptions as that hub will no longer receive pings.
2010-02-10 22:58:39 +00:00
Brion Vibber
162868afdb OStatus update: now using standard save/delivery for incoming ostatus messages -- they get reflected to realtime and everything! woooo
Group delivery may still need some munging
2010-02-10 21:18:53 +00:00
Brion Vibber
7752612ef6 fix hubdistrib 2010-02-10 20:47:42 +00:00
Brion Vibber
045797331c fix up hub queueing to work w/ stomp queues 2010-02-10 12:27:41 -08:00
Brion Vibber
f37063cd63 Filename case fix 2010-02-10 10:18:47 -08:00
Sarven Capadisli
3d0bc1a3dd Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x 2010-02-10 11:09:03 +00:00
Sarven Capadisli
f3c2dfacf4 Fix to Realtime's repeat notice form legend and notice id 2010-02-10 10:48:55 +00:00
Sarven Capadisli
6b10c269b5 Fix to Realtime's repeat notice form legend and notice id 2010-02-10 10:47:46 +00:00
James Walker
f4ebac5036 removing the webfinger hack for Notice::asAtomEntry since salmon can use a profile URL 2010-02-09 21:50:51 -05:00
James Walker
46f90f7b08 moving salmon endpoint under 'main/' 2010-02-09 21:43:37 -05:00
Brion Vibber
8449256817 OStatus partial support for group subscriptions:
* detection of group feeds is currently a nasty hack based on presence of '/groups/' in URL -- should use some property on the feed?
* listing for the remote group is kinda cruddy; needs to be named more cleanly
* still need to establish per-author profiles (easier once we have the updated Atom code in)
* group delivery probably not right yet
* saving of group messages still triggering some weird behavior

Added support for since_id and max_id on group timeline feeds as a free extra. Enjoy!
2010-02-09 18:32:52 -08:00
James Walker
c2475f8853 in progress Salmon responses 2010-02-09 15:37:37 -05:00
James Walker
841981a381 discovery piece - hand merged :P 2010-02-09 01:37:45 -05:00
Brion Vibber
b2e8d8407c Merge branch 'testing' of git@gitorious.org:statusnet/mainline into 0.9.x 2010-02-08 15:48:52 -08:00
Brion Vibber
b9b0f0410a Pull GeoRSS locations over OStatus feeds 2010-02-08 15:46:38 -08:00
Brion Vibber
384387c9b0 OStatus cleanup...
* Treat linkless feed posts as status updates; drop the "New post:" prefix and quotes on them.
* Use stable user IDs for atom/rss2 feed links instead of unstable nicknames
* Pull Atom feed preferentially when subscribing -- can now put the remote user's profile page straight into the feed subscription form and get to the right place.
* Clean up naming for push endpoints
2010-02-08 14:58:12 -08:00
Zach Copley
c83d0b5e98 Delete old Twitter user record when user changes screen name instead of updating. Simpler. 2010-02-08 12:16:55 -08:00
Zach Copley
21c0e75a2e Store Twitter screen_name, not name, for foreign_user.nickname when saving Twitter user. 2010-02-08 12:16:43 -08:00
Brion Vibber
dc09453a77 First steps on converting FeedSub into the pub/sub basis for OStatus communications:
* renamed FeedSub plugin to OStatus
* now setting avatar on subscriptions
* general fixes for subscription
* integrated PuSH hub to handle only user timelines on canonical ID url; sends updates directly
* set $config['feedsub']['nohub'] = true to test w/ foreign feeds that don't have hubs (won't actually receive updates though)
* a few bits of code documentation
* HMAC support for verified distributions (safest if sub setup is on HTTPS)

And a couple core changes:
* minimizing HTML output for exceptions in API requests to aid in debugging
* fix for rel=self link in apitimelineuser when id given

This does not not yet include any of the individual subscription management (Salmon notifications for sub/unsub, etc) nor a nice UI for user subscriptions.
Needs some further cleanup to treat posts as status updates instead of link references.
2010-02-08 11:15:29 -08:00
Zach Copley
fc226a6ad5 Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing 2010-02-06 06:48:41 +00:00
Zach Copley
70abea3ac4 Delete old Twitter user record when user changes screen name instead of updating. Simpler. 2010-02-06 06:48:19 +00:00
Zach Copley
558934d1dd Store Twitter screen_name, not name, for foreign_user.nickname when saving Twitter user. 2010-02-06 06:48:07 +00:00
Zach Copley
cfe4e460ca Delete old Twitter user record when user changes screen name instead of updating. Simpler. 2010-02-06 06:46:00 +00:00
Zach Copley
a5f03484da Store Twitter screen_name, not name, for foreign_user.nickname when saving Twitter user. 2010-02-05 21:39:29 -08:00
Brion Vibber
875e1a70ce Don't spew warnings on usage of MEMCACHE_COMPRESSED constant when memcache PHP extension is not present.
Switched to a locally-defined Cache::COMPRESSED, translating that to MEMCACHE_COMPRESSED in the plugin.
2010-02-05 09:47:56 -08:00
Zach Copley
af9f23c2d9 - Fix cache handling in TwitterStatusFetcher
- Other stability fixes
2010-02-05 03:18:45 +00:00
Sarven Capadisli
5bdc6fa5d4 Moved hardcoded identica theme out of MobileProfile. In this case, it
will use whichever theme is loaded as its base and then add its own
mobile styles. Of course, if a theme comes with its own mobile styles,
it will use that instead as an addition to its own base.
2010-02-04 19:42:33 +00:00
Sarven Capadisli
e891075494 Moved hardcoded identica theme out of MobileProfile. In this case, it
will use whichever theme is loaded as its base and then add its own
mobile styles. Of course, if a theme comes with its own mobile styles,
it will use that instead as an addition to its own base.
2010-02-04 19:39:46 +00:00
Sarven Capadisli
7ebd13fa69 Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x 2010-02-04 16:56:34 +00:00
Zach Copley
feaf938ffd Make Twitter bridge truncate and add a link back to the original notice when notice content is > 140c 2010-02-04 03:17:48 +00:00
Zach Copley
9ca4fd69b3 - Fix cache handling in TwitterStatusFetcher
- Other stability fixes
2010-02-04 01:59:28 +00:00
Zach Copley
72f72d17db - Fix cache handling in TwitterStatusFetcher
- Other stability fixes
2010-02-04 01:53:08 +00:00
Brion Vibber
f4c81fa1e1 Merge branch 'testing' of git@gitorious.org:statusnet/mainline into 0.9.x 2010-02-02 09:57:50 -08:00
Sarven Capadisli
245610d2e1 Removed entity flag stylesheet and icons from plugin to core. 2010-02-02 16:27:58 +01:00
Sarven Capadisli
65c5d7813b Added icon to Clear label for UserFlag plugin 2010-02-02 16:06:22 +01:00
Brion Vibber
c14ac57b19 Merge branch 'testing' of git@gitorious.org:statusnet/mainline into 0.9.x 2010-02-01 10:30:45 -08:00
Sarven Capadisli
0c838f82b0 Added missing concat of </li> in Realtime response 2010-01-31 23:57:35 +01:00
Sarven Capadisli
9f36c10001 Updated XHR binded events to work better in jQuery 1.4.1. Using
.live() for event delegation instead of jQuery.data() and checking to
see if an element was previously binded.
2010-01-31 22:37:22 +00:00
Evan Prodromou
779204b194 Merge branch 'testing' into 0.9.x
Conflicts:
	actions/apioauthauthorize.php
2010-01-31 15:27:58 -05:00
Evan Prodromou
ebf4e497f6 Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing 2010-01-31 15:20:57 -05:00
Sarven Capadisli
339eb1adad Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x 2010-01-31 19:25:49 +00:00
Evan Prodromou
a1c9874a61 better handling of null responses from geonames.org 2010-01-30 12:40:11 -05:00
Craig Andrews
61d4709eb8 Pass username and nickname to autoregister so auth plugins can set the nickname correct when creating a new user.
Continues fixing what Eric Helgeson pointed out in 01eb4e8f00
2010-01-29 20:43:16 -05:00
Evan Prodromou
8318f195a2 plugin to limit number of registered users 2010-01-29 18:29:51 -05:00
Sarven Capadisli
edf99dc45b Adds notice author's name to @title in Realtime response 2010-01-29 15:44:59 +00:00
Sarven Capadisli
b68a21d4f7 Adds notice author's name to @title in Realtime response 2010-01-29 15:43:37 +00:00
Zach Copley
558bf0f489 'Sign in with Twitter' button img 2010-01-28 18:15:45 +00:00
Zach Copley
664a82e836 'Sign in with Twitter' button img 2010-01-28 18:11:44 +00:00
Zach Copley
b6dea910fc Move faceboookapp.js to the Facebook plugin 2010-01-28 04:50:54 +00:00
Zach Copley
794fe16d69 Merge branch 'facebook-js-fix' into testing 2010-01-28 04:47:21 +00:00
Zach Copley
c2c262e4b4 Move faceboookapp.js to the Facebook plugin 2010-01-28 04:46:10 +00:00
Brion Vibber
f026ecec32 fix for fix for bad realtime JS load 2010-01-27 19:50:52 -08:00
Brion Vibber
5c0560a7fc fix for fix for bad realtime JS load 2010-01-27 19:50:08 -08:00
Brion Vibber
84e7c7783c Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing 2010-01-27 19:49:26 -08:00
Evan Prodromou
dd413ff4fa move script into OpenXPlugin::showAd() so it works 2010-01-27 18:44:46 -05:00
Evan Prodromou
97a1ef14d2 using an action for output in OpenX plugin 2010-01-27 18:39:55 -05:00
Evan Prodromou
0373ab6fa4 Plugin to enable OpenX ads 2010-01-27 18:35:02 -05:00
Evan Prodromou
2aba2eeeaf width and height should be integers in AdsensePlugin 2010-01-27 17:55:33 -05:00
Evan Prodromou
00d9b215f4 Plugin to support Google Adsense
A plugin to easily add Google Adsense blocks to a StatusNet site.
2010-01-27 17:29:36 -05:00
Zach Copley
78079f34e2 Merge branch 'testing' into -1.9.x
* testing: (130 commits)
  HTTP auth provided is evaluated even if it's not required
  Rename rc3to09.sql to rc3torc4.sql to avoid confusion if we add a last-minute change after this!
  Add new oauth tables and modifications to 'consumer' table for rc4
  Centred leaderboard ad
  camelcase the uap param names
  move leaderboard to after the header
  Moved rectangle ad into aside and leaderboard to the right in header.
  Aligning wide skyscraper to the right instead of left
  CSS ids and classes fixed in UAPPlugin
  wrong height for rectangle in BlankAd
  Add the moved BlankAdPlugin
  make BlankAd dir and change to use a 1x1 image
  move BlankAdPlugin to its own dir
  Add BlankAdPlugin to test ad layout in different themes
  make uapplugin an abstract class
  move UAP plugin to core
  Lowercased switch cases in UAP Plugin
  Plugin for Universal Ad Package. Outputs four most widely used ad types.
  Add persistent:true property to Stomp messages so ActiveMQ doesn't decide to discard them even though persistence is enabled on the broker. :) (Thanks Aric!)
  quick fix: use common_path() on realtime update JS so it works with the new JS path code (will pull from main server for now)
  ...

Conflicts:
	actions/apioauthaccesstoken.php
	actions/apioauthauthorize.php
	actions/apioauthrequesttoken.php
	actions/editapplication.php
	actions/newapplication.php
	lib/apiauth.php
	lib/queuemanager.php
	lib/router.php
2010-01-27 14:27:22 -08:00
Evan Prodromou
f650b40706 Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing 2010-01-27 16:37:43 -05:00
Evan Prodromou
4ad931ad38 wrong height for rectangle in BlankAd 2010-01-27 16:34:17 -05:00
Evan Prodromou
e4393ee6db Add the moved BlankAdPlugin 2010-01-27 16:34:17 -05:00
Evan Prodromou
b2b95bd21f make BlankAd dir and change to use a 1x1 image 2010-01-27 16:34:17 -05:00
Evan Prodromou
b412ebab11 move BlankAdPlugin to its own dir 2010-01-27 16:34:17 -05:00
Evan Prodromou
9decd9806c Add BlankAdPlugin to test ad layout in different themes 2010-01-27 16:34:17 -05:00
Evan Prodromou
1758ed453b move UAP plugin to core 2010-01-27 16:34:17 -05:00
Sarven Capadisli
58fde0dcb5 Lowercased switch cases in UAP Plugin 2010-01-27 16:34:17 -05:00
Sarven Capadisli
61a7a7b36b Plugin for Universal Ad Package. Outputs four most widely used ad types. 2010-01-27 16:34:17 -05:00
Brion Vibber
b1402896e7 Set default 24-hour expiry on Memcached objects where not specified. 2010-01-27 09:13:21 -08:00
Brion Vibber
7aeb03f727 quick fix: use common_path() on realtime update JS so it works with the new JS path code (will pull from main server for now) 2010-01-27 08:53:55 -08:00
Evan Prodromou
c52951cef5 Optionally set a separate Javascript server and path
We have about 10-12 JavaScript pages per Web page. They usually
are based on the same server as the Web pages, but since they're
static files, it makes sense to offload them to a lite server that
handles static files well.

This commit lets you set a separate Javascript server and path for the
default Javascript code in StatusNet.

Squashed commit of the following:

commit 139d1622fdafe5ad00c820224416d9021efc3234
Author: Evan Prodromou <evan@status.net>
Date:   Wed Jan 27 11:30:24 2010 -0500

    modules that call htmloutputter::script() don't prescribe js/ path

commit c6ca3174af73efed55eaed5ff1e2a3bdc77d2d87
Author: Evan Prodromou <evan@status.net>
Date:   Wed Jan 27 11:28:07 2010 -0500

    configurable server and path for javascript files
2010-01-27 11:37:22 -05:00
Sarven Capadisli
7695daebb7 Updated geolocation sharing in notice form for Realtime pop 2010-01-26 19:15:33 +01:00
Sarven Capadisli
e05c325722 Updated geolocation sharing in notice form for Realtime pop 2010-01-26 19:13:05 +01:00
Zach Copley
d6a0dec765 Add Julien C to author comments 2010-01-26 00:41:49 -08:00
Zach Copley
7a0a133401 - Remove redundant function
- clean up log msgs
2010-01-26 00:41:49 -08:00
Zach Copley
7064d15e67 Use "Sign in with Twitter" auth pattern and official Twitter button for Twitter-based login.
See: http://apiwiki.twitter.com/Sign-in-with-Twitter
2010-01-26 00:41:49 -08:00
Zach Copley
e5bd707055 Ask the user to set a password before disconnecting from Twitter 2010-01-26 00:41:49 -08:00
Zach Copley
d429710fe1 - Twitter username wasn't getting stored in Foreign_user when linking Twitter account (fixed)
- Updates to comments
2010-01-26 00:41:49 -08:00
Julien C
3fc3a2b326 Allow logging in using Twitter
Signed-off-by: Julien C <chaumond@gmail.com>
2010-01-26 00:41:49 -08:00
Zach Copley
02957d2854 Add Julien C to author comments 2010-01-26 00:19:46 -08:00
Zach Copley
f7450d2ca8 - Remove redundant function
- clean up log msgs
2010-01-26 00:19:20 -08:00
Zach Copley
ce44008d13 Use "Sign in with Twitter" auth pattern and official Twitter button for Twitter-based login.
See: http://apiwiki.twitter.com/Sign-in-with-Twitter
2010-01-26 00:19:09 -08:00
Zach Copley
1c1abfc284 Ask the user to set a password before disconnecting from Twitter 2010-01-26 00:18:55 -08:00
Zach Copley
2d97e15cd6 - Twitter username wasn't getting stored in Foreign_user when linking Twitter account (fixed)
- Updates to comments
2010-01-26 00:18:42 -08:00
Julien C
7fc5588c5d Allow logging in using Twitter
Signed-off-by: Julien C <chaumond@gmail.com>
2010-01-26 00:18:11 -08:00
Evan Prodromou
663e4e02a1 Merge branch 'master' into testing
Conflicts:
	lib/queuemanager.php
2010-01-25 18:13:09 -05:00
Evan Prodromou
b6aa1511eb Merge branch 'master' into 0.9.x 2010-01-25 18:10:59 -05:00
Evan Prodromou
e26a843caf Offload inbox updates to a queue handler to speed up posting online
Moved much of the writing that happens when posting a notice to a new
queuehandler, distribqueuehandler. This updates tags, groups, replies
and inboxes at queue time (or at Web time, if queues are disabled).

To make this work well, I had to break up the monolithic
Notice::blowCaches() and make cache blowing happen closer to where
data is updated.

Squashed commit of the following:

commit 5257626c62750ac4ac1db0ce2b71410c5711cfa3
Author: Evan Prodromou <evan@status.net>
Date:   Mon Jan 25 14:56:41 2010 -0500

    slightly better handling of blowing tag memory cache

commit 8a22a3cdf6ec28685da129a0313e7b2a0837c9ef
Author: Evan Prodromou <evan@status.net>
Date:   Mon Jan 25 01:42:56 2010 -0500

    change 'distribute' to 'distrib' so not too long for dbqueue

commit 7a063315b0f7fad27cb6fbd2bdd74e253af83e4f
Author: Evan Prodromou <evan@status.net>
Date:   Mon Jan 25 01:39:15 2010 -0500

    change handle_notice() to handle() in distributqueuehandler

commit 1a39ccd28b9994137d7bfd21bb4f230546938e77
Author: Evan Prodromou <evan@status.net>
Date:   Mon Jan 25 16:05:25 2010 -0500

    error with queuemanager

commit e6b3bb93f305cfd2de71a6340b8aa6fb890049b7
Author: Evan Prodromou <evan@status.net>
Date:   Mon Jan 25 01:11:34 2010 -0500

    Blow memcache at different point rather than one big function for Notice class

commit 94d557cdc016187d1d0647ae1794cd94d6fb8ac8
Author: Evan Prodromou <evan@status.net>
Date:   Mon Jan 25 00:48:44 2010 -0500

    Blow memcache at different point rather than one big function for Notice class

commit 1c781dd08c88a35dafc5c01230b4872fd6b95182
Author: Evan Prodromou <evan@status.net>
Date:   Wed Jan 20 08:54:18 2010 -0500

    move broadcasting and distributing to new queuehandler

commit da3e46d26b84e4f028f34a13fd2ee373e4c1b954
Author: Evan Prodromou <evan@status.net>
Date:   Wed Jan 20 08:53:12 2010 -0500

    Move distribution of notices to new distribute queue handler
2010-01-25 18:08:21 -05:00
Brion Vibber
c10d5320dd Disable PubSubHubBub hub pings automatically on private site (hub wouldn't be able to read feeds anyway)
[Might be good to think of a core way to mark a plugin as disabled when it initializes.]
2010-01-25 09:07:24 -08:00
Brion Vibber
a5836d33e4 Fix for PoweredByStatusNetPlugin to be localizable (was broken for non-English word order)
(Note the .po files will have to be added manually for now as we haven't set TranslateWiki up for plugins I think)
2010-01-25 13:15:54 +01:00
Evan Prodromou
4f213f985f Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x
Conflicts:
	lib/stompqueuemanager.php
2010-01-24 16:12:40 -05:00
Evan Prodromou
54ebb0a2b9 Merge branch 'master' into 0.9.x
Conflicts:
	lib/stompqueuemanager.php
2010-01-24 15:59:57 -05:00
Evan Prodromou
3f5ffe5c5b set correct key types for User_flag_profile 2010-01-24 15:57:56 -05:00
Evan Prodromou
b91a035025 add function doc comment to User_flag_profile::create() 2010-01-24 11:20:08 -05:00
Sarven Capadisli
071f455b87 Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x 2010-01-24 15:35:36 +01:00
Sarven Capadisli
dd513b3e53 Added version info for MobileProfile plugin 2010-01-24 15:35:22 +01:00
Sarven Capadisli
38fe4ad958 Added version info for MobileProfile plugin 2010-01-24 15:34:40 +01:00
Sarven Capadisli
51775e38ba Better alignment for notice options in MobileProfile 2010-01-24 00:23:14 +01:00
Sarven Capadisli
e3ee5663ab Updated notice item view where a) notice text no longer wraps around
(under author's photo) b) supplemental notice content and options will
start right under notice text.
2010-01-24 00:23:01 +01:00
Sarven Capadisli
2742494fe8 Updated UI for notice aside content and notice options in MobileProfile 2010-01-24 00:20:36 +01:00
Sarven Capadisli
37e642bece Inline script for maxlength is deprecated 2010-01-24 00:20:11 +01:00
Craig Andrews
8c54151dbd Use StartQueueDaemonIoManagers instead of removed StartIoManagerClasses event 2010-01-23 13:08:59 -05:00
Brion Vibber
a4d733b68d Fix for PoweredByStatusNetPlugin to be localizable (was broken for non-English word order)
(Note the .po files will have to be added manually for now as we haven't set TranslateWiki up for plugins I think)
2010-01-22 15:04:53 -08:00
Brion Vibber
b157fcbba3 Merge branch 'testing' into 0.9.x 2010-01-22 14:07:40 -08:00
Brion Vibber
71b3b9ee2b Consolidate PuSH publishing ping into a single POST for all feeds, and fix server response (if any on failure) to go to log instead of stdout. 2010-01-22 14:03:24 -08:00
Brion Vibber
c7507e7e9d XMPP queued output & initial retooling of DB queue manager to support non-Notice objects.
Queue handlers for XMPP individual & firehose output now send their XML stanzas
to another output queue instead of connecting directly to the chat server. This
lets us have as many general processing threads as we need, while all actual
XMPP input and output go through a single daemon with a single connection open.

This avoids problems with multiple connected resources:
* multiple windows shown in some chat clients (psi, gajim, kopete)
* extra load on server
* incoming message delivery forwarding issues

Database changes:
* queue_item drops 'notice_id' in favor of a 'frame' blob.
  This is based on Craig Andrews' work branch to generalize queues to take any
  object, but conservatively leaving out the serialization for now.
  Table updater (preserves any existing queued items) in db/rc3to09.sql

Code changes to watch out for:
* Queue handlers should now define a handle() method instead of handle_notice()
* QueueDaemon and XmppDaemon now share common i/o (IoMaster) and respawning
  thread management (RespawningDaemon) infrastructure.
* The polling XmppConfirmManager has been dropped, as the message is queued
  directly when saving IM settings.
* Enable $config['queue']['debug_memory'] to output current memory usage at
  each run through the event loop to watch for memory leaks

To do:
* Adapt XMPP i/o to component connection mode for multi-site support.
* XMPP input can also be broken out to a queue, which would allow the actual
  notice save etc to be handled by general queue threads.
* Make sure there are no problems with simply pushing serialized Notice objects
  to queues.
* Find a way to improve interactive performance of the database-backed queue
  handler; polling is pretty painful to XMPP.
* Possibly redo the way QueueHandlers are injected into a QueueManager. The
  grouping used to split out the XMPP output queue is a bit awkward.

Conflicts:

	scripts/xmppdaemon.php
2010-01-22 12:52:36 -08:00
Evan Prodromou
c8bc598cfd Merge branch 'testing' into 0.9.x 2010-01-22 14:18:43 -05:00
Evan Prodromou
e666433eb4 Merge branch 'master' into 0.9.x 2010-01-22 14:18:40 -05:00
Brion Vibber
0e852def6a XMPP queued output & initial retooling of DB queue manager to support non-Notice objects.
Queue handlers for XMPP individual & firehose output now send their XML stanzas
to another output queue instead of connecting directly to the chat server. This
lets us have as many general processing threads as we need, while all actual
XMPP input and output go through a single daemon with a single connection open.

This avoids problems with multiple connected resources:
* multiple windows shown in some chat clients (psi, gajim, kopete)
* extra load on server
* incoming message delivery forwarding issues

Database changes:
* queue_item drops 'notice_id' in favor of a 'frame' blob.
  This is based on Craig Andrews' work branch to generalize queues to take any
  object, but conservatively leaving out the serialization for now.
  Table updater (preserves any existing queued items) in db/rc3to09.sql

Code changes to watch out for:
* Queue handlers should now define a handle() method instead of handle_notice()
* QueueDaemon and XmppDaemon now share common i/o (IoMaster) and respawning
  thread management (RespawningDaemon) infrastructure.
* The polling XmppConfirmManager has been dropped, as the message is queued
  directly when saving IM settings.
* Enable $config['queue']['debug_memory'] to output current memory usage at
  each run through the event loop to watch for memory leaks

To do:
* Adapt XMPP i/o to component connection mode for multi-site support.
* XMPP input can also be broken out to a queue, which would allow the actual
  notice save etc to be handled by general queue threads.
* Make sure there are no problems with simply pushing serialized Notice objects
  to queues.
* Find a way to improve interactive performance of the database-backed queue
  handler; polling is pretty painful to XMPP.
* Possibly redo the way QueueHandlers are injected into a QueueManager. The
  grouping used to split out the XMPP output queue is a bit awkward.
2010-01-21 22:40:35 -08:00
Evan Prodromou
10f21e1f41 add class and function doc comments to PuSH plugin 2010-01-20 16:37:41 -05:00
Evan Prodromou
0167ff6d27 whitespace changes to make phpcs happy for PuSH plugin 2010-01-20 16:29:11 -05:00
Evan Prodromou
1d37a6c428 correctly get replies for a notice in PuSH plugin 2010-01-20 16:16:22 -05:00
Evan Prodromou
365b0b1e14 use standard plugin configuration for PubSubHubBub 2010-01-20 16:13:52 -05:00
Evan Prodromou
dbccebb14b update friends, not user, timeline for recipients of notice in PuSH plugin 2010-01-20 15:43:24 -05:00
Sarven Capadisli
6815ddafe0 Better alignment for notice options in MobileProfile 2010-01-20 18:50:48 +01:00
Sarven Capadisli
b87c80e0a9 Updated notice item view where a) notice text no longer wraps around
(under author's photo) b) supplemental notice content and options will
start right under notice text.
2010-01-20 18:32:24 +01:00
Eric Helgeson
0ddfcc5521 Added Plugin Version info to recaptcha plugin 2010-01-18 18:33:09 -05:00
Brion Vibber
ae9f2bf187 add a quickie plugins/ dir readme mentioning how to add plugins, plus ref to wiki pages 2010-01-18 09:37:42 -08:00
Sarven Capadisli
3f589da243 Updated UI for notice aside content and notice options in MobileProfile 2010-01-17 19:45:35 +00:00
Sarven Capadisli
07de97a103 Inline script for maxlength is deprecated 2010-01-17 14:04:47 +00:00
Brion Vibber
9dc9c404cf Merge branch 'master' into 0.9.x 2010-01-16 13:40:49 -08:00
Brion Vibber
775c63b654 Cleanup for memcached host/port split -- apparently we use ';' on purpose, restoring. Keeping fix for the notices spewing into the log. 2010-01-16 13:39:05 -08:00
Craig Andrews
a27aef9206 Add nickname suggestion capability for use during autoregistration. 2010-01-14 19:52:11 -05:00
Brion Vibber
5783874cc2 Clean up host/port separation in memcached plugin -- use : not ; as separator and clean up some warnings 2010-01-14 14:14:32 -08:00
Brion Vibber
532a174fc0 Clean up host/port separation in memcached plugin -- use : not ; as separator and clean up some warnings 2010-01-14 14:14:22 -08:00
Brion Vibber
b25deaacea queue daemon fixes: path fix for xmpp, suppress warning in memcached init 2010-01-13 21:24:36 -08:00
Brion Vibber
cb962ed475 queue daemon fixes: path fix for xmpp, suppress warning in memcached init 2010-01-13 21:24:02 -08:00
Craig Andrews
681065d734 Made the IMAP plugin work in the style of the new queue/iomanagers 2010-01-13 15:35:53 -05:00
Zach Copley
c3188fd1fe Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x 2010-01-13 19:17:49 +00:00
Zach Copley
43170b3d18 When Twitter bridge encounters a 403 (rate limit) err, drop the notice
instead of requeuing.
2010-01-13 19:17:40 +00:00
Evan Prodromou
f2e9469e16 throttle subscriptions 2010-01-13 03:11:31 -08:00
Evan Prodromou
436b8c845e Merge branch '0.9.x' into inblob 2010-01-12 23:53:52 -08:00
Evan Prodromou
e34ece8b06 Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x 2010-01-12 23:25:25 -08:00
Brion Vibber
ec145b73fc Major refactoring of queue handlers to support running multiple sites in one daemon.
Key changes:
* Initialization code moved from common.php to StatusNet class;
  can now switch configurations during runtime.
* As a consequence, configuration files must now be idempotent...
  Be careful with constant, function or class definitions.
* Control structure for daemons/QueueManager/QueueHandler has been refactored;
  the run loop is now managed by IoMaster run via scripts/queuedaemon.php
  IoManager subclasses are woken to handle socket input or polling, and may
  cover multiple sites.
* Plugins can implement notice queue handlers more easily by registering a
  QueueHandler class; no more need to add a daemon.

The new QueueDaemon runs from scripts/queuedaemon.php:

* This replaces most of the old *handler.php scripts; they've been refactored
  to the bare handler classes.
* Spawns multiple child processes to spread load; defaults to CPU count on
  Linux and Mac OS X systems, or override with --threads=N
* When multithreaded, child processes are automatically respawned on failure.
* Threads gracefully shut down and restart when passing a soft memory limit
  (defaults to 90% of memory_limit), limiting damage from memory leaks.
* Support for UDP-based monitoring: http://www.gitorious.org/snqmon

Rough control flow diagram:
QueueDaemon -> IoMaster -> IoManager
                           QueueManager [listen or poll] -> QueueHandler
                           XmppManager [ping & keepalive]
                           XmppConfirmManager [poll updates]

Todo:

* Respawning features not currently available running single-threaded.
* When running single-site, configuration changes aren't picked up.
* New sites or config changes affecting queue subscriptions are not yet
  handled without a daemon restart.
* SNMP monitoring output to integrate with general tools (nagios, ganglia)
* Convert XMPP confirmation message sends to use stomp queue instead of polling
* Convert xmppdaemon.php to IoManager?
* Convert Twitter status, friends import polling daemons to IoManager
* Clean up some error reporting and failure modes
* May need to adjust queue priorities for best perf in backlog/flood cases

Detailed code history available in my daemon-work branch:
http://www.gitorious.org/~brion/statusnet/brion-fixes/commits/daemon-work
2010-01-12 20:45:09 -08:00
Brion Vibber
9c34d5c107 Actually skip the pingback if XML-RPC extension is missing, instead of considering it then trying anyway and dying of a fatal error. :) 2010-01-12 12:12:31 -08:00
Evan Prodromou
ecb3abf84c Merge branch '0.9.x' into inblob 2010-01-11 16:28:27 -08:00
Evan Prodromou
7e5c15fa80 Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x 2010-01-11 16:23:48 -08:00
Evan Prodromou
04c76fc4e5 safer storage for diskcacheplugin 2010-01-11 16:23:34 -08:00
Brion Vibber
116c5f6839 dos -> unix line endings on CasAuthentication's CAS library 2010-01-11 15:42:17 -08:00
Evan Prodromou
bd6571c2e1 Merge branch 'diskcache' into 0.9.x 2010-01-11 15:34:27 -08:00
Sarven Capadisli
aaea2b1a96 Apparently, I can't spell my family name. 2010-01-11 13:02:04 +01:00
Evan Prodromou
8809e577b2 Merge branch 'sessionidparam' into 0.9.x
Conflicts:
	lib/command.php
2010-01-11 00:45:26 -08:00
Evan Prodromou
92deb35bc4 inject session before redirect for openid finish login 2010-01-11 08:40:41 +00:00
Craig Andrews
a07d8dab25 i18n in the imap plugin 2010-01-09 19:04:53 -05:00
Craig Andrews
c758b1b1d4 Add version information to a bunch of plugins 2010-01-09 19:04:53 -05:00
Evan Prodromou
2db840b2f5 use Inbox in twitterstatusfetcher 2010-01-09 14:02:01 -08:00
Evan Prodromou
d902de139c change PuSH plugin to use whoGets() 2010-01-09 13:59:39 -08:00
Evan Prodromou
9cfea6d051 use whoGets() for realtime plugin 2010-01-09 13:56:54 -08:00
Craig Andrews
055f3fdddb Add an IMAP daemon so StatusNet can process incoming user posts via catch-all mailbox (in addition to the pre-existing script alias method) 2010-01-08 18:52:43 -05:00
Evan Prodromou
e22af049a8 persistent connection flag, default false on cli 2010-01-08 13:21:29 -08:00
Sarven Capadisli
647bbb916c Updated RealtimePlugin to use core json2.js 2010-01-08 13:36:31 +00:00
Sarven Capadisli
ce761c7142 Updated plugin info for PoweredByStatusNet 2010-01-08 11:42:03 +00:00
Evan Prodromou
4f62d685d0 Mapstraction PluginVersion 2010-01-08 00:38:20 -08:00
Evan Prodromou
c57fe7fbf5 PluginVersion for WikiHashtags 2010-01-08 00:29:09 -08:00
Evan Prodromou
87043797bf Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x 2010-01-08 00:21:58 -08:00
Evan Prodromou
054aaa40bf add versions for url-shortener plugins 2010-01-08 00:20:38 -08:00
Zach Copley
20af83d316 Add version info for Facebook, TwitterBridge and RSSCloud plugins 2010-01-08 00:09:23 -08:00
Evan Prodromou
11b19788f5 add version information to GeoURL 2010-01-07 17:58:48 -08:00
Evan Prodromou
fe01a7d183 add version information to Linkback 2010-01-07 17:58:38 -08:00
Evan Prodromou
87c181b4e3 add version information to GoogleAnalytics 2010-01-07 17:51:57 -08:00
Evan Prodromou
ca3b2d614a add version information to MemcachePlugin 2010-01-07 17:49:39 -08:00
Evan Prodromou
6395ac71b8 add version information to PiwikAnalyticsPlugin 2010-01-07 17:47:23 -08:00
Evan Prodromou
afaefa6942 add version info to the Template plugin 2010-01-07 17:43:56 -08:00
Evan Prodromou
0587dcc045 add version info to OpenID plugin 2010-01-07 17:41:55 -08:00
Evan Prodromou
1c824a52ec Add version info to the CacheLog plugin 2010-01-07 17:39:15 -08:00
Evan Prodromou
42834944e0 add version info to SamplePlugin 2010-01-07 17:37:44 -08:00
Evan Prodromou
ff930d2555 add version information to Geonames plugin 2010-01-07 17:27:01 -08:00
Evan Prodromou
a55939f3b1 Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x 2010-01-06 23:23:30 -08:00
Evan Prodromou
e1c7851a06 pass through keys() as keyTypes() for UserFlag 2010-01-06 23:22:49 -08:00
Brion Vibber
4e2acd153b ...and drop the unnecessary &reference from child class pkeyGet() overrides. 2010-01-06 14:28:40 -08:00
Craig Andrews
20144285ca The structure return by parse_url is an associative array, not an object. 2010-01-06 17:13:09 -05:00
Craig Andrews
208bab32b7 Remove erroneous call to parent::onInitializePlugin() 2010-01-06 16:48:52 -05:00
Brion Vibber
b93244395f Fix for broken profile flag admin UI: delete stray flag entries when users are deleted so broken entries don't litter the lookups.
* added ProfileDeleteRelated event to match UserDeleteRelated, to allow plugins to add extra related tables on profile deletion
* UserFlagPlugin: deleting flags when target profile is deleted
* UserFlagPlugin: deleting flags when flagging user is deleted
* UserFlagPlugin: fix for autoloader -- class names are case-insensitive. We may get lowercase class names coming in at times, such as when creating DB objects programatically from a table name.

Note that any already-existing bogus entries need to be removed from the database:
select * from user_flag_profile where (select id from profile where id=profile_id) is null;
select * from user_flag_profile where (select id from user where id=user_id) is null;
2010-01-06 11:10:33 -08:00
Sarven Capadisli
d7e2a29498 Removed unnecessary internal style 2010-01-06 11:31:06 +01:00
Zach Copley
c95114ea02 Some better log msgs 2010-01-06 07:44:34 +00:00
Zach Copley
fd33865258 Fix subscription path in link element 2010-01-05 23:21:57 -08:00
Zach Copley
3e6b80d3e9 Some phpcs cleanup 2010-01-05 23:21:57 -08:00
Zach Copley
655dbcedb3 Comment out the LoggingAggregator business 2010-01-05 23:21:57 -08:00
Zach Copley
aad54af448 Reject subscription requests for handlers that don't support http-post 2010-01-05 23:21:46 -08:00
Zach Copley
48af79dbb4 Added a bunch of function commment blocks 2010-01-05 23:19:13 -08:00
Zach Copley
c571c1323f Added intial README 2010-01-05 23:19:13 -08:00
Zach Copley
ff26b8d88b Add an RSSCloud queue handler daemon 2010-01-05 23:19:13 -08:00
Zach Copley
d091d06115 Notifier works, and bad subscriptions are deleted properly now. 2010-01-05 23:19:13 -08:00
Zach Copley
61804bb7bb Plugin now checks notify handlers before registering subscriptions 2010-01-05 23:19:13 -08:00
Zach Copley
4e07d9eeec Better .ini info for RSSCloud subscription 2010-01-05 23:18:58 -08:00
Zach Copley
6b28fbe7b6 Make dummy aggregator handle RSSCloud challenge/response with domain parameter 2010-01-05 23:17:35 -08:00
Zach Copley
7638e2713d Set modified column correctly. 2010-01-05 23:17:35 -08:00
Zach Copley
3209544b30 Fixed DB_DataObject to return the right keys info for a compound
key & fix ini output
2010-01-05 23:16:58 -08:00
Zach Copley
8980bebcb3 Add a table and DB_DataObject class for storing cloud subscriptions 2010-01-05 22:59:42 -08:00
Zach Copley
aa9f81193e Queue notices for rssCloud 2010-01-05 22:59:42 -08:00
Zach Copley
46ac99cf4d Only add rssCloud link to user timeline 2010-01-05 22:59:42 -08:00