function testPageStatsService() { global $wgTitle, $wgMemc; $wgTitle = Title::newMainPage(); $articleId = $wgTitle->getArticleId(); $article = Article::newFromId($articleId); $key = wfMemcKey('services', 'pageheader', 'current-revision', $articleId); // macbre: perform this test only for existing pages if (!$wgTitle->exists()) { $this->markTestSkipped('Main page cannot be found'); return; } $service = new PageStatsService($articleId); $this->assertType('array', $service->getMostLinkedCategories()); $this->assertType('int', $service->getCommentsCount()); $this->assertType('int', $service->getLikesCount()); $this->assertType('array', $service->getCurrentRevision()); $this->assertType('array', $service->getPreviousEdits()); $this->assertType('string', $service->getFirstRevisionTimestamp()); // comments counter regenerating $comments = $service->getCommentsCount(); $service->regenerateCommentsCount(); $this->assertEquals($comments, $service->getCommentsCount()); // remove cached stats when article is edited $user = $flags = $status = false; PageStatsService::onArticleSaveComplete($article, $user, false, false, false, false, false, $flags, false, $status, false); $data = $wgMemc->get($key); $this->assertTrue(empty($data)); $service->getCurrentRevision(); $data = $wgMemc->get($key); $this->assertFalse(empty($data)); // remove cached stats when article (comment) is deleted PageStatsService::onArticleDeleteComplete($article, $user, false, $articleId); $data = $wgMemc->get($key); $this->assertTrue(empty($data)); $service->getCurrentRevision(); // regenerate data $service->regenerateData(); $data = $wgMemc->get($key); $this->assertTrue(empty($data)); }
/** * Get recent revisions of current article and format them */ protected function getRecentRevisions() { global $wgTitle, $wgMemc; // use service to get data $service = new PageStatsService($wgTitle->getArticleId()); // get info about current revision and list of authors of recent five edits // This key is refreshed by the onArticleSaveComplete() hook $mKey = wfMemcKey('mOasisRecentRevisions2', $wgTitle->getArticleId()); $revisions = $wgMemc->get($mKey); if (empty($revisions)) { $revisions = $service->getCurrentRevision(); // format timestamps, render avatars and user links if (is_array($revisions)) { foreach($revisions as &$revision) { if (isset($revision['user'])) { $revision['avatarUrl'] = AvatarService::getAvatarUrl($revision['user']); $revision['link'] = AvatarService::renderLink($revision['user']); } } } $wgMemc->set($mKey, $revisions); } return $revisions; }