Commit Graph

1096 Commits

Author SHA1 Message Date
James Walker
b2dabe6a48 removing the webfinger lib 2010-02-25 17:12:46 -05:00
James Walker
3d0ba3efc8 adding a new, more generic "discovery" class that does LRDD disco
(rather than webfinger specific)
2010-02-25 17:09:54 -05:00
James Walker
5cb6e54bed call-time pass by reference 2010-02-25 17:09:54 -05:00
James Walker
e62e49ed3b adding some exception handling for magicenv parsing 2010-02-25 17:09:54 -05:00
Brion Vibber
b5b5184c88 OStatus: fix remote groups to work with new user_groups/local_groups split.
- fix <activity:subject> generation so we get the profile info (what's available so far)
- use id instead of nickname for group join/leave forms so we can join/leave remote groups
  while the rest of the groups UI remains limited to local groups
  (plugins are responsible for making sure remote notifications and permission checks are done)
- fix remote notification when joining group through OStatus's remote subscribe form
2010-02-25 13:02:08 -08:00
Brion Vibber
79c0d52daa OStatus: save categories from the Atom entry as hashtags. 2010-02-25 11:26:33 -08:00
Brion Vibber
4a71753f20 Merge branch 'master' of gitorious.org:statusnet/mainline into testing 2010-02-25 09:28:19 -08:00
Brion Vibber
84fa3776e2 Merge commit 'refs/merge-requests/122' of git://gitorious.org/statusnet/mainline into integration 2010-02-25 09:14:42 -08:00
Sarven Capadisli
ffdcdbc198 Removed dangling icons in Realtime plugin 2010-02-25 13:55:06 +00:00
Sarven Capadisli
9ef7eb036c Moved common icons from Realtime plugin to core icons file 2010-02-25 10:38:55 +00:00
Evan Prodromou
374c488cf1 return attachement from saveHTMLFile() 2010-02-24 22:26:40 -05:00
Evan Prodromou
b08a527139 content_* to common_* 2010-02-24 22:22:42 -05:00
Evan Prodromou
75cf4d4312 Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing 2010-02-24 22:03:01 -05:00
Evan Prodromou
942521ef30 if OStatus post is too long, show the summary and save it as an HTML attachment 2010-02-24 22:02:43 -05:00
Brion Vibber
58e232a10a OStatus: when finding webfinger @-replies, override a local profile match if found at the same location (eg @someguy vs @someguy@example.org)
Fixes inconsistent application of webfinger @-mentions in OStatus; once a local profile is set up the local name would often match first and ended up overriding in output.
2010-02-25 02:56:56 +00:00
Brion Vibber
b798faf9ea OStatus: abort processing of this PuSH in item if we got an exception, rather than letting it be re-run. 2010-02-25 02:43:20 +00:00
Zach Copley
10884dcd49 Merge branch 'testing' of gitorious.org:statusnet/mainline into testing
* 'testing' of gitorious.org:statusnet/mainline:
  Merge StatusNet core localization updates from 0.9.x branch
  Fix update_po_templates.php to support the plural and context variants of _m() in plugins
  Drop HTMLPurifier; we don't need its extra capabilities and we're already using htmLawed which is lighter-weight.
  OStatus: handle update-profile Salmon pings
  Revert "Updated jQuery Form Plugin from v2.17 to v2.36"
  OStatus: disable HTMLPurify cache unless we've configured a writable path for it.
2010-02-24 16:52:16 -08:00
Zach Copley
543ff40ef6 Populate more profile information when doing a remote subscribe 2010-02-24 16:51:24 -08:00
Brion Vibber
3b7084c6dd Fix update_po_templates.php to support the plural and context variants of _m() in plugins 2010-02-24 16:34:45 -08:00
Brion Vibber
e18e659ca3 Drop HTMLPurifier; we don't need its extra capabilities and we're already using htmLawed which is lighter-weight. 2010-02-24 23:39:40 +00:00
Brion Vibber
93507a1927 OStatus: handle update-profile Salmon pings 2010-02-24 23:28:01 +00:00
Brion Vibber
ec4899e617 OStatus: disable HTMLPurify cache unless we've configured a writable path for it.
Updated plugin README with available config options.
Cleanup for a bad element fallback lookup in Activity
2010-02-24 22:16:17 +00:00
Brion Vibber
0c7844734e Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing 2010-02-24 20:38:38 +00:00
Brion Vibber
c36bdc1ba5 - break OMB profile update pings to a background queue
- add event hooks to profile update pings
- send Salmon pings with custom update-profile event to OStatus subscribees and groups (subscribers will see it on your next post)
- fix OStatus queues with overlong transport names, should work on DB queues now
- Ostatus_profile::notifyActivity() and ::notifyDeferred() now can take XML, Notice, or Activity for convenience
2010-02-24 20:36:36 +00:00
Evan Prodromou
269d567d94 use Subscription::start() for remote subscribes 2010-02-24 15:20:06 -05:00
Evan Prodromou
daea988786 Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing 2010-02-24 15:00:52 -05:00
Brion Vibber
07214f1370 OStatus: save updated profile bits when they come in over the wire; fix up nicknames 2010-02-24 19:06:10 +00:00
Sarven Capadisli
1f45273d53 Moved StatusNetInstance into SN in util.js 2010-02-24 16:35:20 +01:00
Sarven Capadisli
8e7606cc8d Added processing indicator for .form_remote_authorize on ostatussub page 2010-02-24 15:20:44 +01:00
Zach Copley
618ce6a855 - Move ActivityParseTests to core
- Add test for Portable Contacts stuff
2010-02-23 23:58:21 -08:00
Brion Vibber
2e58802cc9 OStatus: fix group delivery, send reply/group Salmon pings from background. 2010-02-24 02:20:31 +00:00
Brion Vibber
584b87cfe5 OStatus: consolidate the low-level notice save code between Salmon and PuSH input paths. Validation etc remains at higher levels. 2010-02-24 01:09:52 +00:00
James Walker
391b45949f adding xfn, foaf and hcard rel's to our webfinger output 2010-02-23 18:25:31 -05:00
Brion Vibber
d6ad733247 OStatus: fixes for link/id and text extraction gets import of Buzz feeds working. 2010-02-23 21:47:14 +00:00
Evan Prodromou
f5ec7c2707 some logging for OStatusPlugin::onStartFindMentions() 2010-02-23 16:13:24 -05:00
Brion Vibber
5f9a8ca64b OStatus: accept webfinger addresses as well as profile URLs in the explicit remote subscribe form. 2010-02-23 21:11:44 +00:00
Evan Prodromou
b09304a6c4 Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing
Conflicts:
	plugins/OStatus/OStatusPlugin.php
2010-02-23 16:02:27 -05:00
Evan Prodromou
a0c255e231 move mention detection before default in OStatusPlugin 2010-02-23 15:59:10 -05:00
Brion Vibber
90d34b26c6 OStatus: do PuSH subscription setup from subscribe/join event hooks, so resubscribing directly from a profile/group list works correctly if there aren't active subscriptions at the moment. 2010-02-23 20:44:27 +00:00
Brion Vibber
c79c70ea2c OStatus subscription UI tweak: if we're already subscribed/joined, say so and don't offer a 'subscribe'/'join' button on the profile preview page. 2010-02-23 11:56:17 -08:00
Brion Vibber
e070fcaaae OStatus: fix for avatars, submit button in updated remote profile preview 2010-02-23 11:37:49 -08:00
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