function ra_top_users($limit = 5, $size) { $users = qa_db_select_with_pending(qa_db_top_users_selectspec(qa_get_start())); $output = '<ul class="top-users-list clearfix">'; $i = 1; foreach ($users as $u) { if (defined('QA_WORDPRESS_INTEGRATE_PATH')) { require_once QA_INCLUDE_DIR . 'qa-app-posts.php'; $u['handle'] = qa_post_userid_to_handle($u['userid']); } $output .= '<li class="top-user">'; $output .= '<div class="avatar pull-left" data-handle="' . $u['handle'] . '" data-id="' . qa_handle_to_userid($u['handle']) . '">'; $output .= ra_get_avatar($u['handle'], $size) . '</div>'; $output .= '<div class="top-user-data">'; $output .= '<a href="' . qa_path_html('user/' . $u['handle']) . '" class="name">' . ra_name($u['handle']) . '</a>'; //$output .= ra_user_badge($u['handle']); $output .= '<dl class="points">' . $u['points'] . ' ' . _ra_lang('Points') . '</dl>'; $output .= '</div>'; $output .= '</li>'; if ($i == $limit) { break; } $i++; } $output .= '</ul>'; echo $output; }
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. More about this license: http://www.question2answer.org/license.php */ if (!defined('QA_VERSION')) { // don't allow this page to be requested directly from browser header('Location: ../'); exit; } require_once QA_INCLUDE_DIR . 'db/users.php'; require_once QA_INCLUDE_DIR . 'db/selects.php'; require_once QA_INCLUDE_DIR . 'app/format.php'; // Get list of all users $start = qa_get_start(); $users = qa_db_select_with_pending(qa_db_top_users_selectspec($start, qa_opt_if_loaded('page_size_users'))); $usercount = qa_opt('cache_userpointscount'); $pagesize = qa_opt('page_size_users'); $users = array_slice($users, 0, $pagesize); $usershtml = qa_userids_handles_html($users); // Prepare content for theme $qa_content = qa_content_prepare(); $qa_content['title'] = qa_lang_html('main/highest_users'); $qa_content['ranking'] = array('items' => array(), 'rows' => ceil($pagesize / qa_opt('columns_users')), 'type' => 'users'); if (count($users)) { foreach ($users as $userid => $user) { if (QA_FINAL_EXTERNAL_USERS) { $avatarhtml = qa_get_external_avatar_html($user['userid'], qa_opt('avatar_users_size'), true); } else { $avatarhtml = qa_get_user_avatar_html($user['flags'], $user['email'], $user['handle'], $user['avatarblobid'], $user['avatarwidth'], $user['avatarheight'], qa_opt('avatar_users_size'), true); }
GNU General Public License for more details. More about this license: http://www.question2answer.org/license.php */ if (!defined('QA_VERSION')) { // don't allow this page to be requested directly from browser header('Location: ../'); exit; } // report that we entered this page qa_report_event('page_enter', qa_get_logged_in_userid(), qa_get_logged_in_handle(), qa_cookie_get(), array('params' => $_SERVER['QUERY_STRING'], 'path' => $_SERVER['SCRIPT_NAME'])); require_once QA_INCLUDE_DIR . 'qa-db-users.php'; require_once QA_INCLUDE_DIR . 'qa-db-selects.php'; require_once QA_INCLUDE_DIR . 'qa-app-format.php'; // Get list of all users $users = qa_db_select_with_pending(qa_db_top_users_selectspec($qa_start)); $usercount = qa_opt('cache_userpointscount'); $pagesize = qa_opt('page_size_users'); $users = array_slice($users, 0, $pagesize); $usershtml = qa_userids_handles_html($users); // Prepare content for theme $qa_content = qa_content_prepare(); $qa_content['title'] = qa_lang_html('main/highest_users'); $qa_content['ranking'] = array('items' => array(), 'rows' => ceil($pagesize / qa_opt('columns_users')), 'type' => 'users'); if (count($users)) { foreach ($users as $userid => $user) { $qa_content['ranking']['items'][] = array('label' => (QA_FINAL_EXTERNAL_USERS ? '' : qa_get_user_avatar_html($user['flags'], $user['email'], $user['handle'], $user['avatarblobid'], $user['avatarwidth'], $user['avatarheight'], qa_opt('avatar_users_size'), true) . ' ') . $usershtml[$user['userid']], 'score' => qa_html(number_format($user['points']))); } } else { $qa_content['title'] = qa_lang_html('main/no_active_users'); }
function ranking($ranking) { $class = @$ranking['type'] == 'users' ? 'qa-top-users' : 'qa-top-tags'; $item_count = min($ranking['rows'], count($ranking['items'])); if (@$ranking['type'] == 'users') { if (count($ranking['items'])) { $this->output('<div class="page-users-list clearfix"><div class="row">'); $columns = qa_opt('columns_users'); $pagesize = qa_opt('page_size_users'); $start = qa_get_start(); $users = qa_db_select_with_pending(qa_db_top_users_selectspec($start, qa_opt_if_loaded('page_size_users'))); $users = array_slice($users, 0, $pagesize); $usershtml = qa_userids_handles_html($users); foreach ($ranking['items'] as $user) { $this->output('<div class="user-box col-sm-' . ceil(12 / $columns) . ' col-xs-12">'); $user_raw = !empty($user['raw']) ? $user['raw'] : $user; $handle = @$user_raw['handle']; $handle_html = @$usershtml[$user_raw['userid']]; if (defined('QA_WORDPRESS_INTEGRATE_PATH')) { $level_html = $user['score']; unset($user['score']); } else { if (is_numeric($user['score'])) { $user_level = donut_get_user_level($user_raw['userid']); $level_html = qa_user_level_string($user_level); } else { $level_html = $user['score']; unset($user['score']); } } if (empty($handle_html)) { $handle_html = $user['label']; } $avatar = QA_FINAL_EXTERNAL_USERS ? qa_get_external_avatar_html(@$user_raw['userid'], qa_opt('avatar_users_size'), true) : qa_get_user_avatar_html(@$user_raw['flags'], @$user_raw['email'], @$user_raw['handle'], @$user_raw['avatarblobid'], @$user_raw['avatarwidth'], @$user_raw['avatarheight'], 70, true); if (isset($user['score'])) { $userpoints = $user['score']; $pointshtml = $userpoints === 1 ? qa_lang_html_sub('main/1_point', '1', '1') : qa_lang_html_sub('main/x_points', qa_html($userpoints)); if (!empty($pointshtml)) { $pointshtml = '<p class="score">' . $pointshtml . '</p>'; } } $this->output(' <div class="user-box-inner"> <div class="user-avatar"> ' . $avatar . ' </div> <div class="user-data"> ' . $handle_html . ' <div class="user-level"> ' . $level_html . ' </div> <div class="counts clearfix"> ' . @$pointshtml . ' </div> </div>'); if (qa_opt('badge_active') && function_exists('qa_get_badge_list')) { $this->output('<div class="badge-list">' . donut_user_badge($handle) . '</div>'); } $this->output('</div>'); $this->output('</div>'); } $this->output('</div>'); $this->output('</div>'); } else { $title = isset($this->content['ranking_users']['title']) ? $this->content['ranking_users']['title'] : @$this->content['title']; $this->output(' <div class="no-items"> <div class="alert alert-info"><span class="fa fa-warning"></span> ' . $title . '</div> </div>'); } } elseif (@$ranking['type'] == 'tags') { if (count($ranking['items'])) { $this->output('<div id="tags-list" class="row ' . $class . '">'); $columns = qa_opt('columns_tags'); for ($column = 0; $column < $columns; $column++) { $this->set_context('ranking_column', $column); $this->output('<div class="col-md-' . ceil(12 / $columns) . ' col-xs-12" >'); $this->output('<ul class="donut-tags-list">'); for ($row = 0; $row < $item_count; $row++) { $this->set_context('ranking_row', $row); $this->donut_tags_item(@$ranking['items'][$column * $item_count + $row], $class, $column > 0); } $this->clear_context('ranking_column'); $this->output('</ul>'); $this->output('</div>'); } $this->clear_context('ranking_row'); $this->output('</div>'); } else { $this->output(' <div class="no-items"> <div class="alert alert-info"><span class="fa fa-warning"></span> ' . $this->content['ranking_tags']['title'] . '</div> </div>'); } } else { parent::ranking($ranking); } }
function ranking($ranking) { $class = @$ranking['type'] == 'users' ? 'qa-top-users' : 'qa-top-tags'; $rows = min($ranking['rows'], count($ranking['items'])); if (!$rows) { $rows = 1; } if (@$ranking['type'] == 'users') { $this->output('<div class="page-users-list clearfix"><div class="row">'); if (isset($ranking['items'])) { $columns = ceil(count($ranking['items']) / $rows); } if (isset($ranking['items'])) { $pagesize = qa_opt('page_size_users'); $start = qa_get_start(); $users = qa_db_select_with_pending(qa_db_top_users_selectspec($start, qa_opt_if_loaded('page_size_users'))); $users = array_slice($users, 0, $pagesize); $usershtml = qa_userids_handles_html($users); foreach ($ranking['items'] as $user) { $this->output('<div class="user-box col-sm-' . ceil(12 / $columns) . ' col-xs-12">'); $user_raw = !empty($user['raw']) ? $user['raw'] : $user; $handle = @$user_raw['handle']; $handle_html = @$usershtml[$user_raw['userid']]; if (isset($user_raw['userid'])) { $user_rank = qa_db_select_with_pending(qa_db_user_rank_selectspec($user_raw['userid'], true)); $level_html = qa_user_level_string($user_rank); } else { $level_html = $user['score']; unset($user['score']); } if (empty($handle_html)) { $handle_html = $user['label']; } $avatar = QA_FINAL_EXTERNAL_USERS ? qa_get_external_avatar_html(@$user_raw['userid'], qa_opt('avatar_users_size'), true) : qa_get_user_avatar_html(@$user_raw['flags'], @$user_raw['email'], @$user_raw['handle'], @$user_raw['avatarblobid'], @$user_raw['avatarwidth'], @$user_raw['avatarheight'], 70, true); if (isset($user['score'])) { $userpoints = $user['score']; $pointshtml = $userpoints === 1 ? qa_lang_html_sub('main/1_point', '1', '1') : qa_lang_html_sub('main/x_points', qa_html($userpoints)); if (!empty($pointshtml)) { $pointshtml = '<p class="score">' . $pointshtml . '</p>'; } } $this->output(' <div class="user-box-inner"> <div class="user-avatar"> ' . $avatar . ' </div> <div class="user-data"> ' . $handle_html . ' <div class="user-level"> ' . $level_html . ' </div> <div class="counts clearfix"> ' . @$pointshtml . ' </div> </div>'); if (qa_opt('badge_active') && function_exists('qa_get_badge_list')) { $this->output('<div class="badge-list">' . donut_user_badge($handle) . '</div>'); } $this->output('</div>'); $this->output('</div>'); } } else { $this->output(' <div class="no-items"> <h3 class="">' . qa_lang_html('main/no_active_users') . '</h3> </div>'); } $this->output('</div>'); $this->output('</div>'); } elseif (@$ranking['type'] == 'tags') { if ($rows > 0) { $this->output('<div id="tags-list" class="row ' . $class . '">'); $tags = array(); foreach (@$ranking['items'] as $item) { $tags[] = strip_tags($item['label']); } $columns = ceil(count($ranking['items']) / $rows); for ($column = 0; $column < $columns; $column++) { $this->set_context('ranking_column', $column); $this->output('<div class="col-md-' . ceil(12 / $columns) . ' col-xs-12" >'); $this->output('<ul class="donut-tags-list">'); for ($row = 0; $row < $rows; $row++) { $this->set_context('ranking_row', $row); $this->donut_tags_item(@$ranking['items'][$column * $rows + $row], $class, $column > 0); } $this->clear_context('ranking_column'); $this->output('</ul>'); $this->output('</div>'); } $this->clear_context('ranking_row'); $this->output('</div>'); } else { $this->output(' <div class="no-items"> <h3 class="icon-warning">' . qa_lang('cleanstrap/no_tags') . '</h3> <p>' . qa_lang('cleanstrap/no_results_detail') . '</p> </div>'); } } else { if ($rows > 0) { $this->output('<table class="' . $class . '-table">'); $columns = ceil(count($ranking['items']) / $rows); for ($row = 0; $row < $rows; $row++) { $this->set_context('ranking_row', $row); $this->output('<tr>'); for ($column = 0; $column < $columns; $column++) { $this->set_context('ranking_column', $column); $this->ranking_item(@$ranking['items'][$column * $rows + $row], $class, $column > 0); } $this->clear_context('ranking_column'); $this->output('</tr>'); } $this->clear_context('ranking_row'); $this->output('</table>'); } else { $this->output(' <div class="no-items"> <h3 class="icon-warning">' . qa_lang_html('cleanstrap/no_results') . '</h3> <p>' . qa_lang_html('cleanstrap/no_results_detail') . '</p> </div>'); } } }
function doctype() { if (strpos($this->request, 'user/') !== false && strpos($this->request, 'articles') !== false) { $this->request = 'user-articles'; } /* ADAPT USER PAGES AND SUBPAGES */ if ($this->template == 'user' || $this->template == 'user-wall' || $this->template == 'user-activity' || $this->template == 'user-questions' || $this->template == 'user-answers' || $this->request == 'user-articles') { $handle = qa_request_part(1); if (!strlen($handle)) { $handle = qa_get_logged_in_handle(); qa_redirect(isset($handle) ? 'user/' . $handle : 'users'); } $identifier = QA_FINAL_EXTERNAL_USERS ? $userid : $handle; list($useraccount, $userprofile, $userfields, $usermessages, $userpoints, $userlevels, $navcategories, $userrank) = qa_db_select_with_pending(QA_FINAL_EXTERNAL_USERS ? null : qa_db_user_account_selectspec($handle, false), QA_FINAL_EXTERNAL_USERS ? null : qa_db_user_profile_selectspec($handle, false), QA_FINAL_EXTERNAL_USERS ? null : qa_db_userfields_selectspec(), QA_FINAL_EXTERNAL_USERS ? null : qa_db_recent_messages_selectspec(null, null, $handle, false, qa_opt_if_loaded('page_size_wall')), qa_db_user_points_selectspec($identifier), qa_db_user_levels_selectspec($identifier, QA_FINAL_EXTERNAL_USERS, true), qa_db_category_nav_selectspec(null, true), qa_db_user_rank_selectspec($identifier)); $userid = $useraccount['userid']; $loginuserid = qa_get_logged_in_userid(); if ($this->template == 'user') { // ADAPT FORM CONTENTS /*$this->content['form_activity']['fields']['activity'] = array('type'=>'static', 'label'=>'Recent Activity', 'value'=>'<a href="'.$handle.'/activity">show</a>');*/ // ADD PRIVATE MESSAGE LINK AFTER MEMBERSHIP DURATION if (qa_opt('allow_private_messages') && isset($loginuserid) && $loginuserid != $userid && !($useraccount['flags'] & QA_USER_FLAGS_NO_MESSAGES)) { $this->content['form_profile']['fields']['duration']['value'] .= strtr(qa_lang_html('profile/send_private_message'), array('^1' => '<a href="' . qa_path_html('message/' . $handle) . '">', '^2' => '</a>')); } } $site_url = qa_opt('site_url'); // RENEW THE SUB-NAVIGATION unset($this->content['navigation']['sub']); $this->content['navigation']['sub']['account'] = array('label' => 'User ' . $handle, 'url' => $site_url . '/user/' . $handle, 'selected' => $this->template == 'user' ? 1 : 0); $this->content['navigation']['sub']['wall'] = array('label' => $handle . '\'s Wall', 'url' => $site_url . '/user/' . $handle . '/wall', 'selected' => $this->template == 'user-wall' ? 1 : 0); $this->content['navigation']['sub']['activity'] = array('label' => qa_lang('qa_blog_lang/nav_activity'), 'url' => $site_url . '/user/' . $handle . '/activity', 'selected' => $this->template == 'user-activity' ? 1 : 0); $this->content['navigation']['sub']['questions'] = array('label' => qa_lang('qa_blog_lang/nav_questions'), 'url' => $site_url . '/user/' . $handle . '/questions', 'selected' => $this->template == 'user-questions' ? 1 : 0); $this->content['navigation']['sub']['answers'] = array('label' => qa_lang('qa_blog_lang/nav_answers'), 'url' => $site_url . '/user/' . $handle . '/answers', 'selected' => $this->template == 'user-answers' ? 1 : 0); $this->content['navigation']['sub']['articles'] = array('label' => qa_lang('qa_blog_lang/nav_articles'), 'url' => $site_url . '/user/' . $handle . '/articles', 'selected' => $this->request == 'user-articles' ? 1 : 0); $this->content['navigation']['sub']['newarticles'] = array('label' => qa_lang('qa_blog_lang/new_articles'), 'url' => $site_url . '/articles', 'selected' => $this->request == 'articles' ? 1 : 0); if ($this->request == 'user-articles') { unset($this->content['title']); $this->content['title'] = qa_lang('qa_blog_lang/title_recent') . " {$handle}"; unset($this->content['suggest_next']); unset($this->content['error']); if ($this->request == 'user-articles') { $qa_content['custom'] = ""; $html = ""; $result = qa_db_query_sub("SELECT * FROM ^blog_posts WHERE userid = '{$userid}' ORDER BY posted DESC"); $i = 0; while ($article = mysqli_fetch_array($result)) { $i++; $html .= article_item($article['title'], $site_url . '/blog/' . $article['postid'] . '/' . seoUrl2($article['title']) . '/', $article['posted'], $article['views']); } if ($i == 0) { $html = "<h3>" . qa_lang('qa_blog_lang/oops') . " {$handle} " . qa_lang('qa_blog_lang/no_post') . "</h3>"; } $this->content['custom'] = $html; } } } else { if ($this->template == 'account' || $this->template == 'favorites' || $this->template == 'updates' || $this->request == 'gallery' || $this->request == 'articles') { // ADAPT FORM FOR DETAILS SUBPAGE // RENEW THE SUB-NAVIGATION unset($this->content['navigation']['sub']); $this->content['navigation']['sub']['account'] = array('label' => 'My Details', 'url' => './account', 'selected' => $this->template == 'account' ? 1 : 0); $this->content['navigation']['sub']['favorites'] = array('label' => 'My Favorites', 'url' => './favorites', 'selected' => $this->template == 'favorites' ? 1 : 0); $this->content['navigation']['sub']['updates'] = array('label' => 'My Updates', 'url' => './updates', 'selected' => $this->template == 'updates' ? 1 : 0); $this->content['navigation']['sub']['articles'] = array('label' => 'My Articles', 'url' => './articles', 'selected' => $this->request == 'articles' ? 1 : 0); } else { if ($this->template == 'users') { require_once QA_INCLUDE_DIR . 'qa-db-users.php'; require_once QA_INCLUDE_DIR . 'qa-db-selects.php'; require_once QA_INCLUDE_DIR . 'qa-app-format.php'; $start = qa_get_start(); $users = qa_db_select_with_pending(qa_db_top_users_selectspec($start, qa_opt_if_loaded('page_size_users'))); $usercount = qa_opt('cache_userpointscount'); $pagesize = qa_opt('page_size_users'); $users = array_slice($users, 0, $pagesize); $usershtml = qa_userids_handles_html($users); // CHANGE TITLE $this->content['title'] = 'Users'; $this->content['ranking'] = array('items' => array(), 'rows' => ceil($pagesize / qa_opt('columns_users')), 'type' => 'users'); if (count($users)) { foreach ($users as $userid => $user) { $this->content['ranking']['items'][] = array('label' => (QA_FINAL_EXTERNAL_USERS ? qa_get_external_avatar_html($user['userid'], qa_opt('avatar_users_size'), true) : qa_get_user_avatar_html($user['flags'], $user['email'], $user['handle'], $user['avatarblobid'], $user['avatarwidth'], $user['avatarheight'], qa_opt('avatar_users_size'), true)) . ' ' . $usershtml[$user['userid']], 'score' => qa_html(number_format($user['points']))); } } else { $this->content['title'] = qa_lang_html('main/no_active_users'); } $this->content['page_links'] = qa_html_page_links(qa_request(), $start, $pagesize, $usercount, qa_opt('pages_prev_next')); // EMPTY SUB-NAVIGATION $this->content['navigation']['sub'] = null; } } } if ($this->template == 'questions') { unset($this->content['navigation']['sub']); $this->content['navigation']['sub']['account'] = array('label' => 'My Details', 'url' => './account', 'selected' => 0); //print_r ($this->content['navigation']); } if ($this->request == 'login') { $this->content['form']['fields']['password']['note'] = '<a href="/forgot">I forgot my password</a> - <a href="/register">Register</a>'; } qa_html_theme_base::doctype(); }