/** * Get list of wiki that have classified pages */ public function getWikiList() { $api = new EntityAPIClient(); $api->setLogLevel(5); $response = $api->get($api->getIndexedWikisEndpoint()); $list = array(); if (is_array($response['response'])) { $wikis = WikiFactory::getWikisByID($response['response']); foreach ($wikis as $wiki) { $list[] = array('domain' => $wiki->city_url, 'wikiId' => $wiki->city_id); } } return $list; }
/** * @brief Gets data for AJAX request for data to user contribution table * * @param boolean $addEditCount added in 20.07.2011 during SSW is a flag; will add additional array element with user's edits on a wiki plus will sort whole array by this value * * @author Bartek Lapinski <*****@*****.**> * @author Piotr Molski <*****@*****.**> * @author Andrzej 'nAndy' Łukaszewski <nandy (at) wikia-inc.com> */ public function checkUserActivity($addEditCount = false, $order = null) { global $wgMemc, $wgContLang, $wgStatsDB, $wgStatsDBEnabled; wfProfileIn(__METHOD__); $userActivity = array('data' => array(), 'cnt' => 0); if ($addEditCount) { $sMemKey = __METHOD__ . ":{$this->mUserId}:dataWithEdits"; } else { $sMemKey = __METHOD__ . ":{$this->mUserId}:data"; } $data = $wgMemc->get($sMemKey); if ((!is_array($data) || LOOKUPCONTRIBS_NO_CACHE) && !empty($wgStatsDBEnabled)) { $dbr = wfGetDB(DB_SLAVE, "stats", $wgStatsDB); if (!is_null($dbr)) { //bugId:6196 $excludedWikis = $this->getExclusionList(); $where = array('user_id' => $this->mUserId, 'event_type' => array(1, 2)); if (!empty($excludedWikis) && is_array($excludedWikis)) { $where[] = 'wiki_id NOT IN (' . $dbr->makeList($excludedWikis) . ')'; } $options = array('GROUP BY' => 'wiki_id'); if ($addEditCount === true) { $wikisIds = array(); $wikiEdits = $this->getEditCount($wikisIds); $where['wiki_id'] = $wikisIds; } /* rows */ $res = $dbr->select(array('events'), array('wiki_id', 'max(unix_timestamp(rev_timestamp)) as last_edit'), $where, __METHOD__, $options); if (empty($wikisIds)) { $wikisIds = array(); while ($row = $dbr->fetchObject($res)) { $wikisIds[] = $row->wiki_id; } $dbr->dataSeek($res, 0); } $wData = WikiFactory::getWikisByID($wikisIds); $i = 0; while ($row = $dbr->fetchObject($res)) { if (!isset($wData[$row->wiki_id])) { continue; } $aItem = array('id' => $row->wiki_id, 'url' => $wData[$row->wiki_id]->city_url, 'dbname' => $wData[$row->wiki_id]->city_dbname, 'title' => $wData[$row->wiki_id]->city_title, 'active' => $wData[$row->wiki_id]->city_public, 'last_edit' => $row->last_edit, 'edit_count' => 0); if (isset($wikiEdits[$row->wiki_id]->edits)) { $aItem['editcount'] = $wikiEdits[$row->wiki_id]->edits; } $userActivity['data'][] = $aItem; } $dbr->freeResult($res); if (!LOOKUPCONTRIBS_NO_CACHE) { $wgMemc->set($sMemKey, $userActivity, 60 * 10); } } } else { $userActivity = $data; } wfProfileOut(__METHOD__); return $this->orderData($userActivity, $order, $addEditCount); }