We are no longer offering accounts on this server. Consider https://gitlab.freedesktop.org/ as a place to host projects.

Commit a64330b7 authored by Evan Prodromou's avatar Evan Prodromou

blow subscriptions cache when the user deletes a notice

darcs-hash:20080920175339-84dde-e46d0e7b86e0752e8331cdfba26257b3ff9e601c.gz
parent d53a4123
......@@ -84,6 +84,9 @@ class DeletenoticeAction extends DeleteAction {
$replies->get('notice_id', $notice_id);
common_dequeue_notice($notice);
if (common_config('memcached', 'enabled')) {
$notice->blowSubsCache();
}
$replies->delete();
$notice->delete();
} else {
......
......@@ -116,23 +116,27 @@ class Notice extends DB_DataObject
# XXX: someone clever could prepend instead of clearing the cache
if (common_config('memcached', 'enabled')) {
$cache = new Memcache();
if ($cache->connect(common_config('memcached', 'server'), common_config('memcached', 'port'))) {
$user = new User();
$user->query('SELECT id ' .
'FROM user JOIN subscription ON user.id = subscription.subscriber ' .
'WHERE subscription.subscribed = ' . $notice->profile_id);
while ($user->fetch()) {
$cache->delete(common_cache_key('user:notices_with_friends:' . $user->id));
}
$user->free();
unset($user);
}
$notice->blowSubsCache();
}
return $notice;
}
function blowSubsCache() {
$cache = new Memcache();
if ($cache->connect(common_config('memcached', 'server'), common_config('memcached', 'port'))) {
$user = new User();
$user->query('SELECT id ' .
'FROM user JOIN subscription ON user.id = subscription.subscriber ' .
'WHERE subscription.subscribed = ' . $this->profile_id);
while ($user->fetch()) {
$cache->delete(common_cache_key('user:notices_with_friends:' . $user->id));
}
$user->free();
unset($user);
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment