Commit Graph

155 Commits

Author SHA1 Message Date
Evan Prodromou
02a3f24b92 single function for important streams, with memcached support
I moved the 4 streams for a user (with friends, faves, replies,
personal) into functions on the User object. Added a helper function
in Notice for making notice streams. Also, will fetch notice streams
out of the memcached server, if possible. Made the API, RSS, and HTML
output all use the same streams (hopefully cached).

Added some code to Notice to blow the cache when a notice is posted.
Also, added code to favor and disfavor actions to blow the faves
cache, too.

darcs-hash:20080928120119-5ed1f-ead542348bcd3cf315be6f42934353154402eb16.gz
2008-09-28 08:01:19 -04:00
Evan Prodromou
a8624b2b72 slightly better check on $orig in update()
darcs-hash:20080927123507-5ed1f-57bc3843352007ae47689a94483d315984276b45.gz
2008-09-27 08:35:07 -04:00
Evan Prodromou
82084ab74c move memcache connections to util.php
darcs-hash:20080926200102-5ed1f-debbc18981424d7724277ac82e5fbfd5e797090e.gz
2008-09-26 16:01:02 -04:00
Evan Prodromou
15c0fb7abd handle multiple memcached servers
darcs-hash:20080926195501-5ed1f-b811fac3320a0b6d8002771caa9463ba9a0889a1.gz
2008-09-26 15:55:01 -04:00
Evan Prodromou
4af31ca98a wasn't returning results of update
darcs-hash:20080926165310-5ed1f-e6d17801c4e9f58cbbbfa774e79583221fdca01f.gz
2008-09-26 12:53:10 -04:00
Evan Prodromou
125953be31 add some more info on notice update
darcs-hash:20080926165201-5ed1f-8efd0369f1f367dacca450ac3bffd755ea841f6f.gz
2008-09-26 12:52:01 -04:00
Evan Prodromou
f951b91693 log a db error for inserting the notice
darcs-hash:20080926165029-5ed1f-60059ffeac9a39326fc6286faf4ac13c35127f25.gz
2008-09-26 12:50:29 -04:00
Evan Prodromou
85c0d71e1f another false-for-error
darcs-hash:20080926164532-5ed1f-1ed3922f205dea0805c7a77618fdf8c9e1a4de02.gz
2008-09-26 12:45:32 -04:00
Evan Prodromou
92e1c41f63 Memcache returns false on cache miss
darcs-hash:20080926164413-5ed1f-d0bbbab5215e43d182e8807fc9fec6cc86dae1ae.gz
2008-09-26 12:44:13 -04:00
Evan Prodromou
98add9803b don't record null key values
darcs-hash:20080926164021-5ed1f-833db670e260c68fc02b0a2a60a2829f247742a1.gz
2008-09-26 12:40:21 -04:00
Evan Prodromou
f01f006615 hack to make keys work
darcs-hash:20080926163555-5ed1f-b2c7f8b9fde0af801e33dc92e4177d1ed4f80159.gz
2008-09-26 12:35:55 -04:00
Evan Prodromou
d3f8cd39a1 handle one-argument calls to staticGet
darcs-hash:20080926163357-5ed1f-49bd6d85d34d0e6ac3514c06d99e5b5b9a78b0fc.gz
2008-09-26 12:33:57 -04:00
Evan Prodromou
88b19d8ab5 better deletes and key names
darcs-hash:20080926163030-5ed1f-c2d375d8a8c2097456ffb3e09e55daacae2cc903.gz
2008-09-26 12:30:30 -04:00
Evan Prodromou
156207d58d try to make some static/non-static stuff work right
darcs-hash:20080926162347-5ed1f-ddb17266f5a60ee85db5fdfb9c8bd12311da3c73.gz
2008-09-26 12:23:47 -04:00
Evan Prodromou
ded5e3dd6c better handling of staticGet
darcs-hash:20080926161946-5ed1f-496b47c72a77fb26610af465af9d9e26c488d315.gz
2008-09-26 12:19:46 -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
011ea46022 rename cached object file
darcs-hash:20080926161652-5ed1f-45aee985c6755642d346b864926b2346900c4055.gz
2008-09-26 12:16:52 -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
0ee3d6ccb0 user -> this
darcs-hash:20080923181648-5ed1f-a30ef5c24b8b9e49e5c8ba8e023574bb7d9b1ef3.gz
2008-09-23 14:16:48 -04:00
Evan Prodromou
858e55f5b4 change how Foreign_link fetches, and fix mixup between user-ids and foreign-ids in twittersettings
darcs-hash:20080923054413-5ed1f-a317e07925101215e87d2db0c574d20c1cfac665.gz
2008-09-23 01:44:13 -04:00
Evan Prodromou
e24425d44e correct a couple of bugs
darcs-hash:20080922190937-5ed1f-9439cd9cff178323ac1445f33e2520260b4b267e.gz
2008-09-22 15:09:37 -04:00
Evan Prodromou
a4cca01451 save created date
darcs-hash:20080917191652-5ed1f-f066e906146146cfe0ffb80055ea15d71f491f3c.gz
2008-09-17 15:16:52 -04:00
Evan Prodromou
ea8fce0052 fix missing variable in save-new-message
darcs-hash:20080917190306-5ed1f-f2d339ce6d5c7c32940046012a0d4702be6eade2.gz
2008-09-17 15:03:06 -04:00
Evan Prodromou
e42de1ccc1 fancy urls for show message, new message
darcs-hash:20080917180244-5ed1f-06e2ac2d8f094eacd12b316794b0599b57d76596.gz
2008-09-17 14:02:44 -04:00
Evan Prodromou
130ba28886 newmessage and showmessage
darcs-hash:20080917174741-5ed1f-c090055487bab0df52d25ad6550d3850ef5f7661.gz
2008-09-17 13:47:41 -04:00
Evan Prodromou
809c4a9d31 rationalize with ciarang's pgsql changes
darcs-hash:20080916214134-84dde-ba11f44676d876cf0f29773c60fa95676ad07ebd.gz
2008-09-16 17:41:34 -04:00
CiaranG
ab68c61a12 PostgreSQL: Quote table name in manually formed query - fixes profile settings update
darcs-hash:20080915070256-f6e2c-344d1ca1ca158b9ab5f558804ad129c1ef9d6a7a.gz
2008-09-15 03:02:56 -04:00
CiaranG
26634ef0a0 Initial support for PostgreSQL
darcs-hash:20080909072224-f6e2c-881bd2e7fb032f336fecae9ca5ce527dd821d3dc.gz
2008-09-09 03:22:24 -04:00
Zach Copley
6eb84f0f03 Disallow 'api' nickname
darcs-hash:20080909000650-7b5ce-c7eb990db81620b83201c0e361af9dfcdd9c2b89.gz
2008-09-08 20:06:50 -04:00
Zach Copley
412eae10fe Twitter integration - Notices now broadcast (directly) to Twitter from linked accts.
darcs-hash:20080828192509-7b5ce-8387c67500c082eb5a0107c0f78d4cf5620825af.gz
2008-08-28 15:25:09 -04:00
Zach Copley
bf14709fe2 Twitter integration - support for new foreign_link table and prefs now save/update
darcs-hash:20080828072205-7b5ce-16510357343f1d9a3acc696f39a28a723005f3a4.gz
2008-08-28 03:22:05 -04:00
Zach Copley
3cf6cef9b9 Twitter integration - Foreign_user::getForeignUser() to retrieve
Foreign_user by multi-part key: user_id + service

darcs-hash:20080827005444-7b5ce-2b53a2c1a917539248b68f21f94e0f9f5fe810f2.gz
2008-08-26 20:54:44 -04:00
zach
661202be3e Twitter-integration - Twitter settings tab now saves Twitter credentials
darcs-hash:20080826225615-462f3-8d881eda7be43623e10b83e8d1e157f4096734cd.gz
2008-08-26 18:56:15 -04:00
Evan Prodromou
7416e50daa inbox and outbox for direct messages
Added an inbox and outbox for direct messages.

Factored common code to mailbox.php. Factored common code with
stream.php to personal.php.

darcs-hash:20080916195346-84dde-b5c846f713a970c41fd1b0671cb333e91f3cb920.gz
2008-09-16 15:53:46 -04:00
Evan Prodromou
d57b39e8a5 Database and classes for direct messages
darcs-hash:20080916185126-84dde-2983718fc2ab11874c839489290b8a827985274d.gz
2008-09-16 14:51:26 -04:00
Evan Prodromou
4476a4286f rationalize with repository version
darcs-hash:20080916174400-84dde-63781c5cd6a7c9a3dbc765dfa15084e3372effd5.gz
2008-09-16 13:44:00 -04:00
Evan Prodromou
a8a3667774 initial non-Ajax version of favorites
darcs-hash:20080908181624-84dde-8200e1d91eb5f560ef0f296c9e1c56f93ef1b0c5.gz
2008-09-08 14:16:24 -04:00
Evan Prodromou
ead192fa41 add a foreign_link table with prefs for the link
darcs-hash:20080827032423-84dde-90a4d5931c2292c9ec5febd0c90ed18f6ab93e90.gz
2008-08-26 23:24:23 -04:00
Evan Prodromou
79f4469db9 Invite -> Invitation
darcs-hash:20080827010515-84dde-f4dd776209a0aa4f6a7e9d6ac1de46d83ff54650.gz
2008-08-26 21:05:15 -04:00
Evan Prodromou
e248066b74 updates for invitations
Add the code to registration to handle invitation codes.

