Commit Graph

323 Commits

Author SHA1 Message Date
Zach Copley
c19e592fa8 Move hasFave() to Profile 2010-09-29 16:35:12 -07:00
Siebrand Mazeland
9587f9f55b * i18n/L10n and translator documentation updates.
* whitespace and indentation updates
2010-09-28 23:42:18 +02:00
Evan Prodromou
a319b40c97 common_cache_key() -> Cache::key() 2010-09-06 10:07:43 -04:00
Evan Prodromou
8f81762d68 common_memcache() => Cache::instance() 2010-09-06 09:56:45 -04:00
Evan Prodromou
974ac48771 bug in Profile::fromURI() wasn't returning profile 2010-09-01 16:55:16 -04:00
Evan Prodromou
7bec455a21 Static method to get a profile based on an URI 2010-09-01 16:15:22 -04:00
Brion Vibber
7e55fc0044 OStatus/FeedSub: tweaked PuSH feed garbage collection so other plugins can declare usage of a low-level feed or an OStatus profile besides profile subscriptions & group memberships.
SubMirror: redid add-mirror frontend to accept a feed URL, then pass that on to OStatus, instead of pulling from your subscriptions.
Profile: tweaked subscriberCount() so it doesn't subtract 1 for foreign profiles who aren't subscribed to themselves; instead excludes the self-subscription in the count query.
Memcached_DataObject: tweak to avoid extra error spew in the DB error raising

Work in progress: tweaking feedsub garbage collection so we can count other uses
2010-08-06 11:49:52 -07:00
Evan Prodromou
2ba36fc242 Merge branch 'activityhooks' into 0.9.x
Conflicts:
	classes/Notice.php
2010-08-03 16:01:18 -07:00
Evan Prodromou
f83171824f correctly show <source> for atom feeds 2010-08-03 15:50:21 -07:00
Siebrand Mazeland
8f8588026b Fixes for messages after review by Brion. 2010-07-30 19:25:55 +02:00
Siebrand Mazeland
125ff142e8 * mark a few message for translation
* add translator documentation
2010-07-29 13:36:08 +02:00
Zach Copley
1eec7f779f - Add profile_info tag to Atom author
- Normalize xmlns:statusnet links in the API
2010-06-22 16:28:06 -07:00
Brion Vibber
f1c01f9ead Temporary hack until notice_profile_id_idx is updated
to (profile_id, id) instead of (profile_id, created, id).
It's been falling back to PRIMARY instead, which is really
very inefficient for a profile that hasn't posted in a few
months. Even though forcing the index will cause a filesort,
it's usually going to be better. Even for large profiles it
seems much faster than the badly-indexed query.
2010-04-01 10:17:17 -07:00
Evan Prodromou
c1c7feedbd do complete unsubscribe process when deleting a user 2010-03-31 15:02:19 -04:00
Brion Vibber
441e52718e Background deletion of user accounts. Notices are deleted in chunks, then the user itself when they're all gone.
While deletion is in progress, the account is locked with the 'deleted' role, which disables all actions with rights control.

