X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=classes%2FNotice.php;h=c60237ffb0b429647a60834b80c48f98d7d65989;hb=92e1c41f636e5c22bc6a452872aae3b02a2f8f1c;hp=06750b43638c156e9966b3e34a1fb49ddcbf98d8;hpb=51caab6e5e9f27765cb94e5b5cf0cf51f97850cc;p=quix0rs-gnu-social.git diff --git a/classes/Notice.php b/classes/Notice.php index 06750b4363..c60237ffb0 100644 --- a/classes/Notice.php +++ b/classes/Notice.php @@ -22,9 +22,9 @@ if (!defined('LACONICA')) { exit(1); } /** * Table Definition for notice */ -require_once 'DB/DataObject.php'; +require_once INSTALLDIR.'/classes/Memcached_DataObject.php'; -class Notice extends DB_DataObject +class Notice extends Memcached_DataObject { ###START_AUTOCODE /* the code below is auto generated do not remove the above tag */ @@ -43,7 +43,7 @@ class Notice extends DB_DataObject public $source; // varchar(32) /* Static get */ - function staticGet($k,$v=NULL) { return DB_DataObject::staticGet('Notice',$k,$v); } + function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Notice',$k,$v); } /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE @@ -88,9 +88,8 @@ class Notice extends DB_DataObject $notice->created = common_sql_now(); $notice->content = $content; $notice->rendered = common_render_content($notice->content, $notice); - if ($source) { - $notice->source = $source; - } + $notice->source = $source; + $notice->uri = $uri; $id = $notice->insert(); @@ -98,22 +97,46 @@ class Notice extends DB_DataObject return _('Problem saving notice.'); } - $orig = clone($notice); - if ($uri) { - $notice->uri = $uri; - } else { + # Update the URI after the notice is in the database + if (!$uri) { + $orig = clone($notice); $notice->uri = common_notice_uri($notice); - } - if (!$notice->update($orig)) { - return _('Problem saving notice.'); + if (!$notice->update($orig)) { + return _('Problem saving notice.'); + } } # XXX: do we need to change this for remote users? common_save_replies($notice); $notice->saveTags(); + + # Clear the cache for subscribed users, so they'll update at next request + # XXX: someone clever could prepend instead of clearing the cache + + if (common_config('memcached', 'enabled')) { + $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); + } + } }