function wfUsersFollowingSiteResponse($user, $site_name) { global $wgUser; // if ( $wgUser->isLoggedIn() ) { $sites = UserSiteFollow::getUserFollowSite($wgUser, $site_name); $ret = array('success' => true, 'result' => $sites); $out = json_encode($ret); return $out; // }else{ // $out = ResponseGenerator::getJson(ResponseGenerator::ERROR_NOT_LOGGED_IN); // return $out; // } }
/** * Show the special page * * @param $params Mixed: parameter(s) passed to the page or null */ public function execute($params) { global $wgUser, $wgSitename, $wgHuijiPrefix, $wgUserLevels; $lang = $this->getLanguage(); $out = $this->getOutput(); $request = $this->getRequest(); $user = $this->getUser(); // Set the page title, robot policies, etc. $this->setHeaders(); $output = '<i>' . $this->msg('followsranknote')->plain() . '</i>'; // Add CSS // $out->addModuleStyles( 'ext.socialprofile.useruserfollows.css' ); $out->addModuleStyles('ext.socialprofile.userstats.css'); // Add JS // $out->addModuleScripts( 'ext.socialprofile.useruserfollows.js'); // $output = ''; /** * Get query string variables */ $user_name = $request->getVal('user'); $rel_type = $request->getInt('rel_type'); $page = $request->getInt('page'); /** * Set up config for page / default values */ if (!$page || !is_numeric($page)) { $page = 1; } if (!$rel_type || !is_numeric($rel_type)) { $rel_type = 2; } $per_page = 50; $per_row = 2; /** * If no user is set in the URL, we assume its the current user */ if (!$user_name) { $user_name = $user->getName(); } $user_id = User::idFromName($user_name); $target_user = User::newFromId($user_id); $userPage = Title::makeTitle(NS_USER, $user_name); $sitefollows = UserSiteFollow::getUserFollowSite($target_user, $wgHuijiPrefix); // foreach ( $sitefollows as $follow ) { // $username = $follow['user']; // $userPageURL = $follow['userUrl']; // $avatar_img = $follow['url']; // $user_level = $follow['level']; // $username_length = strlen( $follow['user'] ); // $username_space = stripos( $follow['user'], ' ' ); // if ( ( $username_space == false || $username_space >= "30" ) && $username_length > 30 ) { // $user_name_display = substr( $follow['user'], 0, 30 ) . ' ' . substr( $follow['user'], 30, 50 ); // } else { // $user_name_display = $follow['user']; // } // $output .= "<div class=\"relationship-item\"> // <a href=\"{$userPageURL}\">{$avatar_img}</a> // <div class=\"relationship-info\"> // <div class=\"relationship-name\"> // <a href=\"{$userPageURL}\">{$user_name_display}</a><i>{$user_level}</i> // </div> // <div class=\"relationship-actions\"><ul>"; // $output .= '<li>编辑数:'.$follow['count'].'</li>'; // $output .= $followButton; // $target = SpecialPage::getTitleFor( 'GiveGift' ); // $query = array('user' => $follow['user']); // $output .= '<li>'.Linker::LinkKnown($target, '<i class="fa fa-gift"></i>礼物</a>', array(), $query).'</li> '; // $output .= '</ul></div> // <div class="cleared"></div> // </div>'; // $output .= '</div>'; // $output .= '<div class="cleared"></div>'; // } $output .= '<div class="top-users">'; $x = 1; foreach ($sitefollows as $user) { $user_title = Title::makeTitle(NS_USER, $user['user']); $commentIcon = $user['url']; $output .= "<div class=\"top-fan-row\">\r\n\t\t\t\t<span class=\"top-fan-num\">{$x}.</span>\r\n\t\t\t\t<span class=\"top-fan\">\r\n\t\t\t\t\t{$commentIcon} <a href='" . $user['userUrl'] . "'>" . $user['user'] . '</a><i>' . $user['level'] . ' </i></span>'; $output .= '<span class="top-fan-points"><b>' . number_format($user['count']) . '</b> ' . $this->msg('top-fans-times')->plain() . '</span>'; $output .= '<div class="cleared"></div>'; $output .= '</div>'; $x++; } $output .= '</div><div class="cleared"></div>'; /** * Build next/prev nav */ $total = intval(str_replace(',', '', $total)); $numofpages = $total / $per_page; $pageLink = $this->getPageTitle(); if ($numofpages > 1) { $output .= '<div class="page-nav">'; if ($page > 1) { $output .= Linker::link($pageLink, $this->msg('ur-previous')->plain(), array(), array('user' => $user_name, 'rel_type' => $rel_type, 'page' => $page - 1)) . $this->msg('word-separator')->plain(); } if ($total % $per_page != 0) { $numofpages++; } if ($numofpages >= 9 && $page < $total) { $numofpages = 9 + $page; } if ($numofpages >= $total / $per_page) { $numofpages = $total / $per_page + 1; } for ($i = 1; $i <= $numofpages; $i++) { if ($i == $page) { $output .= $i . ' '; } else { $output .= Linker::link($pageLink, $i, array(), array('user' => $user_name, 'rel_type' => $rel_type, 'page' => $i)) . $this->msg('word-separator')->plain(); } } if ($total - $per_page * $page > 0) { $output .= $this->msg('word-separator')->plain() . Linker::link($pageLink, $this->msg('ur-next')->plain(), array(), array('user' => $user_name, 'rel_type' => $rel_type, 'page' => $page + 1)); } $output .= '</div>'; } $out->addHTML($output); }
/** * Show the special page * * @param $params Mixed: parameter(s) passed to the page or null */ public function execute($params) { global $wgUser, $wgSitename, $wgHuijiPrefix, $wgUserLevels; $lang = $this->getLanguage(); $out = $this->getOutput(); $request = $this->getRequest(); $user = $this->getUser(); // Set the page title, robot policies, etc. $this->setHeaders(); $output = '<i>' . $this->msg('editranknote')->plain() . '</i>'; // Add CSS // $out->addModuleStyles( 'ext.socialprofile.useruserfollows.css' ); $out->addModuleStyles('ext.socialprofile.userstats.css'); // Add JS // $out->addModuleScripts( 'ext.socialprofile.useruserfollows.js'); // $output = ''; /** * Get query string variables */ $user_name = $request->getVal('user'); $rel_type = $request->getInt('rel_type'); $page = $request->getInt('page'); /** * Set up config for page / default values */ if (!$page || !is_numeric($page)) { $page = 1; } if (!$rel_type || !is_numeric($rel_type)) { $rel_type = 2; } $per_page = 20; $per_row = 2; /** * If no user is set in the URL, we assume its the current user */ if (!$user_name) { $user_name = $user->getName(); } $user_id = User::idFromName($user_name); $target_user = User::newFromId($user_id); $userPage = Title::makeTitle(NS_USER, $user_name); $sitefollows = UserSiteFollow::getUserFollowSite($target_user, $wgHuijiPrefix); $total = count($sitefollows); $star_page = $per_page * ($page - 1); $result = array_slice($sitefollows, $star_page, $per_page); if (!$result) { $output .= '<div class="top-users"><h3>此页暂时没有排行</h3>'; } $output .= '<div class="top-users">'; $x = $star_page + 1; foreach ($result as $user) { $user_title = Title::makeTitle(NS_USER, $user['user']); $commentIcon = $user['url']; $output .= "<div class=\"top-fan-row\">\n\t\t\t\t<span class=\"top-fan-num\">{$x}.</span>\n\t\t\t\t<span class=\"top-fan\"><a href='" . $user['userUrl'] . "'>\n\t\t\t\t\t{$commentIcon} </a><a href='" . $user['userUrl'] . "'>" . $user['user'] . '</a><i>' . $user['level'] . ' </i></span>'; $output .= '<span class="top-fan-points"><b>' . number_format($user['count']) . '</b> ' . $this->msg('top-fans-times')->plain() . '</span>'; $output .= '<div class="cleared"></div>'; $output .= '</div>'; $x++; } $output .= '</div><div class="cleared"></div>'; /** * Build next/prev nav */ $total = intval(str_replace(',', '', $total)); $numofpages = $total / $per_page; $pageLink = $this->getPageTitle(); if ($numofpages > 1) { $output .= '<nav class="page-nav pagination">'; if ($page > 1) { $output .= '<li>' . Linker::link($pageLink, '<span aria-hidden="true">«</span>', array(), array('user' => $user_name, 'rel_type' => $rel_type, 'page' => $page - 1)) . '</li>'; } if ($total % $per_page != 0) { $numofpages++; } // if ( $numofpages >= 9 && $page < $total ) { // $numofpages = 9 + $page; // } // if ( $numofpages >= ( $total / $per_page ) ) { // $numofpages = ( $total / $per_page ) + 1; // } for ($i = 1; $i <= $numofpages; $i++) { if ($i == $page) { $output .= '<li class="active"><a href="#">' . $i . ' <span class="sr-only">(current)</span></a></li>'; } else { $output .= '<li>' . Linker::link($pageLink, $i, array(), array('user' => $user_name, 'rel_type' => $rel_type, 'page' => $i)) . '</li>'; } } if ($total - $per_page * $page > 0) { $output .= '<li>' . Linker::link($pageLink, '<span aria-hidden="true">»</span>', array(), array('user' => $user_name, 'rel_type' => $rel_type, 'page' => $page + 1)) . '</li>'; } $output .= '</nav>'; } $out->addHTML($output); }