/** * Regenerate / invalidate service cache for current page */ public function regenerateData() { global $wgMemc; wfProfileIn(__METHOD__); wfDebug(__METHOD__ . ": page #{$this->pageId}\n"); // invalidate cached data from getMostLinkedCategories() $wgMemc->delete($this->getKey('mostlinkedcategories')); // invalidate cached data from getCurrentRevision() $wgMemc->delete($this->getKey('current-revision')); // invalidate cached data from getPreviousEdits() $wgMemc->delete($this->getKey('previous-edits')); // invalidate cached data from getCommentsCount() $title = Title::newFromId($this->pageId, Title::GAID_FOR_UPDATE); if (!empty($title)) { $pageName = $title->getPrefixedText(); wfDebug(__METHOD__ . ": page '{$pageName}' has been touched\n"); // invalidate cache with number of comments / talk page revisions if ($title->isTalkPage()) { if (self::isArticleCommentsEnabled() && ArticleComment::isTitleComment($title)) { // get subject page for this article comment $parts = ArticleComment::explode($title->getText()); $title = Title::newFromText($parts['title'], MWNamespace::getSubject($title->getNamespace())); wfDebug(__METHOD__ . ": article comment added\n"); } else { // get subject page for this talk page $title = $title->getSubjectPage(); } $contentPageName = $title->getPrefixedText(); wfDebug(__METHOD__ . ": talk page / article comment for '{$contentPageName}' has been touched\n"); $contentPageService = new self($title->getArticleId()); $contentPageService->regenerateCommentsCount(); } } wfProfileOut(__METHOD__); return true; }