PageRenderTime 35ms CodeModel.GetById 11ms RepoModel.GetById 0ms app.codeStats 0ms

/modules/PNphpBB2/memberlist.php

https://gitlab.com/bulwye/reliquerunt
PHP | 361 lines | 302 code | 24 blank | 35 comment | 12 complexity | 1593fb66a932866d6d979ea94785ae4d MD5 | raw file
  1. <?php
  2. /***************************************************************************
  3. * memberlist.php
  4. * -------------------
  5. * begin : Friday, May 11, 2001
  6. * copyright : (C) 2001 The phpBB Group
  7. * email : support@phpbb.com
  8. *
  9. * $Id: memberlist.php,v 1.2 2006/05/03 12:40:49 adrianc602 Exp $
  10. *
  11. ***************************************************************************/
  12. /***************************************************************************
  13. *
  14. * This program is free software; you can redistribute it and/or modify
  15. * it under the terms of the GNU General Public License as published by
  16. * the Free Software Foundation; either version 2 of the License, or
  17. * (at your option) any later version.
  18. *
  19. ***************************************************************************/
  20. // Begin PNphpBB2 Module
  21. if (!defined("LOADED_AS_MODULE")) {
  22. die ("You can't access this file directly...");
  23. }
  24. // global $pnconfig;
  25. $pntable = pnDBGetTables();
  26. $ModName = basename( dirname( __FILE__ ) );
  27. // End PNphpBB2 Module
  28. define('IN_PHPBB', true);
  29. // Begin PNphpBB2 Module
  30. // $phpbb_root_path = './';
  31. $phpbb_root_path = './modules/' . $ModName . '/';
  32. // End PNphpBB2 Module
  33. include($phpbb_root_path . 'extension.inc');
  34. include($phpbb_root_path . 'common.'.$phpEx);
  35. //
  36. // Start session management
  37. //
  38. $userdata = session_pagestart($user_ip, PAGE_VIEWMEMBERS);
  39. init_userprefs($userdata);
  40. //
  41. // End session management
  42. //
  43. // Begin PNphpBB2 Module
  44. if (!$userdata['session_logged_in'])
  45. {
  46. redirect(append_sid("login.$phpEx?redirect=memberlist.$phpEx", true));
  47. }
  48. // End PNphpBB2 Module
  49. $start = ( isset($HTTP_GET_VARS['start']) ) ? intval($HTTP_GET_VARS['start']) : 0;
  50. if ( isset($HTTP_GET_VARS['mode']) || isset($HTTP_POST_VARS['mode']) )
  51. {
  52. $mode = ( isset($HTTP_POST_VARS['mode']) ) ? htmlspecialchars($HTTP_POST_VARS['mode']) : htmlspecialchars($HTTP_GET_VARS['mode']);
  53. }
  54. else
  55. {
  56. $mode = 'joined';
  57. }
  58. if(isset($HTTP_POST_VARS['order']))
  59. {
  60. $sort_order = ($HTTP_POST_VARS['order'] == 'ASC') ? 'ASC' : 'DESC';
  61. }
  62. else if(isset($HTTP_GET_VARS['order']))
  63. {
  64. $sort_order = ($HTTP_GET_VARS['order'] == 'ASC') ? 'ASC' : 'DESC';
  65. }
  66. else
  67. {
  68. $sort_order = 'ASC';
  69. }
  70. //
  71. // Memberlist sorting
  72. //
  73. $mode_types_text = array($lang['Sort_Joined'], $lang['Sort_Username'], $lang['Sort_Location'], $lang['Sort_Posts'], $lang['Sort_Email'], $lang['Sort_Website'], $lang['Sort_Top_Ten']);
  74. $mode_types = array('joined', 'username', 'location', 'posts', 'email', 'website', 'topten');
  75. $select_sort_mode = '<select name="mode">';
  76. for($i = 0; $i < count($mode_types_text); $i++)
  77. {
  78. $selected = ( $mode == $mode_types[$i] ) ? ' selected="selected"' : '';
  79. $select_sort_mode .= '<option value="' . $mode_types[$i] . '"' . $selected . '>' . $mode_types_text[$i] . '</option>';
  80. }
  81. $select_sort_mode .= '</select>';
  82. $select_sort_order = '<select name="order">';
  83. if($sort_order == 'ASC')
  84. {
  85. $select_sort_order .= '<option value="ASC" selected="selected">' . $lang['Sort_Ascending'] . '</option><option value="DESC">' . $lang['Sort_Descending'] . '</option>';
  86. }
  87. else
  88. {
  89. $select_sort_order .= '<option value="ASC">' . $lang['Sort_Ascending'] . '</option><option value="DESC" selected="selected">' . $lang['Sort_Descending'] . '</option>';
  90. }
  91. $select_sort_order .= '</select>';
  92. //
  93. // Generate page
  94. //
  95. $page_title = $lang['Memberlist'];
  96. include($phpbb_root_path . 'includes/page_header.'.$phpEx);
  97. $template->set_filenames(array(
  98. 'body' => 'memberlist_body.tpl')
  99. );
  100. make_jumpbox('viewforum.'.$phpEx);
  101. $template->assign_vars(array(
  102. 'L_SELECT_SORT_METHOD' => $lang['Select_sort_method'],
  103. 'L_EMAIL' => $lang['Email'],
  104. 'L_WEBSITE' => $lang['Website'],
  105. 'L_FROM' => $lang['Location'],
  106. 'L_ORDER' => $lang['Order'],
  107. 'L_SORT' => $lang['Sort'],
  108. 'L_SUBMIT' => $lang['Sort'],
  109. 'L_AIM' => $lang['AIM'],
  110. 'L_YIM' => $lang['YIM'],
  111. 'L_MSNM' => $lang['MSNM'],
  112. 'L_ICQ' => $lang['ICQ'],
  113. 'L_JOINED' => $lang['Joined'],
  114. 'L_POSTS' => $lang['Posts'],
  115. 'L_PM' => $lang['Private_Message'],
  116. 'S_MODE_SELECT' => $select_sort_mode,
  117. 'S_ORDER_SELECT' => $select_sort_order,
  118. 'S_MODE_ACTION' => append_sid("memberlist.$phpEx"))
  119. );
  120. switch( $mode )
  121. {
  122. case 'joined':
  123. $order_by = "user_regdate $sort_order LIMIT $start, " . $board_config['topics_per_page'];
  124. break;
  125. case 'username':
  126. $order_by = "username $sort_order LIMIT $start, " . $board_config['topics_per_page'];
  127. break;
  128. case 'location':
  129. $order_by = "user_from $sort_order LIMIT $start, " . $board_config['topics_per_page'];
  130. break;
  131. case 'posts':
  132. $order_by = "user_posts $sort_order LIMIT $start, " . $board_config['topics_per_page'];
  133. break;
  134. case 'email':
  135. $order_by = "user_email $sort_order LIMIT $start, " . $board_config['topics_per_page'];
  136. break;
  137. case 'website':
  138. $order_by = "user_website $sort_order LIMIT $start, " . $board_config['topics_per_page'];
  139. break;
  140. case 'topten':
  141. $order_by = "user_posts $sort_order LIMIT 10";
  142. break;
  143. default:
  144. $order_by = "user_regdate $sort_order LIMIT $start, " . $board_config['topics_per_page'];
  145. break;
  146. }
  147. $sql = "SELECT username, user_id, user_viewemail, user_posts, user_regdate, user_from, user_website, user_email, user_icq, user_aim, user_yim, user_msnm, user_avatar, user_avatar_type, user_allowavatar
  148. FROM " . USERS_TABLE . "
  149. WHERE user_id <> " . ANONYMOUS . "
  150. ORDER BY $order_by";
  151. if( !($result = $db->sql_query($sql)) )
  152. {
  153. message_die(GENERAL_ERROR, 'Could not query users', '', __LINE__, __FILE__, $sql);
  154. }
  155. if ( $row = $db->sql_fetchrow($result) )
  156. {
  157. $i = 0;
  158. do
  159. {
  160. $username = $row['username'];
  161. $user_id = $row['user_id'];
  162. $from = ( !empty($row['user_from']) ) ? $row['user_from'] : '&nbsp;';
  163. $joined = create_date($lang['DATE_FORMAT'], $row['user_regdate'], $board_config['board_timezone']);
  164. $posts = ( $row['user_posts'] ) ? $row['user_posts'] : 0;
  165. $poster_avatar = '';
  166. if ( $row['user_avatar_type'] && $user_id != ANONYMOUS && $row['user_allowavatar'] )
  167. {
  168. switch( $row['user_avatar_type'] )
  169. {
  170. case USER_AVATAR_UPLOAD:
  171. $poster_avatar = ( $board_config['allow_avatar_upload'] ) ? '<img src="' . $board_config['avatar_path'] . '/' . $row['user_avatar'] . '" alt="" border="0" />' : '';
  172. break;
  173. case USER_AVATAR_REMOTE:
  174. $poster_avatar = ( $board_config['allow_avatar_remote'] ) ? '<img src="' . $row['user_avatar'] . '" alt="" border="0" />' : '';
  175. break;
  176. case USER_AVATAR_GALLERY:
  177. // Begin PNphpBB2 Module (PostNuke avatar patch)
  178. // $poster_avatar = ( $board_config['allow_avatar_local'] ) ? '<img src="' . $board_config['avatar_gallery_path'] . '/' . $row['user_avatar'] . '" alt="" border="0" />' : '';
  179. if (!preg_match('/\//', $row['user_avatar']))
  180. {
  181. $poster_avatar = ( $board_config['allow_avatar_local'] ) ? '<img src="' . './images/avatar/' . $row['user_avatar'] . '" alt="" border="0" />' : '';
  182. }
  183. else
  184. {
  185. $poster_avatar = ( $board_config['allow_avatar_local'] ) ? '<img src="' . $board_config['avatar_gallery_path'] . '/' . $row['user_avatar'] . '" alt="" border="0" />' : '';
  186. }
  187. // End PNphpBB2 Module (PostNuke avatar patch)
  188. break;
  189. }
  190. }
  191. if ( !empty($row['user_viewemail']) || $userdata['user_level'] == ADMIN )
  192. {
  193. $email_uri = ( $board_config['board_email_form'] ) ? append_sid("profile.$phpEx?mode=email&amp;" . POST_USERS_URL .'=' . $user_id) : 'mailto:' . $row['user_email'];
  194. $email_img = '<a href="' . $email_uri . '"><img src="' . $images['icon_email'] . '" alt="' . $lang['Send_email'] . '" title="' . $lang['Send_email'] . '" border="0" /></a>';
  195. $email = '<a href="' . $email_uri . '">' . $lang['Send_email'] . '</a>';
  196. }
  197. else
  198. {
  199. $email_img = '&nbsp;';
  200. $email = '&nbsp;';
  201. }
  202. $temp_url = append_sid("profile.$phpEx?mode=viewprofile&amp;" . POST_USERS_URL . "=$user_id");
  203. $profile_img = '<a href="' . $temp_url . '"><img src="' . $images['icon_profile'] . '" alt="' . $lang['Read_profile'] . '" title="' . $lang['Read_profile'] . '" border="0" /></a>';
  204. $profile = '<a href="' . $temp_url . '">' . $lang['Read_profile'] . '</a>';
  205. // Begin PNphpBB2 Module
  206. // $temp_url = append_sid("privmsg.$phpEx?mode=post&amp;" . POST_USERS_URL . "=$user_id");
  207. if ($board_config['pnphpbb2_pn_pm'])
  208. {
  209. $temp_url = ("modules.php?op=modload&name=Messages&file=replypmsg&send=1&uname=" . urlencode($username));
  210. }
  211. else
  212. {
  213. $temp_url = append_sid("privmsg.$phpEx?mode=post&amp;" . POST_USERS_URL . "=$user_id");
  214. }
  215. // End PNphpBB2 Module
  216. $pm_img = '<a href="' . $temp_url . '"><img src="' . $images['icon_pm'] . '" alt="' . $lang['Send_private_message'] . '" title="' . $lang['Send_private_message'] . '" border="0" /></a>';
  217. $pm = '<a href="' . $temp_url . '">' . $lang['Send_private_message'] . '</a>';
  218. $www_img = ( $row['user_website'] ) ? '<a href="' . $row['user_website'] . '" target="_userwww"><img src="' . $images['icon_www'] . '" alt="' . $lang['Visit_website'] . '" title="' . $lang['Visit_website'] . '" border="0" /></a>' : '';
  219. $www = ( $row['user_website'] ) ? '<a href="' . $row['user_website'] . '" target="_userwww">' . $lang['Visit_website'] . '</a>' : '';
  220. if ( !empty($row['user_icq']) )
  221. {
  222. $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>';
  223. $icq_img = '<a href="http://wwp.icq.com/scripts/search.dll?to=' . $row['user_icq'] . '"><img src="' . $images['icon_icq'] . '" alt="' . $lang['ICQ'] . '" title="' . $lang['ICQ'] . '" border="0" /></a>';
  224. $icq = '<a href="http://wwp.icq.com/scripts/search.dll?to=' . $row['user_icq'] . '">' . $lang['ICQ'] . '</a>';
  225. }
  226. else
  227. {
  228. $icq_status_img = '';
  229. $icq_img = '';
  230. $icq = '';
  231. }
  232. $aim_img = ( $row['user_aim'] ) ? '<a href="aim:goim?screenname=' . $row['user_aim'] . '&amp;message=Hello+Are+you+there?"><img src="' . $images['icon_aim'] . '" alt="' . $lang['AIM'] . '" title="' . $lang['AIM'] . '" border="0" /></a>' : '';
  233. $aim = ( $row['user_aim'] ) ? '<a href="aim:goim?screenname=' . $row['user_aim'] . '&amp;message=Hello+Are+you+there?">' . $lang['AIM'] . '</a>' : '';
  234. $temp_url = append_sid("profile.$phpEx?mode=viewprofile&amp;" . POST_USERS_URL . "=$user_id");
  235. $msn_img = ( $row['user_msnm'] ) ? '<a href="' . $temp_url . '"><img src="' . $images['icon_msnm'] . '" alt="' . $lang['MSNM'] . '" title="' . $lang['MSNM'] . '" border="0" /></a>' : '';
  236. $msn = ( $row['user_msnm'] ) ? '<a href="' . $temp_url . '">' . $lang['MSNM'] . '</a>' : '';
  237. $yim_img = ( $row['user_yim'] ) ? '<a href="http://edit.yahoo.com/config/send_webmesg?.target=' . $row['user_yim'] . '&amp;.src=pg"><img src="' . $images['icon_yim'] . '" alt="' . $lang['YIM'] . '" title="' . $lang['YIM'] . '" border="0" /></a>' : '';
  238. $yim = ( $row['user_yim'] ) ? '<a href="http://edit.yahoo.com/config/send_webmesg?.target=' . $row['user_yim'] . '&amp;.src=pg">' . $lang['YIM'] . '</a>' : '';
  239. $temp_url = append_sid("search.$phpEx?search_author=" . urlencode($username) . "&amp;showresults=posts");
  240. $search_img = '<a href="' . $temp_url . '"><img src="' . $images['icon_search'] . '" alt="' . sprintf($lang['Search_user_posts'], $username) . '" title="' . sprintf($lang['Search_user_posts'], $username) . '" border="0" /></a>';
  241. $search = '<a href="' . $temp_url . '">' . sprintf($lang['Search_user_posts'], $username) . '</a>';
  242. // Begin PNphpBB2 Module
  243. // $row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2'];
  244. // $row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2'];
  245. $row_color = ( !($i % 2) ) ? $phpbb_theme['td_color1'] : $phpbb_theme['td_color2'];
  246. $row_class = ( !($i % 2) ) ? $phpbb_theme['td_class1'] : $phpbb_theme['td_class2'];
  247. // End PNphpBB2 Module
  248. $template->assign_block_vars('memberrow', array(
  249. 'ROW_NUMBER' => $i + ( $start + 1 ),
  250. 'ROW_COLOR' => '#' . $row_color,
  251. 'ROW_CLASS' => $row_class,
  252. /* Begin PNphpBB2 Module */
  253. /* 'USERNAME' => $username, */
  254. 'USERNAME' => pnVarPrepForDisplay($username),
  255. /* End PNphpBB2 Module */
  256. 'FROM' => $from,
  257. 'JOINED' => $joined,
  258. 'POSTS' => $posts,
  259. 'AVATAR_IMG' => $poster_avatar,
  260. 'PROFILE_IMG' => $profile_img,
  261. 'PROFILE' => $profile,
  262. 'SEARCH_IMG' => $search_img,
  263. 'SEARCH' => $search,
  264. 'PM_IMG' => $pm_img,
  265. 'PM' => $pm,
  266. 'EMAIL_IMG' => $email_img,
  267. 'EMAIL' => $email,
  268. 'WWW_IMG' => $www_img,
  269. 'WWW' => $www,
  270. 'ICQ_STATUS_IMG' => $icq_status_img,
  271. 'ICQ_IMG' => $icq_img,
  272. 'ICQ' => $icq,
  273. 'AIM_IMG' => $aim_img,
  274. 'AIM' => $aim,
  275. 'MSN_IMG' => $msn_img,
  276. 'MSN' => $msn,
  277. 'YIM_IMG' => $yim_img,
  278. 'YIM' => $yim,
  279. 'U_VIEWPROFILE' => append_sid("profile.$phpEx?mode=viewprofile&amp;" . POST_USERS_URL . "=$user_id"))
  280. );
  281. $i++;
  282. }
  283. while ( $row = $db->sql_fetchrow($result) );
  284. $db->sql_freeresult($result);
  285. }
  286. if ( $mode != 'topten' || $board_config['topics_per_page'] < 10 )
  287. {
  288. $sql = "SELECT count(*) AS total
  289. FROM " . USERS_TABLE . "
  290. WHERE user_id <> " . ANONYMOUS;
  291. if ( !($result = $db->sql_query($sql)) )
  292. {
  293. message_die(GENERAL_ERROR, 'Error getting total users', '', __LINE__, __FILE__, $sql);
  294. }
  295. if ( $total = $db->sql_fetchrow($result) )
  296. {
  297. $total_members = $total['total'];
  298. // Begin PNphpBB2 Module
  299. // -- Remove --
  300. // $pagination = generate_pagination("memberlist.$phpEx?mode=$mode&amp;order=$sort_order", $total_members, $board_config['topics_per_page'], $start). '&nbsp;';
  301. // -- Add --
  302. generate_pagination("memberlist.$phpEx?mode=$mode&order=$sort_order", $total_members, $board_config['topics_per_page'], $start);
  303. // End PNphpBB2 Module
  304. }
  305. $db->sql_freeresult($result);
  306. }
  307. else
  308. {
  309. $pagination = '&nbsp;';
  310. $total_members = 10;
  311. }
  312. $template->assign_vars(array(
  313. 'PAGINATION' => $pagination,
  314. 'PAGE_NUMBER' => sprintf($lang['Page_of'], ( floor( $start / $board_config['topics_per_page'] ) + 1 ), ceil( $total_members / $board_config['topics_per_page'] )),
  315. 'L_GOTO_PAGE' => $lang['Goto_page'])
  316. );
  317. $template->pparse('body');
  318. include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
  319. ?>