forked from Kliqqi-CMS/Kliqqi-CMS
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtopusers.php
140 lines (111 loc) · 5.88 KB
/
topusers.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
<?php
include_once('internal/Smarty.class.php');
$main_smarty = new Smarty;
include('config.php');
include(mnminclude.'html1.php');
include(mnminclude.'link.php');
include(mnminclude.'tags.php');
include(mnminclude.'user.php');
include(mnminclude.'smartyvariables.php');
// -------------------------------------------------------------------------------------
// breadcrumbs and page titles
$navwhere['text1'] = $main_smarty->get_config_vars('PLIGG_Visual_Breadcrumb_TopUsers');
$navwhere['link1'] = getmyurl('topusers', '');
$main_smarty->assign('navbar_where', $navwhere);
$main_smarty->assign('posttitle', $main_smarty->get_config_vars('PLIGG_Visual_Breadcrumb_TopUsers'));
// figure out what "page" of the results we're on
$page_size = $top_users_size;
$offset=(get_current_page()-1)* $page_size;
// put the table headers in an array for the top users tpl file
$header_items = array($main_smarty->get_config_vars('PLIGG_Visual_TopUsers_TH_User'), $main_smarty->get_config_vars('PLIGG_Visual_TopUsers_TH_News'), $main_smarty->get_config_vars('PLIGG_Visual_TopUsers_TH_PublishedNews'), $main_smarty->get_config_vars('PLIGG_Visual_TopUsers_TH_Comments'), $main_smarty->get_config_vars('PLIGG_Visual_TopUsers_TH_TotalVotes'), $main_smarty->get_config_vars('PLIGG_Visual_TopUsers_TH_PublishedVotes'));
// determine how to sort users
// validate and make sure value is between 0 and 5
$sortby = isset($_GET['sortby']) && is_numeric($_GET['sortby']) && $_GET['sortby'] >= 0 && $_GET['sortby'] <= 5 ? $_GET['sortby'] : 0;
if ($sortby == 0) { // sort users alphabetically
$select = 'SELECT user_id';
$whether_to_show_user = "AND user_enabled = 1 AND user_level <> 'Spammer' AND (user_login != 'anonymous' OR user_lastip)";
$order_by = ' ORDER BY user_karma DESC ';
} else {
$select = 'SELECT user_id, COUNT(*) AS count ';
$whether_to_show_user = "AND user_enabled = 1 AND user_level NOT IN ('admin', 'Spammer') AND (user_login != 'anonymous' OR user_lastip)";
$order_by = ' ORDER BY count DESC ';
}
$whether_to_show_link = "AND link_status = 'published'";
$link_author_from_where = ', ' . table_links . " WHERE link_author = user_id $whether_to_show_user";
$vote_from_where = ', ' . table_votes . " WHERE vote_user_id = user_id $whether_to_show_user";
$from_where_clauses = array(
// sort users alphabetically:
0 => " WHERE user_karma > 0 $whether_to_show_user",
// sort users by number of submitted links:
1 => "$link_author_from_where AND link_status IN ('published', 'new') GROUP BY link_author",
// sort users by number of published links:
2 => "$link_author_from_where $whether_to_show_link GROUP BY link_author",
// sort users by number of comments:
3 => (', ' . table_comments . " WHERE comment_status = 'published' AND comment_user_id = user_id $whether_to_show_user GROUP BY comment_user_id"),
// sort users by number of total votes:
4 => ("$vote_from_where GROUP BY vote_user_id"),
// sort users by number of published votes:
5 => (', ' . table_links . "$vote_from_where AND link_id = vote_link_id $whether_to_show_link AND vote_date < link_published_date GROUP BY user_id")
);
$from_where = ' FROM ' . table_users . $from_where_clauses[$sortby];
$users = $db->get_results("SELECT user_karma, COUNT(*) FROM " . table_users . " WHERE user_karma > 0 $whether_to_show_user GROUP BY user_karma ORDER BY user_karma DESC", ARRAY_N);
$ranklist = array();
$rank = 1;
if ($users)
foreach ($users as $dbuser)
{
$ranklist[$dbuser[0]] = $rank;
$rank += $dbuser[1];
}
$user = new User;
$rows = $db->get_var("select count(DISTINCT user_id) as count $from_where $order_by");
$users = $db->get_results("$select $from_where $order_by LIMIT $offset, $page_size");
$users_table = '';
//echo "$select $from_where $order_by LIMIT $offset, $page_size";
//echo "<pre>";
if ($users) {
foreach($users as $dbuser) {
$user->id=$dbuser->user_id;
$user->read();
$user->all_stats();
//echo getmyurl("user", $user->username);
//print_r($users);
//die;
$main_smarty->assign('user_userlink', getmyurl("user", $user->username));
$main_smarty->assign('user_username', $user->username);
$main_smarty->assign('user_total_links', $user->total_links);
$main_smarty->assign('user_published_links', $user->published_links);
if($user->total_links>0)
$main_smarty->assign('user_published_links_percent', intval($user->published_links/$user->total_links*100));
else
$main_smarty->assign('user_published_links_percent', '');
$main_smarty->assign('user_total_comments', $user->total_comments);
$main_smarty->assign('user_total_votes', $user->total_votes);
$main_smarty->assign('user_published_votes', $user->published_votes);
if($user->total_votes>0)
$main_smarty->assign('user_published_votes_percent', intval($user->published_votes/$user->total_votes*100));
else
$main_smarty->assign('user_published_votes_percent', '');
$main_smarty->assign('user_karma', $user->karma);
$main_smarty->assign('user_rank', $ranklist[$user->karma]);
$main_smarty->assign('user_avatar', get_avatar('small', "", $user->username, $user->email));
$users_table .= $main_smarty->fetch(The_Template . "/topusers_data.tpl");
}
}
$main_smarty->assign('users_table', $users_table);
// pagename
define('pagename', 'topusers');
$main_smarty->assign('pagename', pagename);
// sidebar
$main_smarty = do_sidebar($main_smarty);
$main_smarty->assign('headers', $header_items);
$main_smarty->assign('total_row_for_topusers', $rows);
//For Infinit scrolling and continue reading option
if(Auto_scroll==2 || Auto_scroll==3){
$main_smarty->assign("scrollpageSize", $page_size);
}else
$main_smarty->assign('topusers_pagination', do_pages($rows, $top_users_size, "topusers", true));
// show the template
$main_smarty->assign('tpl_center', $the_template . '/topusers_center');
$main_smarty->display($the_template . '/pligg.tpl');
?>