* @since 1.25
*/
protected function loadFromCache() {
- global $wgMemc;
-
if ( $this->mId == 0 ) {
$this->loadDefaults();
return false;
}
+ $cache = ObjectCache::getMainWANInstance();
$key = wfMemcKey( 'user', 'id', $this->mId );
- $data = $wgMemc->get( $key );
+ $data = $cache->get( $key );
if ( !is_array( $data ) || $data['mVersion'] < self::VERSION ) {
// Object is expired
return false;
* This method should not be called outside the User class
*/
public function saveToCache() {
- global $wgMemc;
-
$this->load();
$this->loadGroups();
$this->loadOptions();
return;
}
+ $cache = ObjectCache::getMainWANInstance();
+
// The cache needs good consistency due to its high TTL, so the user
// should have been loaded from the master to avoid lag amplification.
if ( !( $this->queryFlagsUsed & self::READ_LATEST ) ) {
$data['mVersion'] = self::VERSION;
$key = wfMemcKey( 'user', 'id', $this->mId );
- $wgMemc->set( $key, $data );
+ $cache->set( $key, $data );
}
/** @name newFrom*() static factory methods */
* page. Ignored if null or !$val.
*/
public function setNewtalk( $val, $curRev = null ) {
- global $wgMemc;
-
if ( wfReadOnly() ) {
return;
}
$changed = $this->deleteNewtalk( $field, $id );
}
- if ( $this->isAnon() ) {
- // Anons have a separate memcached space, since
- // user records aren't kept for them.
- $key = wfMemcKey( 'newtalk', 'ip', $id );
- $wgMemc->set( $key, $val ? 1 : 0, 1800 );
- }
if ( $changed ) {
$this->invalidateCache();
}
* Called implicitly from invalidateCache() and saveSettings().
*/
public function clearSharedCache() {
- global $wgMemc;
-
$this->load();
if ( $this->mId ) {
- $wgMemc->delete( wfMemcKey( 'user', 'id', $this->mId ) );
+ $cache = ObjectCache::getMainWANInstance();
+
+ $cache->delete( wfMemcKey( 'user', 'id', $this->mId ) );
}
}
* @since 1.25
*/
public function touch() {
- global $wgMemc;
-
$this->load();
if ( $this->mId ) {
+ $this->mQuickTouched = $this->newTouchedTimestamp();
+
+ $cache = ObjectCache::getMainWANInstance();
$key = wfMemcKey( 'user-quicktouched', 'id', $this->mId );
- $timestamp = $this->newTouchedTimestamp();
- $wgMemc->set( $key, $timestamp );
- $this->mQuickTouched = $timestamp;
+ $cache->touchCheckKey( $key );
}
}
* @return string TS_MW Timestamp
*/
public function getTouched() {
- global $wgMemc;
-
$this->load();
if ( $this->mId ) {
if ( $this->mQuickTouched === null ) {
+ $cache = ObjectCache::getMainWANInstance();
$key = wfMemcKey( 'user-quicktouched', 'id', $this->mId );
- $timestamp = $wgMemc->get( $key );
+
+ $timestamp = $cache->getCheckKeyTime( $key );
if ( $timestamp ) {
- $this->mQuickTouched = $timestamp;
+ $this->mQuickTouched = wfTimestamp( TS_MW, $timestamp );
} else {
# Set the timestamp to get HTTP 304 cache hits
$this->touch();
$force = 'force';
}
- $this->getWatchedItem( $title )->resetNotificationTimestamp( $force, $oldid );
+ $this->getWatchedItem( $title )->resetNotificationTimestamp(
+ $force, $oldid, WatchedItem::DEFERRED
+ );
}
/**