Some edge cases on invitations: is the user already subbed to this
person? Tell them. Is the person already on the system? Sub the user
to them, then, and tell the user.

Add some code to User to auto-sub invitees whenever the email address
changes. Call it from a new registration with an invite code, and also
from confirmaddress.

Some whitespace cleanup in the files touched.

darcs-hash:20080827001927-84dde-b50e5d921ca3f2fb894821730ff93cac09d2ba66.gz
2008-08-26 20:19:27 -04:00
Evan Prodromou
3d48ae94e6 added a created timestamp to invitations
darcs-hash:20080826023116-84dde-7d80c624b2dcfa637f58509c1d5ff7eca371512c.gz
2008-08-25 22:31:16 -04:00
Evan Prodromou
ba0dd0a4c3 data classes for invitations
darcs-hash:20080823191015-84dde-05263d6e9a2535c726b98aacc5f3269f66fe22bd.gz
2008-08-23 15:10:15 -04:00
Evan Prodromou
a64330b77c blow subscriptions cache when the user deletes a notice
darcs-hash:20080920175339-84dde-e46d0e7b86e0752e8331cdfba26257b3ff9e601c.gz
2008-09-20 13:53:39 -04:00
Evan Prodromou
d53a4123f3 can actually take all the data in the window
darcs-hash:20080920174700-84dde-a00751e0eafd9adc4580924bb41c11b0649b7fe5.gz
2008-09-20 13:47:00 -04:00
Evan Prodromou
1a81057985 fixup SQL code
darcs-hash:20080915073412-84dde-3c9cfb1d2d4933dbaff002b30fffb9e7d3d5e1d7.gz
2008-09-15 03:34:12 -04:00
Evan Prodromou
a6974a6f84 fix cache deletion code
darcs-hash:20080915073215-84dde-34bdd1a40ce310bca5bbb6f11ed4df79c7915cb2.gz
2008-09-15 03:32:15 -04:00
Evan Prodromou
7334add156 compress window-getting to one function
darcs-hash:20080915071835-84dde-173e6afde44c3348c3314c638e2a67dfb333c011.gz
2008-09-15 03:18:35 -04:00
Evan Prodromou
1806469ba2 $INSTALLDIR -> INSTALLDIR
darcs-hash:20080915070413-84dde-5e942675dec105b297889a58ea770fb4b337307d.gz
2008-09-15 03:04:13 -04:00
Evan Prodromou
f246b8f2d7 cache noticesWithFriends in memcached
noticesWithFriends is turning out to be one of our most expensive
queries. The join is costly, and this method is hit over and over and
over by desktop clients and other API users.

So, I've added a first pass at caching the results. I store a "window"
of notices -- equal to the first 3 pages of notices, plus one for
pagination -- in the memcached cache. If with-friends notices are
requests, I fetch the whole window out of the cache and grab the slice
requested. If the requested notices are outside the window, we just do
the query. If there's nothing in the cache, we request the window and
store it, then return a slice.

I had to add a NoticeWrapper class that works like DB_DataObject
(well, just the fetch() part...) but just holds an array of notices
instead of a DB cursor.

Finally, saving a new notice blows away the caches for subscribed users.

darcs-hash:20080915065616-84dde-1b1e814c2294498a10b763b779cbb62c3f96aa84.gz
2008-09-15 02:56:16 -04:00