Todo:
* Pretty up the notice on the profile page about the pending delete. Show status?
* Possibly more thorough account disabling, such as disallowing all use for login and access.
* Improve error recovery; worst case is that an account gets left locked in 'deleted' state but the queue jobs have gotten dropped out. This would leave the username in use and any undeleted notices in place.
2010-03-15 16:08:00 -07:00
Brion Vibber
ce92bc7143 Drop timestamp cutoff parameter from User::getCurrentNotice() and Profile::getCurrentNotice().
It's not currently used, and won't be efficient when we update the notice.profile_id_idx index to optimize for our id-based sorting when pulling user post lists for profile pages, feeds etc.
2010-03-11 11:01:01 -08:00
Brion Vibber
4a2511139e Initial user role controls on profile pages, for owner to add/remove administrator and moderator options.
Buttons need to be themed.
2010-03-03 15:43:49 -08:00
Brion Vibber
3bb42d1170 Use poster's subscribed groups to disambiguate group linking when a remote group and a local group exist with the same name. (If you're a member of two groups with the same name though, there's not a defined winner.) 2010-03-03 19:00:02 +00:00
Brion Vibber
6b134ae4c7 Dropped deprecated timestamp-based 'since' parameter for all API methods. When it sneaks in it can cause some very slow queries due to mismatches with the indexing.
Twitter removed 'since' support some time ago, and we've already removed it from the public timeline, so it shouldn't be missed.
2010-03-02 11:54:02 -08:00
Zach Copley
6a711c6cdc Move ActivityObject and related stuff to core 2010-02-22 17:10:50 -08:00
Evan Prodromou
b79d4ed6a1 add PoCo preferredUsername for nickname in Profile::asActivityNoun() 2010-02-22 07:43:12 -05:00
Evan Prodromou
fae5a15a88 add strongly-suggested link to Profile::asActivityNoun() 2010-02-22 07:40:20 -05:00
Zach Copley
35be39e30e Merge branch 'testing' of git@gitorious.org:statusnet/mainline into testing 2010-02-22 01:23:24 -08:00
Zach Copley
47300a2ae9 Upgrade profile-based activity noun to have more complete set of
profile fields
2010-02-22 01:21:34 -08:00
Evan Prodromou
a745d38d6d slight rearrangement of getting profile URIs 2010-02-21 22:52:27 -05:00
Evan Prodromou
52e8aa798a Refactor subs_* functions for remote use
The subs_* functions in subs.php have made a lot of assumptions
about users versus profiles. I've refactored the functions to
be methods of the Subscription class instead, and to use Profile
objects throughout.

Some of the checks for blocks or existing subscriptions depended
on users or profiles, so I've moved those methods around a bit.

I've left stubs for the subs_* functions until we get time to replace
them.
2010-02-19 08:16:45 -05:00
Zach Copley
2cb243808c More sensical profile::getUri() 2010-02-16 20:13:39 -08:00
Zach Copley
c892726c80 Take remote profiles into account when looking up canonical profile URIs 2010-02-16 16:22:58 -08:00
Zach Copley
eea52c708b Add rel="avatar" to img links in <activity:actor> stanzas 2010-02-16 11:32:10 -08:00
Evan Prodromou
71ecd68901 add a FIXME to Profile 2010-02-16 12:45:00 -05: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
Zach Copley
3beddffc39 ostatus:attention links in Notice Atom output 2010-02-11 16:29:27 -08:00
Zach Copley
e2c0f59414 Some upgrades to Atom output for OStatus 2010-02-11 13:56:05 -08:00
Evan Prodromou
5fdcd88176 Moderator can make users admins of a group 2010-02-06 11:36:59 +01:00
Zach Copley
9e7f47652d Revoke access token UI 2010-01-24 16:36:05 -08:00
Zach Copley
c78937537e Better detial in connected OAuth applications list 2010-01-24 16:36:03 -08:00
Zach Copley
ae46bc5fff Started work on interface for displaying connected OAuth apps 2010-01-24 16:36:01 -08: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
Evan Prodromou
81843f2acd show the repeat form in notice lists 2009-12-11 10:49:26 -05:00
Evan Prodromou
433106dfc5 remove 'has forwarded' method from Profile 2009-12-10 14:40:48 -05:00
Evan Prodromou
c49ece9fb4 method to check if a profile has forwarded a notice 2009-12-08 17:20:17 -05:00
Craig Andrews
d07df8a796 Added Authorization plugin
Added LDAPAuthorization plugin
2009-11-18 14:19:43 -05:00
Evan Prodromou
6a1afda259 Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x
Conflicts:
	classes/statusnet.ini
2009-11-17 06:25:07 -05:00
Evan Prodromou
d59af02960 disallow email on faves from sandboxed users 2009-11-16 14:28:55 -05:00
Evan Prodromou
e9321a1806 more rights denied to silenced and sandboxed 2009-11-16 19:46:08 +01:00
Evan Prodromou
f1efb845e4 don't allow sandboxed users to post public notices 2009-11-16 19:22:22 +01:00
Evan Prodromou
d2145a5b7f Move rights check to profile and add right for new notices
Added a right for new notices, realized that the hasRight() method
should be on the profile, and moved it.

