Index: docs/CHANGELOG.html =================================================================== --- docs/CHANGELOG.html (revision 9710) +++ docs/CHANGELOG.html (working copy) @@ -141,6 +141,7 @@
  • [Fix] Check if template file is empty before trying to read from it. (Bug #47345 - Patch by bantu)
  • [Fix] Correct descriptions of the permissions to use BBCode, smilies, images and flash to be more relevant. (Bug #36065 - Patch by rxu)
  • [Fix] Fix style issues in print mode. (Bug #26375 - Patch by leviatan21)
  • +
  • [Fix] Correctly display links in memberlist. (Bug #26525 - Patch by leviatan21)
  • [Change] Change the data format of the default file ACM to be more secure from tampering and have better performance.
  • [Change] Add index on log_time to the log table to prevent slowdown on boards with many log entries. (Bug #44665 - Patch by bantu)
  • [Change] Template engine now permits to a limited extent variable includes.
  • Index: includes/functions.php =================================================================== --- includes/functions.php (revision 9710) +++ includes/functions.php (working copy) @@ -2265,7 +2265,11 @@ { // All kind of links $url = preg_replace('/(\?)?(&|&)?sid=[a-z0-9]+/', '', $url); - // if the sid was the first param, make the old second as first ones + } + + // Check if the first param is correct + if (strpos($url, '?') == false) + { $url = preg_replace("/$phpEx(&|&)+?/", "$phpEx?", $url); } Index: memberlist.php =================================================================== --- memberlist.php (revision 9710) +++ memberlist.php (working copy) @@ -1215,16 +1215,15 @@ $total_users = $config['num_users']; } - $s_char_options = ''; - for ($i = 97; $i < 123; $i++) + // Build a relevant pagination_url + $params = $sort_params = array(); + + if ($mode) { - $s_char_options .= ''; + $params[] = "mode=$mode"; + $sort_params[] = "mode=$mode"; } - $s_char_options .= ''; - // Build a relevant pagination_url - $params = $sort_params = array(); - // We do not use request_var() here directly to save some calls (not all variables are set) $check_params = array( 'g' => array('g', 0), @@ -1261,26 +1260,27 @@ $param = call_user_func_array('request_var', $call); $param = urlencode($key) . '=' . ((is_string($param)) ? urlencode($param) : $param); $params[] = $param; - - if ($key != 'sk' && $key != 'sd') - { - $sort_params[] = $param; - } + $sort_params[] = $param; } $u_hide_find_member = append_sid("{$phpbb_root_path}memberlist.$phpEx", "start=$start" . (!empty($params) ? '&' . implode('&', $params) : '')); - if ($mode) + $pagination_url = (sizeof($params) > 0) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", implode('&', $params)) : append_sid("{$phpbb_root_path}memberlist.$phpEx", false, false); + $sort_url = (sizeof($sort_params) > 0) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", implode('&', $sort_params)) : append_sid("{$phpbb_root_path}memberlist.$phpEx", false, false); + $list_url = preg_replace('/(\?)?(&|&)?first_char=[a-z]/', '', $sort_url); + + unset($search_params, $sort_params); + + $s_char_list = '' . $user->lang['ALL'] . ''; + $s_char_options = ''; + for ($i = 97; $i < 123; $i++) { - $params[] = "mode=$mode"; + $s_char_options .= ''; + $s_char_list .= ' ' . strtoupper(chr($i)) . ''; } - $sort_params[] = "mode=$mode"; + $s_char_options .= ''; + $s_char_list .= ' #'; - $pagination_url = append_sid("{$phpbb_root_path}memberlist.$phpEx", implode('&', $params)); - $sort_url = append_sid("{$phpbb_root_path}memberlist.$phpEx", implode('&', $sort_params)); - - unset($search_params, $sort_params); - // Some search user specific data if ($mode == 'searchuser' && ($config['load_search'] || $auth->acl_get('a_'))) { @@ -1505,20 +1505,20 @@ 'U_FIND_MEMBER' => ($config['load_search'] || $auth->acl_get('a_')) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser' . (($start) ? "&start=$start" : '') . (!empty($params) ? '&' . implode('&', $params) : '')) : '', 'U_HIDE_FIND_MEMBER' => ($mode == 'searchuser') ? $u_hide_find_member : '', - 'U_SORT_USERNAME' => $sort_url . '&sk=a&sd=' . (($sort_key == 'a' && $sort_dir == 'a') ? 'd' : 'a'), - 'U_SORT_FROM' => $sort_url . '&sk=b&sd=' . (($sort_key == 'b' && $sort_dir == 'a') ? 'd' : 'a'), - 'U_SORT_JOINED' => $sort_url . '&sk=c&sd=' . (($sort_key == 'c' && $sort_dir == 'a') ? 'd' : 'a'), - 'U_SORT_POSTS' => $sort_url . '&sk=d&sd=' . (($sort_key == 'd' && $sort_dir == 'a') ? 'd' : 'a'), - 'U_SORT_EMAIL' => $sort_url . '&sk=e&sd=' . (($sort_key == 'e' && $sort_dir == 'a') ? 'd' : 'a'), - 'U_SORT_WEBSITE' => $sort_url . '&sk=f&sd=' . (($sort_key == 'f' && $sort_dir == 'a') ? 'd' : 'a'), - 'U_SORT_LOCATION' => $sort_url . '&sk=b&sd=' . (($sort_key == 'b' && $sort_dir == 'a') ? 'd' : 'a'), - 'U_SORT_ICQ' => $sort_url . '&sk=g&sd=' . (($sort_key == 'g' && $sort_dir == 'a') ? 'd' : 'a'), - 'U_SORT_AIM' => $sort_url . '&sk=h&sd=' . (($sort_key == 'h' && $sort_dir == 'a') ? 'd' : 'a'), - 'U_SORT_MSN' => $sort_url . '&sk=i&sd=' . (($sort_key == 'i' && $sort_dir == 'a') ? 'd' : 'a'), - 'U_SORT_YIM' => $sort_url . '&sk=j&sd=' . (($sort_key == 'j' && $sort_dir == 'a') ? 'd' : 'a'), - 'U_SORT_ACTIVE' => ($auth->acl_get('u_viewonline')) ? $sort_url . '&sk=l&sd=' . (($sort_key == 'l' && $sort_dir == 'a') ? 'd' : 'a') : '', - 'U_SORT_RANK' => $sort_url . '&sk=m&sd=' . (($sort_key == 'm' && $sort_dir == 'a') ? 'd' : 'a'), - 'U_LIST_CHAR' => $sort_url . '&sk=a&sd=' . (($sort_key == 'l' && $sort_dir == 'a') ? 'd' : 'a'), + 'U_SORT_USERNAME' => reapply_sid($sort_url . '&sk=a&sd=' . (($sort_key == 'a' && $sort_dir == 'a') ? 'd' : 'a')), + 'U_SORT_FROM' => reapply_sid($sort_url . '&sk=b&sd=' . (($sort_key == 'b' && $sort_dir == 'a') ? 'd' : 'a')), + 'U_SORT_JOINED' => reapply_sid($sort_url . '&sk=c&sd=' . (($sort_key == 'c' && $sort_dir == 'a') ? 'd' : 'a')), + 'U_SORT_POSTS' => reapply_sid($sort_url . '&sk=d&sd=' . (($sort_key == 'd' && $sort_dir == 'a') ? 'd' : 'a')), + 'U_SORT_EMAIL' => reapply_sid($sort_url . '&sk=e&sd=' . (($sort_key == 'e' && $sort_dir == 'a') ? 'd' : 'a')), + 'U_SORT_WEBSITE' => reapply_sid($sort_url . '&sk=f&sd=' . (($sort_key == 'f' && $sort_dir == 'a') ? 'd' : 'a')), + 'U_SORT_LOCATION' => reapply_sid($sort_url . '&sk=b&sd=' . (($sort_key == 'b' && $sort_dir == 'a') ? 'd' : 'a')), + 'U_SORT_ICQ' => reapply_sid($sort_url . '&sk=g&sd=' . (($sort_key == 'g' && $sort_dir == 'a') ? 'd' : 'a')), + 'U_SORT_AIM' => reapply_sid($sort_url . '&sk=h&sd=' . (($sort_key == 'h' && $sort_dir == 'a') ? 'd' : 'a')), + 'U_SORT_MSN' => reapply_sid($sort_url . '&sk=i&sd=' . (($sort_key == 'i' && $sort_dir == 'a') ? 'd' : 'a')), + 'U_SORT_YIM' => reapply_sid($sort_url . '&sk=j&sd=' . (($sort_key == 'j' && $sort_dir == 'a') ? 'd' : 'a')), + 'U_SORT_ACTIVE' => ($auth->acl_get('u_viewonline')) ? reapply_sid($sort_url . '&sk=l&sd=' . (($sort_key == 'l' && $sort_dir == 'a') ? 'd' : 'a')) : '', + 'U_SORT_RANK' => reapply_sid($sort_url . '&sk=m&sd=' . (($sort_key == 'm' && $sort_dir == 'a') ? 'd' : 'a')), + 'U_LIST_CHAR' => reapply_sid($sort_url . '&sk=a&sd=' . (($sort_key == 'l' && $sort_dir == 'a') ? 'd' : 'a')), 'S_SHOW_GROUP' => ($mode == 'group') ? true : false, 'S_VIEWONLINE' => $auth->acl_get('u_viewonline'), @@ -1526,6 +1526,7 @@ 'S_MODE_SELECT' => $s_sort_key, 'S_ORDER_SELECT' => $s_sort_dir, 'S_CHAR_OPTIONS' => $s_char_options, + 'S_CHAR_LIST' => $s_char_list, 'S_MODE_ACTION' => $pagination_url) ); } Index: styles/prosilver/template/memberlist_body.html =================================================================== --- styles/prosilver/template/memberlist_body.html (revision 9710) +++ styles/prosilver/template/memberlist_body.html (working copy) @@ -32,36 +32,8 @@