James Walker
1fe031844c
er typo
2010-02-22 23:44:33 -05:00
James Walker
9494b0e5d7
magicsig shuffling
2010-02-22 23:30:32 -05:00
James Walker
17b8020d25
clean up error logging
2010-02-22 23:30:31 -05:00
James Walker
cd561657c2
missing return value check
2010-02-22 23:30:31 -05:00
James Walker
f4b34d67c5
generate keypairs for users, and put them in the XRD for discovery
2010-02-22 23:30:31 -05:00
James Walker
74f5c1e169
db_objectified magic sig - for persistence of local keypairs
2010-02-22 23:30:31 -05:00
James Walker
cb32b676fa
moving magicsig.php to classes - to add storage
2010-02-22 23:30:31 -05:00
Sarven Capadisli
b67bb182b0
Refactored preview info and form for authorizing a remote subscription
2010-02-23 04:59:34 +01:00
Brion Vibber
193448d1be
OStatus: cleanup on ostatussub preparing for final UI work on the remote sub/join forms.
2010-02-23 01:58:05 +00:00
Zach Copley
cbf6ebae01
Merge branch 'rationalize-activity' into testing
...
* rationalize-activity:
Move ActivityObject and related stuff to core
Add PoCo bits, avatar link, geo point, etc. to person activity obj output
2010-02-22 17:12:33 -08:00
Zach Copley
6a711c6cdc
Move ActivityObject and related stuff to core
2010-02-22 17:10:50 -08:00
Brion Vibber
870e556faa
Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing
2010-02-23 00:52:47 +00:00
Zach Copley
a3e800e67c
Add PoCo bits, avatar link, geo point, etc. to person activity obj output
2010-02-22 16:46:54 -08:00
Brion Vibber
d410df0406
OStatus group delivery initial implementation.
...
- added rel="ostatus:attention" links for group delivery
- added events for plugins to override group profile/permalink pages
- pulled Notice::saveGroups up to save-time so we can override;
it's relatively cheap and gives us a clean list of target
groups for distrib time even with customized delivery.
- fixed notice::getGroups to return group objects as expected
- added some doc on new parameters to Notice::saveNew
- 'groups' list of group IDs to push to in place of parsing
- messages that come in via PuSH and contain local group targets
are delivered to local group members
- messages that come in via PuSH and contain remote group targets
are delivered to local members of the remote group
Todo:
- handle group posts that only come through Salmon
- handle conflicts in case something comes in both through Salmon and PuSH
- better source verification
- need a cleaner interface to look up groups by URI
- need a way to handle remote groups with conflicting names
2010-02-23 00:44:45 +00:00
James Walker
caad5859b5
swapping pear error handling so Crypt_RSA can properly detect available
...
math libraries
2010-02-22 19:01:12 -05:00
Sarven Capadisli
3b823f8fbd
Leaves the original URL alone and adds ? or & when it does the XHR.
2010-02-23 00:27:41 +01:00
Sarven Capadisli
8aa8e124cb
Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing
2010-02-22 22:24:45 +01:00
Sarven Capadisli
3c00472999
Removed unnecessary assignment to SN.C.I.OStatusProfile. It can be
...
brought back in the future if the value is to be set directly from the
HTML script output.
2010-02-22 22:23:37 +01:00
Brion Vibber
06f155c02d
OStatus: initial hookup of remote group membership (notice delivery not yet working quite right)
...
- added a temp config var to disable salmon magic signatures until they're working consistently
2010-02-22 12:13:57 -08:00
Sarven Capadisli
7e8c3ea418
Removed extra comma
2010-02-22 19:37:42 +01:00
Sarven Capadisli
a1549ebf87
Minor JSLinting
2010-02-22 19:36:03 +01:00
Sarven Capadisli
3ed3796135
Added licensing info and a note about migrating
2010-02-22 19:18:32 +01:00
Sarven Capadisli
85cb850cd5
Set and reuse a cookie with own profile value at a StatusNet instance
2010-02-22 19:13:30 +01:00
Brion Vibber
2b16532ffb
OStatus: use 'profile' consistently as param on ostatussub and ostatusinit to help us stay sane.
2010-02-22 10:03:34 -08:00
Christopher Vollick
a6afc1cfd6
Made Blogspam Plugin Respect textlimit Setting.
...
The Blogspam plugin was setting a max-size to 140.
It was therefore rejecting posts with more characters as spam.
This kind of defeated the purpose of setting a higher limit...
2010-02-22 11:20:44 -05:00
Christopher Vollick
1e8e1e836d
Rewrote How Blogspam Plugin Made HTTP Requests.
...
The old way didn't seem to work anymore.
It was just sending empty requests.
2010-02-22 11:19:16 -05:00
Sarven Capadisli
c88507fe11
Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing
2010-02-22 17:08:54 +01:00
Sarven Capadisli
3569493ba7
Added link to Subscriptions page to XHR get the ostatus sub form
2010-02-22 17:07:48 +01:00
Sarven Capadisli
e6ce04cbce
Generalised Subscription XHR dialogbox
2010-02-22 17:05:43 +01:00
James Walker
2f65fa646a
wiring in magicsig
2010-02-22 09:05:52 -05:00
James Walker
e0388cc1d3
adding magic sig stuff
2010-02-22 09:05:32 -05:00
James Walker
8fe097d7d1
Merge remote branch 'statusnet/testing' into testing
2010-02-22 09:03:42 -05:00
Evan Prodromou
75fdef2092
handle poco nicknames in Ostatus_profile
2010-02-22 07:57:44 -05:00
Evan Prodromou
074e3fa895
Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing
2010-02-22 07:09:08 -05:00
Evan Prodromou
e94800ced9
fix broken link in OpenID documentation
2010-02-22 07:08:57 -05:00
Sarven Capadisli
f54c9b70db
Fixed error/warning message location in OStatus autorize subscription page
2010-02-22 11:53:34 +01:00
James Walker
7b2ea7aa22
Merge remote branch 'statusnet/testing' into testing
2010-02-22 01:40:03 -05:00
James Walker
effa4f5d1e
adding extlib for Crypt_RSA
2010-02-22 01:39:00 -05:00
Brion Vibber
17ed30dffc
OStatus: fix remote subscription when putting webfinger address in the little box
2010-02-22 06:00:13 +00:00
Evan Prodromou
891e002883
don't calculate replies for remote notices
2010-02-21 23:56:48 -05:00
Evan Prodromou
a9599d53c5
some info code for usersalmon.php
2010-02-21 23:39:52 -05:00
Evan Prodromou
e4c4f90c8a
don't save Notices that already exist in Salmon
2010-02-21 23:32:20 -05:00
Evan Prodromou
48839a1fcf
change erroneous common_sql_time() to common_sql_date()
2010-02-21 23:19:29 -05:00
Evan Prodromou
e39e6cdcc5
was using HTMLPurifier::purify() as a static method, which it is not
2010-02-21 23:16:42 -05:00
Evan Prodromou
aab7ce70dc
Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing
2010-02-21 23:08:01 -05:00
Evan Prodromou
17c329ba89
add HTMLPurifier config
2010-02-21 23:07:46 -05:00
Brion Vibber
bd3051b85c
Merge branch 'testing' of gitorious.org:statusnet/mainline into testing
2010-02-21 19:55:53 -08:00
Brion Vibber
5207783765
OStatus: record source profile & saving method in ostatus_source table; this allows us to distinguish posts that have come through an unverified group feed
2010-02-21 19:52:53 -08:00
Evan Prodromou
cc18f757a8
hook in OStatusPlugin to return Ostatus_profile URIs where applicable
2010-02-21 22:52:52 -05:00
Evan Prodromou
232b5efa7e
Add error info for missing URI in attention
2010-02-21 22:44:58 -05:00
Evan Prodromou
13fb7bef78
reversed in_array() arguments in UsersalmonAction
2010-02-21 22:41:02 -05:00
Evan Prodromou
de522d7978
Wasn't putting in namespaces for reply salmons
2010-02-21 22:38:18 -05:00
Evan Prodromou
a0b64663be
Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing
2010-02-21 22:35:04 -05:00
Evan Prodromou
bd21f48cee
Notice::getReplies() returns array of profile IDs
2010-02-21 22:34:40 -05:00
Brion Vibber
892cd801d1
Merge branch 'testing' of gitorious.org:statusnet/mainline into testing
2010-02-21 19:02:23 -08:00
Brion Vibber
ad10e6e8da
OStatus: drop the remnants of feedsubsettings, replaced by ostatussub and no longer linked in UI
2010-02-21 19:01:32 -08:00
Evan Prodromou
79c76f1a87
Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing
2010-02-21 21:57:32 -05:00
Evan Prodromou
be70dd3677
work harder to preserve info when creating new Ostatus_profile
2010-02-21 21:57:09 -05:00
Brion Vibber
d3996996e4
Merge branch 'testing' of gitorious.org:statusnet/mainline into testing
2010-02-21 18:54:06 -08:00
Brion Vibber
78ca45c7a0
OStatus PuSH fixes:
...
- hub now defers subscription state updates until after verification, per spec
- hub now supports synchronous verification when requested (if async is not requested after)
- client now requests synchronous verification (it's a bit safer)
- cleanup on subscription logging/error responses
2010-02-21 18:51:15 -08:00
Evan Prodromou
273c0e0363
Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing
2010-02-21 21:39:50 -05:00
Evan Prodromou
912814fb7f
use some constants and do some extra output in webfinger output
2010-02-21 21:38:59 -05:00
Evan Prodromou
bd74f05a66
Do mention lookup for Webfinger accounts in OStatusPlugin
2010-02-21 21:38:16 -05:00
Evan Prodromou
bf23c35495
Add OStatus_profile::ensureWebfinger()
2010-02-21 21:37:12 -05:00
Evan Prodromou
fde64ddf26
make some of the Webfinger magic strings constants
2010-02-21 21:36:36 -05:00
Brion Vibber
aa0b2ce81a
OStatus PuSH fixlets:
...
- set minimal error page output on PuSH callback
- allow hub to retry ($config['ostatus']['hub_retries']), simplify internal iface a bit. Retries are pushed to end of queue but otherwise not delayed yet; makes delivery more robust to one-off transitory errors but not yet against downtime.
2010-02-21 14:28:06 -08:00
Evan Prodromou
37179a91d5
Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing
2010-02-21 17:00:19 -05:00
Evan Prodromou
1c22bf20f1
fixup activity serialization so salmon notifications work
2010-02-21 17:00:05 -05:00
Brion Vibber
5349aa420e
OStatus feedsub fixlets:
...
- actually udpate feedsub.last_update when we get a new PuSH update in
- move incoming PuSH processing to a queue handler to minimize time spent before POST return, as recommended by PuSH spec. When queues are disabled this'll still be handled immediately.
2010-02-21 13:40:59 -08:00
Evan Prodromou
10f6c023f4
include namespaces in posted activities in notifyActivity()
2010-02-21 16:23:55 -05:00
Evan Prodromou
4209082677
Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing
2010-02-21 14:18:16 -05:00
Evan Prodromou
ad3406a919
use Ostatus_profile::ensureActivityObjectProfile() in SalmonAction::ensureProfile()
2010-02-21 14:17:37 -05:00
Evan Prodromou
16a43b1154
slightly more robust remote profile creation
2010-02-21 14:14:45 -05:00
Brion Vibber
588fe5d603
OStatus: debug aid - log the received Salmon post when it can't be parsed properly as an <atom:entry>
2010-02-21 10:48:48 -08:00
Evan Prodromou
de093537f6
correct actor for OStatusPlugin::onEndUnsubscribe()
2010-02-21 13:32:24 -05:00
Evan Prodromou
068d8f9220
correct call to time() in Ostatus_profile::notify()
2010-02-21 13:31:58 -05:00
Evan Prodromou
f83941a67b
correct name check in ActivityObject::fromProfile()
2010-02-21 13:31:31 -05:00
Evan Prodromou
5aeed9e041
add activity:subject to atom feeds
2010-02-21 13:11:00 -05:00
Evan Prodromou
1a86bf9c65
try different ways to get a profile from a feed
2010-02-21 12:56:46 -05:00
Evan Prodromou
d372a352ec
make avatar attribute explicit for ActivityObject
2010-02-21 12:55:40 -05:00
Evan Prodromou
09e2d181be
remove unused profile code from salmonaction
2010-02-21 12:54:52 -05:00
Evan Prodromou
727773cdfa
redirect ostatussub if not logged in
2010-02-21 11:24:04 -05:00
Evan Prodromou
df7c6b37c8
use notifyActivity() for notifications in OStatusPlugin
2010-02-21 10:53:32 -05:00
Evan Prodromou
4e90bd34e9
activity notification in Ostatus_profile
2010-02-21 10:53:11 -05:00
Evan Prodromou
ff2efd314f
let activities generate their own XML
2010-02-21 10:50:51 -05:00
Evan Prodromou
9898bbdeb2
Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing
...
Conflicts:
plugins/OStatus/lib/activity.php
2010-02-21 09:19:27 -05:00
Evan Prodromou
7f471bde23
more tests for Activity parsing
2010-02-21 09:17:52 -05:00
Evan Prodromou
4a4c34de32
Save posted notices in usersalmon
2010-02-21 09:17:35 -05:00
Evan Prodromou
6169d8a877
saving notices in salmon actions
2010-02-21 09:16:27 -05:00
Evan Prodromou
229f9bd069
more complete content retrieval in ActivityObject::__construct()
2010-02-21 09:15:57 -05:00
Brion Vibber
5df61141d2
OStatus: fix regressions from merge
2010-02-20 18:25:40 -08:00
Evan Prodromou
6f1ccfc577
Subscription::start() should be enough, right?
2010-02-20 20:36:54 -05:00
Evan Prodromou
0c62c68675
do some double-checks on favor and disfavor handlers in OStatusPlugin
2010-02-20 20:34:29 -05:00
Evan Prodromou
5565216b42
Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing
...
Conflicts:
plugins/OStatus/OStatusPlugin.php
2010-02-20 20:27:04 -05:00
Evan Prodromou
96c6019638
Add support for favor and disfavor notification
...
Added support for favoring and disfavoring in OStatusPlugin.
Needed to represent the Notice as an activity:object, so added
some code for that in lib/activity.php.
Also, made some small changes to OStatusPlugin so it handled
having a non-default argument $object correctly.
2010-02-20 19:58:20 -05:00
Brion Vibber
145a19954f
OStatus: Salmon favorite & unfavorite events now handled
2010-02-20 16:45:30 -08:00
Brion Vibber
9c2fe8492f
OStatus: send favorite/unfavorite notifications to remote authors
2010-02-20 15:56:36 -08:00
Brion Vibber
ea9d6f21ec
OStatus subscription page fixups; works but needs lots of UI loving!
...
- ostatussub via subscribe button now works again (changed to take profile instead of feed, patched up to the new discovery)
- added a quickie hack to allow putting your remote profile URI in place of webfinger acct through the remote-sub button (needs to be patched up to do proper discovery via XRDS or a link or something)
2010-02-20 12:57:47 -08:00
Brion Vibber
f891b135fb
OStatus: fix regressions in plugin & usersalmon action. Sub/unsub notifications are working again.
2010-02-20 10:26:32 -08:00
Brion Vibber
97b01432e7
drop no-longer-used XML_Feed_Parser extlib package from OStatus plugin
2010-02-20 10:06:28 -08:00
Evan Prodromou
866b647062
add hooks for OStatus notification on subscribe/unsubscribe
2010-02-20 11:48:42 -05:00
Evan Prodromou
ab4ec095e8
adjust URI, URL, and location in Ostatus_profile::processPost
2010-02-20 11:38:05 -05:00
Evan Prodromou
ed45df045f
Cool bug! Technically good PHP syntax
2010-02-20 11:17:54 -05:00
Evan Prodromou
2df3bbc80b
Move some salmon processing to a superclass
...
Moved some salmon processing to a superclass so we could handle group
salmon posts, too.
2010-02-20 11:12:43 -05:00
Brion Vibber
50db2d5d69
OStatus: Salmon notifications now being generated moderately correctly. :) Needs to be an <entry> not a <feed>.
2010-02-19 17:01:38 -08:00
Brion Vibber
557df3d3f7
OStatus: sub/unsub notifications working again. Fixed up autodetection of feed info at profile setup time
2010-02-19 16:21:17 -08:00
Evan Prodromou
d69f6dff6a
Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing
...
Conflicts:
plugins/OStatus/actions/salmon.php
2010-02-19 16:55:24 -05:00
Evan Prodromou
b0327506a4
some more salmon stuff
2010-02-19 16:37:07 -05:00
Brion Vibber
a1a3ab1c58
OStatus: hooked up follow/unfollow events on Salmon endpoint to create/destroy remote subscriber relationships
2010-02-19 12:08:07 -08:00
Brion Vibber
114eb310ca
OStatus: fix up Salmon endpoint detection/saving, timestamp fixes.
2010-02-19 10:29:06 -08:00
Evan Prodromou
48edade751
add ActivityContext class and test it
2010-02-18 22:18:14 -05:00
Brion Vibber
0dac13d197
OStatus refactoring to clean up profile vs feed and fix up subscription issues.
...
PuSH subscription maintenance broken back out to FeedSub, letting Ostatus_profile deal with the profile level (user or group, with unique id URI)
2010-02-18 16:50:53 -08:00
Brion Vibber
22ff358ba8
OStatus sub/unsub updates:
...
- fix for PuSH unsub verification
- send Salmon notification on unsub
2010-02-18 18:20:48 +00:00
Evan Prodromou
b6e5d4ecc3
Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing
2010-02-18 06:36:47 -05:00
Evan Prodromou
80ef3946d0
more work on salmon
2010-02-18 06:36:32 -05:00
Zach Copley
73ba26efe3
Twitter bridge - fix for Ticket #2192
2010-02-17 20:58:32 +00:00
Zach Copley
05c50499c3
Better logging for Twitter bridge account linking process
2010-02-17 20:58:24 +00:00
Zach Copley
c201baffbf
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-17 20:58:15 +00:00
Zach Copley
c498f6e1ba
Twitter bridge - fix for Ticket #2192
2010-02-17 20:53:16 +00:00
Zach Copley
6b887728b2
Better logging for Twitter bridge account linking process
2010-02-17 19:24:38 +00:00
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
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
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
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
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
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
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
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