Makes this a less atomic commit but that's the way it goes sometimes.
2009-11-16 19:03:59 +01:00
Evan Prodromou
3e08309826 change uses of User_role to Profile_role 2009-11-16 16:06:52 +01:00
Evan Prodromou
792590bcdc move role functions to Profile class 2009-11-16 15:52:33 +01:00
Craig Andrews
6470ccd1b8 getSubscribers and getSubscriptions were not handling the case where limit=null correctly 2009-11-16 00:19:19 -05:00
Brion Vibber
088081675f Revert "Remove more contractions"
This reverts commit 5ab709b739.

Missed this one yesterday...
2009-11-09 20:01:46 +01:00
Siebrand Mazeland
5ab709b739 Remove more contractions
* doesn't
* won't
* isn't
* don't
2009-11-08 23:32:15 +01:00
Evan Prodromou
5d2b35cce6 get location from a Profile 2009-10-29 14:43:25 -04:00
Evan Prodromou
3c724ccd0d Merge branch '0.9.x' into location 2009-10-24 19:59:46 -04:00
Evan Prodromou
2ed073f295 new data structures for location 2009-10-21 22:43:40 -04:00
Trever Fischer
1241e651ae Added support for profile designs to the twitter API 2009-10-15 05:16:37 -04:00
Evan Prodromou
c5047fd90a Merge branch '0.8.x' into 0.9.x
Conflicts:
	classes/Profile.php
2009-10-04 03:07:37 -04:00
Evan Prodromou
be513db013 copy-and-paste typo in profile deletion 2009-10-02 15:42:34 -04:00
Evan Prodromou
b3b3af9a2e Merge branch '0.8.x' into deleteuser 2009-10-02 15:27:55 -04:00
Craig Andrews
4a97ad9efe Remove unnecessary Profile::pkeyGet
Thanks for the info, Evan.
2009-09-15 17:08:26 -04:00
Craig Andrews
bb48698416 Add missing pkeyGet override to the Profile class 2009-09-13 21:43:29 -04:00
Evan Prodromou
5d09b6b3f0 Merge branch '0.8.x' into 0.9.x
Conflicts:
	EVENTS.txt
	actions/finishremotesubscribe.php
	actions/postnotice.php
	actions/public.php
	actions/remotesubscribe.php
	actions/showstream.php
	actions/updateprofile.php
	actions/userauthorization.php
	classes/laconica.ini
	lib/common.php
	lib/oauthstore.php
	lib/omb.php
2009-08-27 11:16:45 -07:00
Evan Prodromou
df86aa7214 define LACONICA and accept LACONICA for backwards compatibility 2009-08-26 10:41:36 -04:00
Evan Prodromou
865b716f09 change LACONICA to STATUSNET 2009-08-25 18:42:34 -04:00
Evan Prodromou
4737563b95 a distributed -> the distributed 2009-08-25 18:14:12 -04:00
Evan Prodromou
c8b8f07af1 change Laconica and Control Yourself to StatusNet in PHP files 2009-08-25 18:12:20 -04:00
Evan Prodromou
4d3e2daf53 check correct setting in Profile bio length 2009-08-21 07:48:14 -04:00
Evan Prodromou
d2d3418b8a Profile class has methods to check bio length 2009-08-21 07:40:46 -04:00
Evan Prodromou
fa6b49ab38 data classes allow >140 bios in profiles 2009-08-21 06:33:21 -04:00
Evan Prodromou
51ac34e80c first version of deleting users 2009-07-26 13:06:38 -06:00
Craig Andrews
ec453f0123 Merge commit 'br3nda/0.8.x-profile-pgfix' into 0.8.x 2009-07-23 11:13:27 -04:00
Brenda Wallace
27e525dbbc fixed up a limit offset to be ANSI SQL compliant 2009-07-23 15:07:28 +12:00
Zach Copley
6d839ae992 Removed noisy debugging statements 2009-07-17 12:41:54 -07:00
Evan Prodromou
8b65883f9d cache frequently-used subscriber, subscription, notice and fave count values 2009-07-09 17:28:38 -07:00
Evan Prodromou
994768b821 break up big inbox queries into lots of small ones 2009-06-25 23:00:46 -07:00
Evan Prodromou
aec6456c91 Update copyright dates in files modified in 2009 2009-06-20 16:12:55 -07:00
Evan Prodromou
793a6a1155 change Controlez-Vous to Control Yourself 2009-06-20 16:00:04 -07:00
Evan Prodromou
07f5797f2f Make the personal tag streams actually work 2009-06-17 15:04:57 -07:00
Evan Prodromou
adfb79a9bb Merge branch '0.7.x' into 0.8.x
Conflicts:
	classes/Notice.php
	classes/Profile.php
	lib/common.php
	lib/util.php
	scripts/getvaliddaemons.php
	scripts/stopdaemons.sh
