/** * @brief Generates row data for user if ajax call was sent from Special:LookupUser * * @param array $activityData data retrieved from LookupContribsCore::checkUserActivity() * * @return array * * @author Andrzej 'nAndy' Łukaszewski */ public static function prepareLookupUserData($activityData, $username) { global $wgLang, $wgContLang; $rows = array(); foreach ($activityData as $row) { $rows[] = array($row['id'], $row['title'], $row['url'], $wgLang->timeanddate(wfTimestamp(TS_MW, $row['last_edit']), true), $wgContLang->formatNum($row['editcount']), LookupUserPage::getUserData($username, $row['id'], $row['url']), LookupUserPage::getUserData($username, $row['id'], $row['url'], true)); } return $rows; }
/** * @brief: Ajax call loads data for two new columns: user rights and blocked * * @author Andrzej 'nAndy' Łukaszewski */ public function requestApiAboutUser() { wfProfileIn(__METHOD__); global $wgRequest, $wgMemc; $userName = $wgRequest->getVal('username'); $wikiUrl = $wgRequest->getVal('url'); $wikiId = $wgRequest->getVal('id'); $apiUrl = $wikiUrl . 'api.php?action=query&list=users&ususers=' . urlencode($userName) . '&usprop=blockinfo|groups|editcount&format=php'; $cachedData = $wgMemc->get(LookupUserPage::getUserLookupMemcKey($userName, $wikiId)); if (!empty($cachedData)) { $result = array('success' => true, 'data' => $cachedData); } else { $result = Http::get($apiUrl); if ($result !== false) { $result = @unserialize($result); if (isset($result['query']['users'][0])) { $userData = $result['query']['users'][0]; if (!isset($userData['groups'])) { $userData['groups'] = false; } else { $userData['groups'] = LookupUserPage::selectGroups($userData['groups']); } if (true === LookupUserPage::isUserFounder($userName, $wikiId)) { $userData['groups'][] = wfMsg('lookupuser-founder'); } if (!isset($userData['blockedby'])) { $userData['blocked'] = false; } else { $userData['blocked'] = true; } $result = array('success' => true, 'data' => $userData); $wgMemc->set(LookupUserPage::getUserLookupMemcKey($userName, $wikiId), $userData, 3600); //1h } else { $result = array('success' => false); } } else { $result = array('success' => false); } } wfProfileOut(__METHOD__); return json_encode($result); }