diff options
| author | Paul S. Owen <psotfx@users.sourceforge.net> | 2003-03-05 00:50:03 +0000 |
|---|---|---|
| committer | Paul S. Owen <psotfx@users.sourceforge.net> | 2003-03-05 00:50:03 +0000 |
| commit | 658f2a4b662a11409c332c4958539bcb5e5d28d0 (patch) | |
| tree | f9b623f4b9a72e23f0260944cced5f1b5e4bd6aa /phpBB/memberlist.php | |
| parent | cc827946efae40950d2e95b8752cb9367124c09e (diff) | |
| download | forums-658f2a4b662a11409c332c4958539bcb5e5d28d0.tar forums-658f2a4b662a11409c332c4958539bcb5e5d28d0.tar.gz forums-658f2a4b662a11409c332c4958539bcb5e5d28d0.tar.bz2 forums-658f2a4b662a11409c332c4958539bcb5e5d28d0.tar.xz forums-658f2a4b662a11409c332c4958539bcb5e5d28d0.zip | |
Moved "viewprofile" to memberslist ... consolidation incomplete
git-svn-id: file:///svn/phpbb/trunk@3598 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB/memberlist.php')
| -rw-r--r-- | phpBB/memberlist.php | 715 |
1 files changed, 462 insertions, 253 deletions
diff --git a/phpBB/memberlist.php b/phpBB/memberlist.php index aaf8883aa5..3ec2c2aecc 100644 --- a/phpBB/memberlist.php +++ b/phpBB/memberlist.php @@ -40,6 +40,7 @@ if (!$auth->acl_gets('u_viewprofile', 'a_')) // Grab data $mode = (isset($_REQUEST['mode'])) ? $_REQUEST['mode'] : ''; +$user_id = (isset($_GET['u'])) ? intval($_GET['u']) : ANONYMOUS; $start = (isset($_GET['start'])) ? intval($_GET['start']) : 0; $form = (!empty($_GET['form'])) ? $_GET['form'] : 0; @@ -78,323 +79,531 @@ while ($row = $db->sql_fetchrow($result)) $db->sql_freeresult($result); -// Memberlist sorting -$sort_key_text = array('a' => $user->lang['SORT_USERNAME'], 'b' => $user->lang['SORT_LOCATION'], 'c' => $user->lang['SORT_JOINED'], 'd' => $user->lang['SORT_POST_COUNT'], 'e' => $user->lang['SORT_EMAIL'], 'f' => $user->lang['WEBSITE'], 'g' => $user->lang['ICQ'], 'h' => $user->lang['AIM'], 'i' => $user->lang['MSNM'], 'j' => $user->lang['YIM'], 'k' => $user->lang['SORT_LAST_ACTIVE']); -$sort_key_sql = array('a' => 'username', 'b' => 'user_from', 'c' => 'user_regdate', 'd' => 'user_posts', 'e' => 'user_email', 'f' => 'user_website', 'g' => 'user_icq', 'h' => 'user_aim', 'i' => 'user_msnm', 'j' => 'user_yim', 'k' => 'user_lastvisit'); - -$sort_dir_text = array('a' => $user->lang['ASCENDING'], 'd' => $user->lang['DESCENDING']); - -$s_sort_key = '<select name="sk">'; -foreach ($sort_key_text as $key => $value) +if ($mode != 'viewprofile') { - $selected = ($sort_key == $key) ? ' selected="selected"' : ''; - $s_sort_key .= '<option value="' . $key . '"' . $selected . '>' . $value . '</option>'; -} -$s_sort_key .= '</select>'; + // Memberlist sorting + $sort_key_text = array('a' => $user->lang['SORT_USERNAME'], 'b' => $user->lang['SORT_LOCATION'], 'c' => $user->lang['SORT_JOINED'], 'd' => $user->lang['SORT_POST_COUNT'], 'e' => $user->lang['SORT_EMAIL'], 'f' => $user->lang['WEBSITE'], 'g' => $user->lang['ICQ'], 'h' => $user->lang['AIM'], 'i' => $user->lang['MSNM'], 'j' => $user->lang['YIM'], 'k' => $user->lang['SORT_LAST_ACTIVE']); + $sort_key_sql = array('a' => 'username', 'b' => 'user_from', 'c' => 'user_regdate', 'd' => 'user_posts', 'e' => 'user_email', 'f' => 'user_website', 'g' => 'user_icq', 'h' => 'user_aim', 'i' => 'user_msnm', 'j' => 'user_yim', 'k' => 'user_lastvisit'); -$s_sort_dir = '<select name="sd">'; -foreach ($sort_dir_text as $key => $value) -{ - $selected = ($sort_dir == $key) ? ' selected="selected"' : ''; - $s_sort_dir .= '<option value="' . $key . '"' . $selected . '>' . $value . '</option>'; -} -$s_sort_dir .= '</select>'; + $sort_dir_text = array('a' => $user->lang['ASCENDING'], 'd' => $user->lang['DESCENDING']); + $s_sort_key = '<select name="sk">'; + foreach ($sort_key_text as $key => $value) + { + $selected = ($sort_key == $key) ? ' selected="selected"' : ''; + $s_sort_key .= '<option value="' . $key . '"' . $selected . '>' . $value . '</option>'; + } + $s_sort_key .= '</select>'; + $s_sort_dir = '<select name="sd">'; + foreach ($sort_dir_text as $key => $value) + { + $selected = ($sort_dir == $key) ? ' selected="selected"' : ''; + $s_sort_dir .= '<option value="' . $key . '"' . $selected . '>' . $value . '</option>'; + } + $s_sort_dir .= '</select>'; -// Additional sorting options for user search -$where_sql = ''; -if ($mode == 'searchuser') -{ - $find_key_match = array('lt' => '<', 'gt' => '>', 'eq' => '='); - $find_count = array('lt' => $user->lang['LESS_THAN'], 'eq' => $user->lang['EQUAL_TO'], 'gt' => $user->lang['MORE_THAN']); - $s_find_count = ''; - foreach ($find_count as $key => $value) + + // Additional sorting options for user search + $where_sql = ''; + if ($mode == 'searchuser') { - $selected = ($count_select == $key) ? ' selected="selected"' : ''; - $s_find_count .= '<option value="' . $key . '"' . $selected . '>' . $value . '</option>'; - } + $find_key_match = array('lt' => '<', 'gt' => '>', 'eq' => '='); + + $find_count = array('lt' => $user->lang['LESS_THAN'], 'eq' => $user->lang['EQUAL_TO'], 'gt' => $user->lang['MORE_THAN']); + $s_find_count = ''; + foreach ($find_count as $key => $value) + { + $selected = ($count_select == $key) ? ' selected="selected"' : ''; + $s_find_count .= '<option value="' . $key . '"' . $selected . '>' . $value . '</option>'; + } - $find_time = array('lt' => $user->lang['BEFORE'], 'gt' => $user->lang['AFTER']); - $s_find_join_time = ''; - foreach ($find_time as $key => $value) + $find_time = array('lt' => $user->lang['BEFORE'], 'gt' => $user->lang['AFTER']); + $s_find_join_time = ''; + foreach ($find_time as $key => $value) + { + $selected = ($joined_select == $key) ? ' selected="selected"' : ''; + $s_find_join_time .= '<option value="' . $key . '"' . $selected . '>' . $value . '</option>'; + } + + $s_find_active_time = ''; + foreach ($find_time as $key => $value) + { + $selected = ($active_select == $key) ? ' selected="selected"' : ''; + $s_find_active_time .= '<option value="' . $key . '"' . $selected . '>' . $value . '</option>'; + } + + $where_sql .= ($username) ? " AND username LIKE '" . str_replace('*', '%', $db->sql_escape($username)) ."'" : ''; + $where_sql .= ($email) ? " AND user_email LIKE '" . str_replace('*', '%', $db->sql_escape($email)) ."' " : ''; + $where_sql .= ($icq) ? " AND user_icq LIKE '" . str_replace('*', '%', $db->sql_escape($icq)) ."' " : ''; + $where_sql .= ($aim) ? " AND user_aim LIKE '" . str_replace('*', '%', $db->sql_escape($aim)) ."' " : ''; + $where_sql .= ($yahoo) ? " AND user_yim LIKE '" . str_replace('*', '%', $db->sql_escape($yahoo)) ."' " : ''; + $where_sql .= ($msn) ? " AND user_msnm LIKE '" . str_replace('*', '%', $db->sql_escape($msn)) ."' " : ''; + $where_sql .= ($joined) ? " AND user_regdate " . $find_key_match[$joined_select] . " " . gmmktime(0, 0, 0, intval($joined[1]), intval($joined[2]), intval($joined[0])) : ''; + $where_sql .= ($count) ? " AND user_posts " . $find_key_match[$count_select] . " $count " : ''; + $where_sql .= ($active) ? " AND user_lastvisit " . $find_key_match[$active_select] . " " . gmmktime(0, 0, 0, $active[1], intval($active[2]), intval($active[0])) : ''; + + if (!empty($ipdomain)) + { + $ips = (preg_match('#[a-z]#', $ipdomain)) ? implode(', ', preg_replace('#([0-9]{1,3}\.[0-9]{1,3}[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})#', "'\\1'", gethostbynamel($ipdomain))) : "'" . str_replace('*', '%', $ipdomain) . "'"; + + $sql = "SELECT DISTINCT poster_id + FROM " . POSTS_TABLE . " + WHERE poster_ip " . ((preg_match('#%#', $ips)) ? 'LIKE' : 'IN') . " ($ips)"; + $result = $db->sql_query($sql); + + if ($row = $db->sql_fetchrow($result)) + { + $ip_sql = ''; + do + { + $ip_sql .= (($ip_sql != '') ? ', ' : '') . $row['poster_id']; + } + while ($row = $db->sql_fetchrow($result)); + + $where_sql .= " AND user_id IN ($ip_sql)"; + } + else + { + // A minor fudge but it does the job :D + $where_sql .= " AND user_id IN ('-1')"; + } + } + } + else { - $selected = ($joined_select == $key) ? ' selected="selected"' : ''; - $s_find_join_time .= '<option value="' . $key . '"' . $selected . '>' . $value . '</option>'; + $where_sql = ' AND user_active = 1'; } - $s_find_active_time = ''; - foreach ($find_time as $key => $value) + // Sorting and order + $order_by = $sort_key_sql[$sort_key] . ' ' . (($sort_dir == 'a') ? 'ASC' : 'DESC'); + + // Count the users ... + $sql = "SELECT COUNT(user_id) AS total_users + FROM " . USERS_TABLE . " + WHERE user_id <> " . ANONYMOUS . " + $where_sql"; + $result = $db->sql_query($sql); + + $total_users = ($row = $db->sql_fetchrow($result)) ? $row['total_users'] : 0; + + // Pagination string + $pagination_url = ($mode == 'searchuser') ? "memberlist.$phpEx$SID&mode=searchuser&form=$form&field=$field&username=" . urlencode($username) . "&email=" . urlencode($email) . "&icq=$icq&aim=" . urlencode($aim) . "&yahoo=" . urlencode($yahoo) . "&msn=" . urlencode($msn) . "&joined=" . urlencode(implode('-', $joined)) . "&active=" . urlencode(implode('-', $active)) . "&count=$count&ip=" . urlencode($ipdomain) . "&sd=$sort_dir&sk=$sort_key&joined_select=$joined_select&active_select=$active_select&count_select=$count_select" : "memberlist.$phpEx$SID&mode=$mode&sk=$sort_key&sd=$sort_dir"; + + // Some search user specific data + if ($mode == 'searchuser') { - $selected = ($active_select == $key) ? ' selected="selected"' : ''; - $s_find_active_time .= '<option value="' . $key . '"' . $selected . '>' . $value . '</option>'; + $template->assign_vars(array( + 'USERNAME' => $username, + 'EMAIL' => $email, + 'ICQ' => $icq, + 'AIM' => $aim, + 'YAHOO' => $yahoo, + 'MSNM' => $msn, + 'JOINED' => implode('-', $joined), + 'ACTIVE' => implode('-', $active), + 'COUNT' => $count, + 'IP' => $ipdomain, + + 'S_SEARCH_USER' => true, + 'S_FORM_NAME' => $form, + 'S_FIELD_NAME' => $field, + 'S_COUNT_OPTIONS' => $s_find_count, + 'S_SORT_OPTIONS' => $s_sort_key, + 'S_USERNAME_OPTIONS' => $username_list, + 'S_JOINED_TIME_OPTIONS' => $s_find_join_time, + 'S_ACTIVE_TIME_OPTIONS' => $s_find_active_time, + 'S_SEARCH_ACTION' => "memberslist.$phpEx$SID&mode=searchuser&field=$field") + ); } - $where_sql .= ($username) ? " AND username LIKE '" . str_replace('*', '%', $db->sql_escape($username)) ."'" : ''; - $where_sql .= ($email) ? " AND user_email LIKE '" . str_replace('*', '%', $db->sql_escape($email)) ."' " : ''; - $where_sql .= ($icq) ? " AND user_icq LIKE '" . str_replace('*', '%', $db->sql_escape($icq)) ."' " : ''; - $where_sql .= ($aim) ? " AND user_aim LIKE '" . str_replace('*', '%', $db->sql_escape($aim)) ."' " : ''; - $where_sql .= ($yahoo) ? " AND user_yim LIKE '" . str_replace('*', '%', $db->sql_escape($yahoo)) ."' " : ''; - $where_sql .= ($msn) ? " AND user_msnm LIKE '" . str_replace('*', '%', $db->sql_escape($msn)) ."' " : ''; - $where_sql .= ($joined) ? " AND user_regdate " . $find_key_match[$joined_select] . " " . gmmktime(0, 0, 0, intval($joined[1]), intval($joined[2]), intval($joined[0])) : ''; - $where_sql .= ($count) ? " AND user_posts " . $find_key_match[$count_select] . " $count " : ''; - $where_sql .= ($active) ? " AND user_lastvisit " . $find_key_match[$active_select] . " " . gmmktime(0, 0, 0, $active[1], intval($active[2]), intval($active[0])) : ''; - - if (!empty($ipdomain)) + // Do the SQL thang + $sql = "SELECT username, user_id, user_viewemail, user_posts, user_regdate, user_rank, user_from, user_website, user_email, user_icq, user_aim, user_yim, user_msnm, user_avatar, user_avatar_type, user_allowavatar, user_lastvisit + FROM " . USERS_TABLE . " + WHERE user_id <> " . ANONYMOUS . " + $where_sql + ORDER BY $order_by + LIMIT $start, " . $config['topics_per_page']; + $result = $db->sql_query($sql); + + if ($row = $db->sql_fetchrow($result)) { - $ips = (preg_match('#[a-z]#', $ipdomain)) ? implode(', ', preg_replace('#([0-9]{1,3}\.[0-9]{1,3}[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})#', "'\\1'", gethostbynamel($ipdomain))) : "'" . str_replace('*', '%', $ipdomain) . "'"; + $i = 0; + do + { + $username = $row['username']; + $user_id = intval($row['user_id']); - $sql = "SELECT DISTINCT poster_id - FROM " . POSTS_TABLE . " - WHERE poster_ip " . ((preg_match('#%#', $ips)) ? 'LIKE' : 'IN') . " ($ips)"; - $result = $db->sql_query($sql); + $from = (!empty($row['user_from'])) ? $row['user_from'] : ' '; + $joined = $user->format_date($row['user_regdate'], $user->lang['DATE_FORMAT']); + $posts = ($row['user_posts']) ? $row['user_posts'] : 0; - if ($row = $db->sql_fetchrow($result)) - { - $ip_sql = ''; - do + $poster_avatar = ''; + if ($row['user_avatar_type'] && $user_id && $row['user_allowavatar']) { - $ip_sql .= (($ip_sql != '') ? ', ' : '') . $row['poster_id']; + switch($row['user_avatar_type']) + { + case USER_AVATAR_UPLOAD: + $poster_avatar = ($config['allow_avatar_upload']) ? '<img src="' . $config['avatar_path'] . '/' . $row['user_avatar'] . '" alt="" border="0" />' : ''; + break; + + case USER_AVATAR_REMOTE: + $poster_avatar = ($config['allow_avatar_remote']) ? '<img src="' . $row['user_avatar'] . '" alt="" border="0" />' : ''; + break; + + case USER_AVATAR_GALLERY: + $poster_avatar = ($config['allow_avatar_local']) ? '<img src="' . $config['avatar_gallery_path'] . '/' . $row['user_avatar'] . '" alt="" border="0" />' : ''; + break; + } } - while ($row = $db->sql_fetchrow($result)); - $where_sql .= " AND user_id IN ($ip_sql)"; - } - else - { - // A minor fudge but it does the job :D - $where_sql .= " AND user_id IN ('-1')"; + $rank_title = $rank_img = ''; + foreach ($ranksrow as $rank) + { + if (empty($row['user_rank']) && $row['user_posts'] >= $rank['rank_min']) + { + $rank_title = $rank['rank_title']; + $rank_img = (!empty($rank['rank_image'])) ? '<img src="' . $rank['rank_image'] . '" border="0" alt="' . $rank_title . '" title="' . $rank_title . '" /><br />' : ''; + break; + } + + if (!empty($rank['rank_special']) && $row['user_rank'] == $rank['rank_id']) + { + $rank_title = $rank['rank_title']; + $rank_img = (!empty($rank['rank_image'])) ? '<img src="' . $rank['rank_image'] . '" border="0" alt="' . $rank_title . '" title="' . $rank_title . '" /><br />' : ''; + break; + } + } + + if ($row['user_viewemail'] || $auth->acl_get('a_')) + { + $email_uri = ($config['board_email_form']) ? "ucp.$phpEx$SID&mode=email&u=" . $user_id : 'mailto:' . $row['user_email']; + + $email_img = '<a href="' . $email_uri . '">' . $user->img('icon_email', $user->lang['Send_email']) . '</a>'; + $email = '<a href="' . $email_uri . '">' . $user->lang['Send_email'] . '</a>'; + } + else + { + $email_img = ' '; + $email = ' '; + } + + $temp_url = "memberlist.$phpEx$SID&mode=viewprofile&u=$user_id"; + $profile_img = '<a href="' . $temp_url . '">' . $user->img('icon_profile', $user->lang['Read_profile']) . '</a>'; + $profile = '<a href="' . $temp_url . '">' . $user->lang['Read_profile'] . '</a>'; + + $temp_url = "ucp.$phpEx$SID&mode=pm&action=send&u=$user_id"; + $pm_img = '<a href="' . $temp_url . '">' . $user->img('icon_pm', $user->lang['Send_private_message']) . '</a>'; + $pm = '<a href="' . $temp_url . '">' . $user->lang['Send_private_message'] . '</a>'; + + $www_img = ($row['user_website']) ? '<a href="' . $row['user_website'] . '" target="_userwww">' . $user->img('icon_www', $user->lang['Visit_website']) . '</a>' : ''; + $www = ($row['user_website']) ? '<a href="' . $row['user_website'] . '" target="_userwww">' . $user->lang['Visit_website'] . '</a>' : ''; + + if (!empty($row['user_icq'])) + { + $icq_status_img = '<a href="http://wwp.icq.com/' . $row['user_icq'] . '#pager"><img src="http://web.icq.com/whitepages/online?icq=' . $row['user_icq'] . '&img=5" width="18" height="18" border="0" /></a>'; + $icq_img = '<a href="http://wwp.icq.com/scripts/search.dll?to=' . $row['user_icq'] . '">' . $user->img('icon_icq', $user->lang['ICQ']) . '</a>'; + $icq = '<a href="http://wwp.icq.com/scripts/search.dll?to=' . $row['user_icq'] . '">' . $user->lang['ICQ'] . '</a>'; + } + else + { + $icq_status_img = ''; + $icq_img = ''; + $icq = ''; + } + + $aim_img = ($row['user_aim']) ? '<a href="aim:goim?screenname=' . $row['user_aim'] . '&message=Hello+Are+you+there?">' . $user->img('icon_aim', $user->lang['AIM']) . '</a>' : ''; + $aim = ($row['user_aim']) ? '<a href="aim:goim?screenname=' . $row['user_aim'] . '&message=Hello+Are+you+there?">' . $user->lang['AIM'] . '</a>' : ''; + + $temp_url = "ucp.$phpEx$SID&mode=viewprofile&u=$user_id"; + $msn_img = ($row['user_msnm']) ? '<a href="' . $temp_url . '">' . $user->img('icon_msnm', $user->lang['MSNM']) . '</a>' : ''; + $msn = ($row['user_msnm']) ? '<a href="' . $temp_url . '">' . $user->lang['MSNM'] . '</a>' : ''; + + $yim_img = ($row['user_yim']) ? '<a href="http://edit.yahoo.com/config/send_webmesg?.target=' . $row['user_yim'] . '&.src=pg">' . $user->img('icon_yim', $user->lang['YIM']) . '</a>' : ''; + $yim = ($row['user_yim']) ? '<a href="http://edit.yahoo.com/config/send_webmesg?.target=' . $row['user_yim'] . '&.src=pg">' . $user->lang['YIM'] . '</a>' : ''; + + $temp_url = "search.$phpEx$SID&search_author=" . urlencode($username) . "&showresults=posts"; + $search_img = '<a href="' . $temp_url . '">' . $user->img('icon_search', $user->lang['Search_user_posts']) . '</a>'; + $search = '<a href="' . $temp_url . '">' . $user->lang['Search_user_posts'] . '</a>'; + + $template->assign_block_vars('memberrow', array( + 'ROW_NUMBER' => $i + ($start + 1), + 'USERNAME' => $username, + 'FROM' => $from, + 'JOINED' => $joined, + 'POSTS' => $posts, + 'AVATAR_IMG' => $poster_avatar, + 'PROFILE_IMG' => $profile_img, + 'PROFILE' => $profile, + 'SEARCH_IMG' => $search_img, + 'SEARCH' => $search, + 'PM_IMG' => $pm_img, + 'PM' => $pm, + 'EMAIL_IMG' => $email_img, + 'EMAIL' => $email, + 'WWW_IMG' => $www_img, + 'WWW' => $www, + 'ICQ_STATUS_IMG'=> $icq_status_img, + 'ICQ_IMG' => $icq_img, + 'ICQ' => $icq, + 'AIM_IMG' => $aim_img, + 'AIM' => $aim, + 'MSN_IMG' => $msn_img, + 'MSN' => $msn, + 'YIM_IMG' => $yim_img, + 'YIM' => $yim, + 'ACTIVE' => $row['user_last_active'], + 'RANK_TITLE' => $rank, + 'RANK_IMG' => $rank_img, + + 'S_ROW_COUNT' => $i, + + 'U_VIEWPROFILE' => "memberlist.$phpEx$SID&mode=viewprofile&u=$user_id") + ); + + $i++; } + while ($row = $db->sql_fetchrow($result)); } + + // Generate page + $template->assign_vars(array( + 'PAGINATION' => generate_pagination($pagination_url, $total_users, $config['topics_per_page'], $start), + 'PAGE_NUMBER' => on_page($total_users, $config['topics_per_page'], $start), + + 'U_FIND_MEMBER' => "memberlist.$phpEx$SID&mode=searchuser", + 'U_SORT_USERNAME' => "memberlist.$phpEx$SID&sk=a&sd=" . (($sort_key == 'a' && $sort_dir == 'a') ? 'd' : 'a'), + 'U_SORT_FROM' => "memberlist.$phpEx$SID&sk=b&sd=" . (($sort_key == 'b' && $sort_dir == 'a') ? 'd' : 'a'), + 'U_SORT_JOINED' => "memberlist.$phpEx$SID&sk=c&sd=" . (($sort_key == 'c' && $sort_dir == 'a') ? 'd' : 'a'), + 'U_SORT_POSTS' => "memberlist.$phpEx$SID&sk=d&sd=" . (($sort_key == 'd' && $sort_dir == 'a') ? 'd' : 'a'), + 'U_SORT_EMAIL' => "memberlist.$phpEx$SID&sk=e&sd=" . (($sort_key == 'e' && $sort_dir == 'a') ? 'd' : 'a'), + 'U_SORT_WEBSITE' => "memberlist.$phpEx$SID&sk=f&sd=" . (($sort_key == 'f' && $sort_dir == 'a') ? 'd' : 'a'), + 'U_SORT_ICQ' => "memberlist.$phpEx$SID&sk=g&sd=" . (($sort_key == 'g' && $sort_dir == 'a') ? 'd' : 'a'), + 'U_SORT_AIM' => "memberlist.$phpEx$SID&sk=h&sd=" . (($sort_key == 'h' && $sort_dir == 'a') ? 'd' : 'a'), + 'U_SORT_MSN' => "memberlist.$phpEx$SID&sk=i&sd=" . (($sort_key == 'i' && $sort_dir == 'a') ? 'd' : 'a'), + 'U_SORT_YIM' => "memberlist.$phpEx$SID&sk=j&sd=" . (($sort_key == 'j' && $sort_dir == 'a') ? 'd' : 'a'), + 'U_SORT_ACTIVE' => "memberlist.$phpEx$SID&sk=k&sd=" . (($sort_key == 'k' && $sort_dir == 'a') ? 'd' : 'a'), + + 'S_MODE_SELECT' => $s_sort_key, + 'S_ORDER_SELECT'=> $s_sort_dir, + 'S_MODE_ACTION' => "memberlist.$phpEx$SID&mode=$mode&form=$form") + ); } else { - $where_sql = ' AND user_active = 1'; -} + if ($user_id == ANONYMOUS) + { + trigger_error($user->lang['NO_USER']); + } -// Sorting and order -$order_by = $sort_key_sql[$sort_key] . ' ' . (($sort_dir == 'a') ? 'ASC' : 'DESC'); -// Count the users ... -$sql = "SELECT COUNT(user_id) AS total_users - FROM " . USERS_TABLE . " - WHERE user_id <> " . ANONYMOUS . " - $where_sql"; -$result = $db->sql_query($sql); + // Do the SQL thang + $sql = "SELECT username, user_id, user_viewemail, user_posts, user_regdate, user_rank, user_from, user_website, user_email, user_icq, user_aim, user_yim, user_msnm, user_avatar, user_avatar_type, user_allowavatar, user_lastvisit + FROM " . USERS_TABLE . " + WHERE user_id = $user_id"; + $result = $db->sql_query($sql); -$total_users = ($row = $db->sql_fetchrow($result)) ? $row['total_users'] : 0; + if (!($row = $db->sql_fetchrow($result))) + { + trigger_error($user->lang['NO_USER']); + } + $db->sql_freeresult($result); -// Pagination string -$pagination_url = ($mode == 'searchuser') ? "memberlist.$phpEx$SID&mode=searchuser&form=$form&field=$field&username=" . urlencode($username) . "&email=" . urlencode($email) . "&icq=$icq&aim=" . urlencode($aim) . "&yahoo=" . urlencode($yahoo) . "&msn=" . urlencode($msn) . "&joined=" . urlencode(implode('-', $joined)) . "&active=" . urlencode(implode('-', $active)) . "&count=$count&ip=" . urlencode($ipdomain) . "&sd=$sort_dir&sk=$sort_key&joined_select=$joined_select&active_select=$active_select&count_select=$count_select" : "memberlist.$phpEx$SID&mode=$mode&sk=$sort_key&sd=$sort_dir"; + $sql = "SELECT f.forum_id, f.forum_name, COUNT(post_id) AS num_posts + FROM " . POSTS_TABLE . " p, " . FORUMS_TABLE . " f + WHERE p.poster_id = $user_id + AND f.forum_id = p.forum_id + GROUP BY f.forum_id, f.forum_name + ORDER BY num_posts DESC + LIMIT 1"; + $result = $db->sql_query($sql); -// Some search user specific data -if ($mode == 'searchuser') -{ - $template->assign_vars(array( - 'USERNAME' => $username, - 'EMAIL' => $email, - 'ICQ' => $icq, - 'AIM' => $aim, - 'YAHOO' => $yahoo, - 'MSNM' => $msn, - 'JOINED' => implode('-', $joined), - 'ACTIVE' => implode('-', $active), - 'COUNT' => $count, - 'IP' => $ipdomain, - - 'S_SEARCH_USER' => true, - 'S_FORM_NAME' => $form, - 'S_FIELD_NAME' => $field, - 'S_COUNT_OPTIONS' => $s_find_count, - 'S_SORT_OPTIONS' => $s_sort_key, - 'S_USERNAME_OPTIONS' => $username_list, - 'S_JOINED_TIME_OPTIONS' => $s_find_join_time, - 'S_ACTIVE_TIME_OPTIONS' => $s_find_active_time, - 'S_SEARCH_ACTION' => "memberslist.$phpEx$SID&mode=searchuser&field=$field") - ); -} + $active_f_row = $db->sql_fetchrow($result); + $db->sql_freeresult($result); -// Do the SQL thang -$sql = "SELECT username, user_id, user_viewemail, user_posts, user_regdate, user_rank, user_from, user_website, user_email, user_icq, user_aim, user_yim, user_msnm, user_avatar, user_avatar_type, user_allowavatar, user_lastvisit - FROM " . USERS_TABLE . " - WHERE user_id <> " . ANONYMOUS . " - $where_sql - ORDER BY $order_by - LIMIT $start, " . $config['topics_per_page']; -$result = $db->sql_query($sql); + $sql = "SELECT t.topic_id, t.topic_title, COUNT(p.post_id) AS num_posts + FROM " . POSTS_TABLE . " p, " . TOPICS_TABLE . " t + WHERE p.poster_id = $user_id + AND t.topic_id = p.topic_id + GROUP BY t.topic_id, t.topic_title + ORDER BY num_posts DESC + LIMIT 1"; + $result = $db->sql_query($sql); -if ($row = $db->sql_fetchrow($result)) -{ - $i = 0; - do + $active_t_row = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + + + + $memberdays = max(1, round((time() - $row['user_regdate'] ) / 86400)); + $posts_per_day = $row['user_posts'] / $memberdays; + $percentage = ($config['num_posts']) ? min(100, ($row['user_posts'] / $config['num_posts']) * 100) : 0; + + $active_f_name = $active_f_id = $active_f_count = $active_f_pct = ''; + if (!empty($active_f_row['num_posts'])) { - $username = $row['username']; - $user_id = intval($row['user_id']); + $active_f_name = $active_f_row['forum_name']; + $active_f_id = $active_f_row['forum_id']; + $active_f_count = $active_f_row['num_posts']; + $active_f_pct = ($active_f_count / $row['user_posts']) * 100; + } + unset($active_f_row); - $from = (!empty($row['user_from'])) ? $row['user_from'] : ' '; - $joined = $user->format_date($row['user_regdate'], $user->lang['DATE_FORMAT']); - $posts = ($row['user_posts']) ? $row['user_posts'] : 0; + $active_t_name = $active_t_id = $active_t_count = $active_t_pct = ''; + if (!empty($active_t_row['num_posts'])) + { + $active_t_name = $active_t_row['topic_title']; + $active_t_id = $active_t_row['topic_id']; + $active_t_count = $active_t_row['num_posts']; + $active_t_pct = ($active_t_count / $row['user_posts']) * 100; + } + unset($active_t_row); - $poster_avatar = ''; - if ($row['user_avatar_type'] && $user_id && $row['user_allowavatar']) - { - switch($row['user_avatar_type']) - { - case USER_AVATAR_UPLOAD: - $poster_avatar = ($config['allow_avatar_upload']) ? '<img src="' . $config['avatar_path'] . '/' . $row['user_avatar'] . '" alt="" border="0" />' : ''; - break; - case USER_AVATAR_REMOTE: - $poster_avatar = ($config['allow_avatar_remote']) ? '<img src="' . $row['user_avatar'] . '" alt="" border="0" />' : ''; - break; + $username = $row['username']; + $user_id = intval($row['user_id']); - case USER_AVATAR_GALLERY: - $poster_avatar = ($config['allow_avatar_local']) ? '<img src="' . $config['avatar_gallery_path'] . '/' . $row['user_avatar'] . '" alt="" border="0" />' : ''; - break; - } - } + $from = (!empty($row['user_from'])) ? $row['user_from'] : ' '; + $joined = $user->format_date($row['user_regdate'], $user->lang['DATE_FORMAT']); + $posts = ($row['user_posts']) ? $row['user_posts'] : 0; - $rank_title = $rank_img = ''; - foreach ($ranksrow as $rank) + $poster_avatar = ''; + if ($row['user_avatar_type'] && $row['user_allowavatar']) + { + switch($row['user_avatar_type']) { - if (empty($row['user_rank']) && $row['user_posts'] >= $rank['rank_min']) - { - $rank_title = $rank['rank_title']; - $rank_img = (!empty($rank['rank_image'])) ? '<img src="' . $rank['rank_image'] . '" border="0" alt="' . $rank_title . '" title="' . $rank_title . '" /><br />' : ''; + case USER_AVATAR_UPLOAD: + $poster_avatar = ($config['allow_avatar_upload']) ? '<img src="' . $config['avatar_path'] . '/' . $row['user_avatar'] . '" alt="" border="0" />' : ''; break; - } - if (!empty($rank['rank_special']) && $row['user_rank'] == $rank['rank_id']) - { - $rank_title = $rank['rank_title']; - $rank_img = (!empty($rank['rank_image'])) ? '<img src="' . $rank['rank_image'] . '" border="0" alt="' . $rank_title . '" title="' . $rank_title . '" /><br />' : ''; + case USER_AVATAR_REMOTE: + $poster_avatar = ($config['allow_avatar_remote']) ? '<img src="' . $row['user_avatar'] . '" alt="" border="0" />' : ''; + break; + + case USER_AVATAR_GALLERY: + $poster_avatar = ($config['allow_avatar_local']) ? '<img src="' . $config['avatar_gallery_path'] . '/' . $row['user_avatar'] . '" alt="" border="0" />' : ''; break; - } } + } - if ($row['user_viewemail'] || $auth->acl_get('a_')) + $rank_title = $rank_img = ''; + foreach ($ranksrow as $rank) + { + if (empty($row['user_rank']) && $row['user_posts'] >= $rank['rank_min']) { - $email_uri = ($config['board_email_form']) ? "ucp.$phpEx$SID&mode=email&u=" . $user_id : 'mailto:' . $row['user_email']; - - $email_img = '<a href="' . $email_uri . '">' . $user->img('icon_email', $user->lang['Send_email']) . '</a>'; - $email = '<a href="' . $email_uri . '">' . $user->lang['Send_email'] . '</a>'; + $rank_title = $rank['rank_title']; + $rank_img = (!empty($rank['rank_image'])) ? '<img src="' . $rank['rank_image'] . '" border="0" alt="' . $rank_title . '" title="' . $rank_title . '" /><br />' : ''; + break; } - else + + if (!empty($rank['rank_special']) && $row['user_rank'] == $rank['rank_id']) { - $email_img = ' '; - $email = ' '; + $rank_title = $rank['rank_title']; + $rank_img = (!empty($rank['rank_image'])) ? '<img src="' . $rank['rank_image'] . '" border="0" alt="' . $rank_title . '" title="' . $rank_title . '" /><br />' : ''; + break; } + } - $temp_url = "ucp.$phpEx$SID&mode=viewprofile&u=$user_id"; - $profile_img = '<a href="' . $temp_url . '">' . $user->img('icon_profile', $user->lang['Read_profile']) . '</a>'; - $profile = '<a href="' . $temp_url . '">' . $user->lang['Read_profile'] . '</a>'; + if ($row['user_viewemail'] || $auth->acl_get('a_')) + { + $email_uri = ($config['board_email_form']) ? "ucp.$phpEx$SID&mode=email&u=" . $user_id : 'mailto:' . $row['user_email']; - $temp_url = "privmsg.$phpEx$SID&mode=post&u=$user_id"; - $pm_img = '<a href="' . $temp_url . '">' . $user->img('icon_pm', $user->lang['Send_private_message']) . '</a>'; - $pm = '<a href="' . $temp_url . '">' . $user->lang['Send_private_message'] . '</a>'; + $email_img = '<a href="' . $email_uri . '">' . $user->img('icon_email', $user->lang['Send_email']) . '</a>'; + $email = '<a href="' . $email_uri . '">' . $user->lang['Send_email'] . '</a>'; + } + else + { + $email_img = ' '; + $email = ' '; + } - $www_img = ($row['user_website']) ? '<a href="' . $row['user_website'] . '" target="_userwww">' . $user->img('icon_www', $user->lang['Visit_website']) . '</a>' : ''; - $www = ($row['user_website']) ? '<a href="' . $row['user_website'] . '" target="_userwww">' . $user->lang['Visit_website'] . '</a>' : ''; + $temp_url = "ucp.$phpEx$SID&mode=viewprofile&u=$user_id"; + $profile_img = '<a href="' . $temp_url . '">' . $user->img('icon_profile', $user->lang['Read_profile']) . '</a>'; + $profile = '<a href="' . $temp_url . '">' . $user->lang['Read_profile'] . '</a>'; - if (!empty($row['user_icq'])) - { - $icq_status_img = '<a href="http://wwp.icq.com/' . $row['user_icq'] . '#pager"><img src="http://web.icq.com/whitepages/online?icq=' . $row['user_icq'] . '&img=5" width="18" height="18" border="0" /></a>'; - $icq_img = '<a href="http://wwp.icq.com/scripts/search.dll?to=' . $row['user_icq'] . '">' . $user->img('icon_icq', $user->lang['ICQ']) . '</a>'; - $icq = '<a href="http://wwp.icq.com/scripts/search.dll?to=' . $row['user_icq'] . '">' . $user->lang['ICQ'] . '</a>'; - } - else - { - $icq_status_img = ''; - $icq_img = ''; - $icq = ''; - } + $temp_url = "ucp.$phpEx$SID&mode=pm&action=send&u=$user_id"; + $pm_img = '<a href="' . $temp_url . '">' . $user->img('icon_pm', $user->lang['Send_private_message']) . '</a>'; + $pm = '<a href="' . $temp_url . '">' . $user->lang['Send_private_message'] . '</a>'; - $aim_img = ($row['user_aim']) ? '<a href="aim:goim?screenname=' . $row['user_aim'] . '&message=Hello+Are+you+there?">' . $user->img('icon_aim', $user->lang['AIM']) . '</a>' : ''; - $aim = ($row['user_aim']) ? '<a href="aim:goim?screenname=' . $row['user_aim'] . '&message=Hello+Are+you+there?">' . $user->lang['AIM'] . '</a>' : ''; - - $temp_url = "ucp.$phpEx$SID&mode=viewprofile&u=$user_id"; - $msn_img = ($row['user_msnm']) ? '<a href="' . $temp_url . '">' . $user->img('icon_msnm', $user->lang['MSNM']) . '</a>' : ''; - $msn = ($row['user_msnm']) ? '<a href="' . $temp_url . '">' . $user->lang['MSNM'] . '</a>' : ''; - - $yim_img = ($row['user_yim']) ? '<a href="http://edit.yahoo.com/config/send_webmesg?.target=' . $row['user_yim'] . '&.src=pg">' . $user->img('icon_yim', $user->lang['YIM']) . '</a>' : ''; - $yim = ($row['user_yim']) ? '<a href="http://edit.yahoo.com/config/send_webmesg?.target=' . $row['user_yim'] . '&.src=pg">' . $user->lang['YIM'] . '</a>' : ''; - - $temp_url = "search.$phpEx$SID&search_author=" . urlencode($username) . "&showresults=posts"; - $search_img = '<a href="' . $temp_url . '">' . $user->img('icon_search', $user->lang['Search_user_posts']) . '</a>'; - $search = '<a href="' . $temp_url . '">' . $user->lang['Search_user_posts'] . '</a>'; - - $template->assign_block_vars('memberrow', array( - 'ROW_NUMBER' => $i + ($start + 1), - 'USERNAME' => $username, - 'FROM' => $from, - 'JOINED' => $joined, - 'POSTS' => $posts, - 'AVATAR_IMG' => $poster_avatar, - 'PROFILE_IMG' => $profile_img, - 'PROFILE' => $profile, - 'SEARCH_IMG' => $search_img, - 'SEARCH' => $search, - 'PM_IMG' => $pm_img, - 'PM' => $pm, - 'EMAIL_IMG' => $email_img, - 'EMAIL' => $email, - 'WWW_IMG' => $www_img, - 'WWW' => $www, - 'ICQ_STATUS_IMG'=> $icq_status_img, - 'ICQ_IMG' => $icq_img, - 'ICQ' => $icq, - 'AIM_IMG' => $aim_img, - 'AIM' => $aim, - 'MSN_IMG' => $msn_img, - 'MSN' => $msn, - 'YIM_IMG' => $yim_img, - 'YIM' => $yim, - 'ACTIVE' => $row['user_last_active'], - 'RANK_TITLE' => $rank, - 'RANK_IMG' => $rank_img, - - 'S_ROW_COUNT' => $i, - - 'U_VIEWPROFILE' => "ucp.$phpEx$SID&mode=viewprofile&u=$user_id") - ); + $www_img = ($row['user_website']) ? '<a href="' . $row['user_website'] . '" target="_userwww">' . $user->img('icon_www', $user->lang['Visit_website']) . '</a>' : ''; + $www = ($row['user_website']) ? '<a href="' . $row['user_website'] . '" target="_userwww">' . $user->lang['Visit_website'] . '</a>' : ''; - $i++; + if (!empty($row['user_icq'])) + { + $icq_status_img = '<a href="http://wwp.icq.com/' . $row['user_icq'] . '#pager"><img src="http://web.icq.com/whitepages/online?icq=' . $row['user_icq'] . '&img=5" width="18" height="18" border="0" /></a>'; + $icq_img = '<a href="http://wwp.icq.com/scripts/search.dll?to=' . $row['user_icq'] . '">' . $user->img('icon_icq', $user->lang['ICQ']) . '</a>'; + $icq = '<a href="http://wwp.icq.com/scripts/search.dll?to=' . $row['user_icq'] . '">' . $user->lang['ICQ'] . '</a>'; + } + else + { + $icq_status_img = ''; + $icq_img = ''; + $icq = ''; } - while ($row = $db->sql_fetchrow($result)); -} -// Generate page -$template->assign_vars(array( - 'PAGINATION' => generate_pagination($pagination_url, $total_users, $config['topics_per_page'], $start), - 'PAGE_NUMBER' => on_page($total_users, $config['topics_per_page'], $start), - - 'U_FIND_MEMBER' => "memberlist.$phpEx$SID&mode=searchuser", - 'U_SORT_USERNAME' => "memberlist.$phpEx$SID&sk=a&sd=" . (($sort_key == 'a' && $sort_dir == 'a') ? 'd' : 'a'), - 'U_SORT_FROM' => "memberlist.$phpEx$SID&sk=b&sd=" . (($sort_key == 'b' && $sort_dir == 'a') ? 'd' : 'a'), - 'U_SORT_JOINED' => "memberlist.$phpEx$SID&sk=c&sd=" . (($sort_key == 'c' && $sort_dir == 'a') ? 'd' : 'a'), - 'U_SORT_POSTS' => "memberlist.$phpEx$SID&sk=d&sd=" . (($sort_key == 'd' && $sort_dir == 'a') ? 'd' : 'a'), - 'U_SORT_EMAIL' => "memberlist.$phpEx$SID&sk=e&sd=" . (($sort_key == 'e' && $sort_dir == 'a') ? 'd' : 'a'), - 'U_SORT_WEBSITE' => "memberlist.$phpEx$SID&sk=f&sd=" . (($sort_key == 'f' && $sort_dir == 'a') ? 'd' : 'a'), - 'U_SORT_ICQ' => "memberlist.$phpEx$SID&sk=g&sd=" . (($sort_key == 'g' && $sort_dir == 'a') ? 'd' : 'a'), - 'U_SORT_AIM' => "memberlist.$phpEx$SID&sk=h&sd=" . (($sort_key == 'h' && $sort_dir == 'a') ? 'd' : 'a'), - 'U_SORT_MSN' => "memberlist.$phpEx$SID&sk=i&sd=" . (($sort_key == 'i' && $sort_dir == 'a') ? 'd' : 'a'), - 'U_SORT_YIM' => "memberlist.$phpEx$SID&sk=j&sd=" . (($sort_key == 'j' && $sort_dir == 'a') ? 'd' : 'a'), - 'U_SORT_ACTIVE' => "memberlist.$phpEx$SID&sk=k&sd=" . (($sort_key == 'k' && $sort_dir == 'a') ? 'd' : 'a'), - - 'S_MODE_SELECT' => $s_sort_key, - 'S_ORDER_SELECT'=> $s_sort_dir, - 'S_MODE_ACTION' => "memberlist.$phpEx$SID&mode=$mode&form=$form") -); + $aim_img = ($row['user_aim']) ? '<a href="aim:goim?screenname=' . $row['user_aim'] . '&message=Hello+Are+you+there?">' . $user->img('icon_aim', $user->lang['AIM']) . '</a>' : ''; + $aim = ($row['user_aim']) ? '<a href="aim:goim?screenname=' . $row['user_aim'] . '&message=Hello+Are+you+there?">' . $user->lang['AIM'] . '</a>' : ''; + + $temp_url = "ucp.$phpEx$SID&mode=viewprofile&u=$user_id"; + $msn_img = ($row['user_msnm']) ? '<a href="' . $temp_url . '">' . $user->img('icon_msnm', $user->lang['MSNM']) . '</a>' : ''; + $msn = ($row['user_msnm']) ? '<a href="' . $temp_url . '">' . $user->lang['MSNM'] . '</a>' : ''; + + $yim_img = ($row['user_yim']) ? '<a href="http://edit.yahoo.com/config/send_webmesg?.target=' . $row['user_yim'] . '&.src=pg">' . $user->img('icon_yim', $user->lang['YIM']) . '</a>' : ''; + $yim = ($row['user_yim']) ? '<a href="http://edit.yahoo.com/config/send_webmesg?.target=' . $row['user_yim'] . '&.src=pg">' . $user->lang['YIM'] . '</a>' : ''; + $template->assign_vars(array( + 'USER_PROFILE' => sprintf($user->lang['VIEWING_PROFILE'], $username), + + 'AVATAR_IMG' => $poster_avatar, + 'RANK_TITLE' => $rank, + 'RANK_IMG' => $rank_img, + + 'JOINED' => $joined, + 'POSTS' => $posts, + 'POSTS_DAY' => sprintf($user->lang['POST_DAY'], $posts_per_day), + 'POSTS_PCT' => sprintf($user->lang['POST_PCT'], $percentage), + + 'ACTIVE_FORUM' => $active_f_name, + 'ACTIVE_FORUM_POSTS'=> ($active_f_count == 1) ? sprintf($user->lang['USER_POST'], 1) : sprintf($user->lang['USER_POSTS'], $active_f_count), + 'ACTIVE_FORUM_PCT' => sprintf($user->lang['POST_PCT'], $active_f_pct), + + 'ACTIVE_TOPIC' => $active_t_name, + 'ACTIVE_TOPIC_POSTS'=> ($active_t_count == 1) ? sprintf($user->lang['USER_POST'], 1) : sprintf($user->lang['USER_POSTS'], $active_t_count), + 'ACTIVE_TOPIC_PCT' => sprintf($user->lang['POST_PCT'], $active_t_pct), + + 'PM_IMG' => $pm_img, + 'PM' => $pm, + 'EMAIL_IMG' => $email_img, + 'EMAIL' => $email, + 'WWW_IMG' => $www_img, + 'WWW' => $www, + 'ICQ_STATUS_IMG'=> $icq_status_img, + 'ICQ_IMG' => $icq_img, + 'ICQ' => $icq, + 'AIM_IMG' => $aim_img, + 'AIM' => $aim, + 'MSN_IMG' => $msn_img, + 'MSN' => $msn, + 'YIM_IMG' => $yim_img, + 'YIM' => $yim, + + 'LOCATION' => ($row['user_from']) ? $row['user_from'] : '', + 'OCCUPATION' => ($row['user_occ']) ? $row['user_occ'] : '', + 'INTERESTS' => ($row['user_interests']) ? $row['user_interests'] : '', + + 'U_ACTIVE_FORUM' => "viewforum.$phpEx$SID&f=$active_f_id", + 'U_ACTIVE_TOPIC' => "viewtopic.$phpEx$SID&t=$active_t_id",) + ); +} // Output the page $page_title = $user->lang['Memberlist']; include($phpbb_root_path . 'includes/page_header.'.$phpEx); $template->set_filenames(array( - 'body' => 'memberlist_body.html') + 'body' => ($mode != 'viewprofile') ? 'memberlist_body.html' : 'memberslist_view.html') ); make_jumpbox('viewforum.'.$phpEx); |