2009-06-08 11:55:32 -07:00
Zach Copley
425f9d703c Ticket #1567 - Change max_id to return notices <= ID instead of < ID 2009-05-29 16:54:24 -07:00
Robin Millette
0271859c24 Added personal tag page: http://example.com/MY_NICK/tag/A_TAG 2009-05-18 17:18:57 -04:00
Evan Prodromou
3328ec545c make profile notice getting use ids 2009-05-01 11:27:57 -07:00
Evan Prodromou
343cd6f205 Move common_avatar_* functions to Avatar
Moved the common_avatar_* functions to the Avatar class. Typically
either as methods on the object or as static methods. Replaced all the
uses of the functions in other modules.
2009-02-06 03:55:48 -05:00
Sean Murphy
7e975b17c5 Fixed #1134; Consolidated image scaling functions. 2009-02-04 19:32:15 -05:00
Evan Prodromou
8516ccfb9d move membership/adminship tests to profile 2009-01-21 13:57:18 -05:00
Zach Copley
5e061d2060 Some fixups of patches not already migrated to trunk to bring inline with PEAR coding stds
darcs-hash:20081225144601-7b5ce-4846f3d036c36037836d15ed672c10ba33f9f84c.gz
2008-12-25 09:46:01 -05:00
Zach Copley
6b51941056 Actually crop your avatar when hitting 'crop' button on profile
darcs-hash:20081212043018-7b5ce-bc83b66e19007aa0a04fbb40053217ef92c44779.gz
2008-12-11 23:30:18 -05:00
Evan Prodromou
04ef1ba8ee change function headers to K&R style
Another huge change, for PEAR code standards compliance. Function
headers have to be in K&R style (opening brace on its own line),
instead of having the opening brace on the same line as the function
and parameters. So, a little perl magic found all the function
definitions and move the opening brace to the next line (properly
indented... usually).

darcs-hash:20081223193323-84dde-a28e36ecc66672c783c2842d12fc11043c13ab28.gz
2008-12-23 14:33:23 -05:00
Evan Prodromou
eb2f9c98ac replace NULL with null
Another global search-and-replace update. Here, I've replaced the PHP
keyword 'NULL' with its lowercase version. This is another PEAR code
standards change.

darcs-hash:20081223192129-84dde-4a0182e0ec16a01ad88745ad3e08f7cb501aee0b.gz
2008-12-23 14:21:29 -05:00
Evan Prodromou
edbc0c665c replace all tabs with four spaces
The PEAR coding standards decree: no tabs, but indent by four spaces.
I've done a global search-and-replace on all tabs, replacing them by
four spaces. This is a huge change, but it will go a long way to
getting us towards phpcs-compliance. And that means better code
readability, and that means more participation.

