public function testDiffIsUnderReview() { $oldid = 10910; $newid = 11910; FRUserActivity::clearAllReviewingDiff($oldid, $newid); // clear $this->assertEquals(false, FRUserActivity::diffIsUnderReview($oldid, $newid), "Not reviewing diff"); FRUserActivity::setUserReviewingDiff($this->user, $oldid, $newid); $this->assertEquals(true, FRUserActivity::diffIsUnderReview($oldid, $newid), "Now reviewing diff"); }
private function run($resultPageSet = null) { global $wgUser, $wgMemc; $params = $this->extractRequestParams(); // Construct SQL Query $this->addTables(array('page', 'flaggedpages', 'revision')); $this->addWhereFld('page_namespace', $params['namespace']); $useIndex = array('flaggedpages' => 'fp_pending_since'); if ($params['filterredir'] == 'redirects') { $this->addWhereFld('page_is_redirect', 1); } if ($params['filterredir'] == 'nonredirects') { $this->addWhereFld('page_is_redirect', 0); } if ($params['maxsize'] !== null) { # Get absolute difference for comparison. ABS(x-y) # is broken due to mysql unsigned int design. $this->addWhere('GREATEST(page_len,rev_len)-LEAST(page_len,rev_len) <= ' . intval($params['maxsize'])); } if ($params['filterwatched'] == 'watched') { if (!($uid = $wgUser->getId())) { $this->dieUsage('You must be logged-in to have a watchlist', 'notloggedin'); } $this->addTables('watchlist'); $this->addWhereFld('wl_user', $uid); $this->addWhere('page_namespace = wl_namespace'); $this->addWhere('page_title = wl_title'); } if ($params['category'] != '') { $this->addTables('categorylinks'); $this->addWhere('cl_from = fp_page_id'); $this->addWhereFld('cl_to', $params['category']); $useIndex['categorylinks'] = 'cl_from'; } $this->addWhereRange('fp_pending_since', $params['dir'], $params['start'], $params['end']); $this->addWhere('page_id=fp_page_id'); $this->addWhere('rev_id=fp_stable'); if (!isset($params['start']) && !isset($params['end'])) { $this->addWhere('fp_pending_since IS NOT NULL'); } $this->addOption('USE INDEX', $useIndex); if (is_null($resultPageSet)) { $this->addFields(array('page_id', 'page_namespace', 'page_title', 'page_latest', 'page_len', 'rev_len', 'fp_stable', 'fp_pending_since', 'fp_quality')); } else { $this->addFields($resultPageSet->getPageTableFields()); $this->addFields('fp_pending_since'); } $limit = $params['limit']; $this->addOption('LIMIT', $limit + 1); $res = $this->select(__METHOD__); $data = array(); $count = 0; foreach ($res as $row) { if (++$count > $limit) { // We've reached the one extra which shows that there are // additional pages to be had. Stop here... $this->setContinueEnumParameter('start', wfTimestamp(TS_ISO_8601, $row->fp_pending_since)); break; } if (is_null($resultPageSet)) { $title = Title::newFromRow($row); $underReview = FRUserActivity::diffIsUnderReview($row->fp_stable, $row->page_latest); $data[] = array('pageid' => intval($row->page_id), 'ns' => intval($row->page_namespace), 'title' => $title->getPrefixedText(), 'revid' => intval($row->page_latest), 'stable_revid' => intval($row->fp_stable), 'pending_since' => wfTimestamp(TS_ISO_8601, $row->fp_pending_since), 'flagged_level' => intval($row->fp_quality), 'flagged_level_text' => FlaggedRevs::getQualityLevelText($row->fp_quality), 'diff_size' => (int) $row->page_len - (int) $row->rev_len, 'under_review' => $underReview); } else { $resultPageSet->processDbRow($row); } } if (is_null($resultPageSet)) { $result = $this->getResult(); $result->setIndexedTagName($data, 'p'); $result->addValue('query', $this->getModuleName(), $data); } }