/** * @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); }