darcs-hash:20081223191907-84dde-21e8efe210e6d5d54e935a22d0cee5c7bbfc007d.gz
2008-12-23 14:19:07 -05:00
Evan Prodromou
a143b64666 edit throttling
darcs-hash:20081210174722-84dde-4c79d7f73230d008195bd19738bc9a6017b940e9.gz
2008-12-10 12:47:22 -05:00
Evan Prodromou
f80cd3273e only get tags for this profile list type
darcs-hash:20081124031549-84dde-c537cb25f301ac3368440d4d5f583ea3d713ac2c.gz
2008-11-23 22:15:49 -05:00
Evan Prodromou
bb5437bd2d don't get self-tags
darcs-hash:20081124015927-84dde-525625c0341e62d3939879430743d0a976d0d8d2.gz
2008-11-23 20:59:27 -05:00
Evan Prodromou
82696b150e show dropdown of tags only when tags are available and add tags function to profile
darcs-hash:20081124015802-84dde-d72651ff0c466d15835fe263e96bdd9b34162849.gz
2008-11-23 20:58:02 -05:00
millette
bf72cde96f sphinx search for notices
darcs-hash:20081120215041-099f7-db396a60755d551099122b58634b7550d5606d88.gz
2008-11-20 16:50:41 -05:00
millette
0bd6f76451 sphinx search of people
darcs-hash:20081120211347-099f7-d5588788dcd9a16cf72ece59da3d2bf9b8171b85.gz
2008-11-20 16:13:47 -05:00
Evan Prodromou
34528df6d9 use correct class for avatar deletion so memcached is updated
darcs-hash:20081113063850-5ed1f-15c314239e2114b52beb7c83b7006b69a48ec5c3.gz
2008-11-13 01:38:50 -05:00
Evan Prodromou
c8392ed58d use pkeyGet for Avatar
darcs-hash:20081002144749-5ed1f-a5503625b811f28a853712d4ddd4a76813f24bc1.gz
2008-10-02 10:47:49 -04:00
Evan Prodromou
8da61dc1d3 path correct in require_once for memcached
darcs-hash:20080926161824-5ed1f-b4fb53e5ca65bb099aabbba6ea60a13496f669a2.gz
2008-09-26 12:18:24 -04:00
Evan Prodromou
f6615f70e5 prepend Memcached_DataObject require with INSTALLDIR
darcs-hash:20080926161540-5ed1f-2e9dc6f2297c612208214a6d52f36ce0dd7aa4de.gz
2008-09-26 12:15:40 -04:00
Evan Prodromou
e2e6bbb298 caching layer for DB/DataObject
I added a new class, Memcached_DataObject, that will (optionally)
fetch data out of a memcached server if it's available. This only
works on 'staticGet'.

Methods that write to the database (insert, update, delete) will clear
and set the cache correctly, too.

