Exemplo n.º 1
0
 /**
  * @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);
 }