darcs-hash:20080926160941-5ed1f-922de078b4c1941853ad014edf9a17fae486f8cf.gz
2008-09-26 12:09:41 -04:00
Evan Prodromou
499afd8c22 replies from people you're not subscribed to over Jabber
darcs-hash:20080715195513-84dde-454419c971015be385d9c4c35f7acbee419031f9.gz
2008-07-15 15:55:13 -04:00
Mike Cochrane
bdd0091e70 Sort notices by date then id so they are in the correct order when there are multiple in the same second
darcs-hash:20080713065009-533db-69d7f21d152552d7e994a0c7c7615b61a8ea592c.gz
2008-07-13 02:50:09 -04:00
Mike Cochrane
7e38142d4a Resolve conflicts and convert _t( to _( where it was introduced again.
darcs-hash:20080710045126-533db-ffd9bcfe1295b3a376579ed7cd2278d5597b1884.gz
2008-07-10 00:51:26 -04:00
Mike Cochrane
4b656f47df Merge conflicts and kill a whole lot of trailing whitespace on lines.
darcs-hash:20080709224630-533db-b5399baef280133858dac9b89c2cd6a2aba9f861.gz
2008-07-09 18:46:30 -04:00
Evan Prodromou
816262d488 rebuild DB_DataObject classes for new structure
darcs-hash:20080709200711-84dde-b6a9e403ab50ef5a6497a25a756ed63c373f0402.gz
2008-07-09 16:07:11 -04:00
Evan Prodromou
8d3ec9c920 twiddle a few bits to make replies work correctly
darcs-hash:20080707054358-84dde-916977a2af4f792e0dc9e02a9f5344ec60911319.gz
2008-07-07 01:43:58 -04:00
Evan Prodromou
c02a01914a start openid rp integration
darcs-hash:20080617133501-84dde-adec156ac58b84cce41ae0e9bde58cf7637e6c42.gz
2008-06-17 09:35:01 -04:00
Evan Prodromou
024dc6c098 email notification on new subscriptions
darcs-hash:20080615030202-84dde-ebed7919c227ce280dc818f301e15001eb8b5926.gz
2008-06-14 23:02:02 -04:00
Evan Prodromou
6af287f554 passing id to the avatar filename function
darcs-hash:20080605195500-84dde-307ed9c01b6efa0055908f408d3032ce7d7a9870.gz
2008-06-05 15:55:00 -04:00
Evan Prodromou
bd4ec5d147 setOriginal() is an instance method
darcs-hash:20080605195222-84dde-c9e00b0ef0f8fed4ea5d4c088d52e39589b6bb02.gz
2008-06-05 15:52:22 -04:00
Evan Prodromou
56021d9572 move avatar scaling and saving to Avatar and Profile
Extracted the code for setting a new original avatar to the Profile
class, and moved some of it to Avatar, too. This makes it easier to
have the same functionality whether an avatar is set using the profile
settings (for our users), or on a remote subscription. Necessitated
changing the filenaming function to just take an ID.

darcs-hash:20080605193708-84dde-a441cc0474951ce7f1a1da9310b5145c0b7c3070.gz
2008-06-05 15:37:08 -04:00
Evan Prodromou
7979176e14 generate classes for db schema with URIs
darcs-hash:20080522184109-84dde-0d13fc6890f85613554f5dd64b1baa67bbcaa8f6.gz
2008-05-22 14:41:09 -04:00
Evan Prodromou
46b3f1c3a7 remove validation code
darcs-hash:20080521110253-84dde-e8d6f62225bb56f5e08b28b35d23ccfbe56984fd.gz
2008-05-21 07:02:53 -04:00
Evan Prodromou
41a149b74a fixup footer menu and fix syntax error in profile.php
darcs-hash:20080520210437-84dde-1a8472f5b5cdde042975d669b0fdca5d6984f330.gz
2008-05-20 17:04:37 -04:00
Evan Prodromou
e1f04061b9 ease up on the validation
darcs-hash:20080520210119-84dde-a9b74a933bd45b2e6b2f96a53a1be55caa0f7912.gz
2008-05-20 17:01:19 -04:00
Evan Prodromou
52600ce0b0 trim whitespace
darcs-hash:20080520191412-84dde-a607dbe848279639630edd1ab4616d05cc2318d1.gz
2008-05-20 15:14:12 -04:00
Evan Prodromou
5d1a6f0fef add validation methods to classes
darcs-hash:20080520185756-84dde-290bc12cddfc1738a96385e95821d466eff11196.gz
2008-05-20 14:57:56 -04:00
Evan Prodromou
3b14b7901c fixes to make it all lint
Ran everything through php -l, found out that it didn't compile.

So: fixed the am-I-running-in-Laconica check at the top of each file.
Some syntax fixes in shownotice, showstream, common.

darcs-hash:20080517154701-84dde-8d38da89c5b9cb3b40704adb04a4de880c204181.gz
2008-05-17 11:47:01 -04:00
Evan Prodromou
fac522f4d7 settings and avatars
Did considerable work on the settings section.

Redesigned the DB to allow avatars. Each avatar image has a size and
an URL. There can be multiple avatars per profile, just different sizes.

Added accessors in Profile for avatar. Show the avatar in lots of
places, where it makes sense. Constants for avatar sizes in common.php.

darcs-hash:20080515162844-84dde-fe0630366e247c02ca8ca9d1cc6b963cfce57a26.gz
2008-05-15 12:28:44 -04:00
Evan Prodromou
b6cfd2dffe license block for source code
Added GNU Affero GPL license block to source code.

Added name "LACONICA". I think it should work fine.

darcs-hash:20080514192648-84dde-a430dc438a4e3741c62ccf30ee7f85ecc968b159.gz
2008-05-14 15:26:48 -04:00
Evan Prodromou
0036795582 deny access to include files
darcs-hash:20080514190009-84dde-30f0f1b5955d71cd85563e12078ab02bf8645524.gz
2008-05-14 15:00:09 -04:00
Evan Prodromou
0fa97d6e2e add data objects
darcs-hash:20080507171542-84dde-232baccc10f015e8c0e80edf0ceea4aa5c85b4b7.gz
2008-05-07 13:15:42 -04:00