[R45phpbbmods-checkins] user_search/admin admin_user_search.php,1.6,1.7
Brought to you by:
rasadam
|
From: Adam A. <ra...@us...> - 2004-05-19 21:44:51
|
Update of /cvsroot/r45phpbbmods/user_search/admin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10114/admin Modified Files: admin_user_search.php Log Message: Preparing for RC2 Index: admin_user_search.php =================================================================== RCS file: /cvsroot/r45phpbbmods/user_search/admin/admin_user_search.php,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** admin_user_search.php 3 May 2004 06:36:24 -0000 1.6 --- admin_user_search.php 19 May 2004 21:44:41 -0000 1.7 *************** *** 35,38 **** --- 35,39 ---- require($phpbb_root_path . 'extension.inc'); require('./pagestart.' . $phpEx); + require($phpbb_root_path . 'includes/functions_selects.' . $phpEx); include($phpbb_root_path.'language/lang_' . $board_config['default_lang'] . '/lang_user_search.'.$phpEx); *************** *** 64,67 **** --- 65,104 ---- } + $language_list = language_select('', 'language_type'); + $timezone_list = tz_select('', 'timezone_type'); + + $sql = "SELECT f.forum_id, f.forum_name, c.cat_id, c.cat_title + FROM ( ". FORUMS_TABLE ." AS f INNER JOIN ". CATEGORIES_TABLE ." AS c ON c.cat_id = f.cat_id ) + ORDER BY c.cat_order, f.forum_order ASC"; + + if(!$result = $db->sql_query($sql)) + { + message_die(GENERAL_ERROR, 'Could not select forum data', '', __LINE__, __FILE__, $sql); + } + + $forums = array(); + + if($db->sql_numrows($result) != 0) + { + $template->assign_block_vars('forums_exist', array()); + + $last_cat_id = -1; + + $forums_list = ''; + + while($row = $db->sql_fetchrow($result)) + { + if($row['cat_id'] != $last_cat_id) + { + $forums_list .= '<optgroup label="'.$row['cat_title'].'">'; + $last_cat_id = $row['cat_id']; + } + + $forums_list .= '<option value="'.$row['forum_id'].'">'.$row['forum_name'].'</option>'; + } + } + + $styles_list = style_select('', 'style_type'); + $template->set_filenames(array( "body" => "admin/admin_user_search_form.tpl" *************** *** 81,84 **** --- 118,122 ---- 'L_BEFORE' => $lang['Before'], 'L_AFTER' => $lang['After'], + 'L_REGEX' => $lang['Regular_expression'], 'L_JOIN_DATE_EXPLAIN' => $lang['Search_users_joined_explain'], 'L_GROUP_MEMBERS' => $lang['Group_Members'], *************** *** 109,113 **** 'L_TIMEZONE_EXPLAIN' => $lang['Search_users_timezone_explain'], 'L_STYLE' => $lang['Board_style'], ! 'L_STYLE_EXPLAIN' => $lang['Search_users_timezone_explain'], 'L_MODERATORS_OF' => $lang['Moderators_of'], 'L_MODERATORS_OF_EXPLAIN' => $lang['Search_users_moderators_explain'], --- 147,151 ---- 'L_TIMEZONE_EXPLAIN' => $lang['Search_users_timezone_explain'], 'L_STYLE' => $lang['Board_style'], ! 'L_STYLE_EXPLAIN' => $lang['Search_users_style_explain'], 'L_MODERATORS_OF' => $lang['Moderators_of'], 'L_MODERATORS_OF_EXPLAIN' => $lang['Search_users_moderators_explain'], *************** *** 118,125 **** 'DAY' => date("d"), 'GROUP_LIST' => $group_list, ! 'LANGUAGE_LIST' => ! 'TIMEZONE_LIST' => ! 'FORUMS_LIST' => ! 'STYLE_LIST' => 'S_SEARCH_ACTION' => append_sid("admin_user_search.$phpEx") --- 156,163 ---- 'DAY' => date("d"), 'GROUP_LIST' => $group_list, ! 'LANGUAGE_LIST' => $language_list, ! 'TIMEZONE_LIST' => $timezone_list, ! 'FORUMS_LIST' => $forums_list, ! 'STYLE_LIST' => $styles_list, 'S_SEARCH_ACTION' => append_sid("admin_user_search.$phpEx") *************** *** 151,154 **** --- 189,216 ---- $mode = 'search_group'; } + else if(isset($HTTP_POST_VARS['search_postcount'])||isset($HTTP_GET_VARS['search_postcount'])) + { + $mode = 'search_postcount'; + } + else if(isset($HTTP_POST_VARS['search_userfield'])||isset($HTTP_GET_VARS['search_userfield'])) + { + $mode = 'search_userfield'; + } + else if(isset($HTTP_POST_VARS['search_language'])||isset($HTTP_GET_VARS['search_language'])) + { + $mode = 'search_language'; + } + else if(isset($HTTP_POST_VARS['search_timezone'])||isset($HTTP_GET_VARS['search_timezone'])) + { + $mode = 'search_timezone'; + } + else if(isset($HTTP_POST_VARS['search_style'])||isset($HTTP_GET_VARS['search_style'])) + { + $mode = 'search_style'; + } + else if(isset($HTTP_POST_VARS['search_moderators'])||isset($HTTP_GET_VARS['search_moderators'])) + { + $mode = 'search_moderators'; + } else if(isset($HTTP_POST_VARS['search_misc'])||isset($HTTP_GET_VARS['search_misc'])) { *************** *** 156,164 **** } ! // validate fields switch($mode) { case 'search_username': $username = ( isset($HTTP_GET_VARS['username']) ) ? urldecode($HTTP_GET_VARS['username']) : $HTTP_POST_VARS['username']; if(!$username) --- 218,227 ---- } ! // validate fields (that they exist) switch($mode) { case 'search_username': $username = ( isset($HTTP_GET_VARS['username']) ) ? urldecode($HTTP_GET_VARS['username']) : $HTTP_POST_VARS['username']; + $regex = ( $HTTP_POST_VARS['search_username_regex'] ) ? true : ( $HTTP_GET_VARS['regex'] ) ? true : false; if(!$username) *************** *** 170,173 **** --- 233,237 ---- case 'search_email': $email = ( isset($HTTP_GET_VARS['email']) ) ? urldecode($HTTP_GET_VARS['email']) : $HTTP_POST_VARS['email']; + $regex = ( $HTTP_POST_VARS['search_email_regex'] ) ? true : ( $HTTP_GET_VARS['regex'] ) ? true : false; if(!$email) *************** *** 207,216 **** $postcount_value = ( isset($HTTP_POST_VARS['postcount_value'] ) ) ? $HTTP_POST_VARS['postcount_value'] : urldecode($HTTP_GET_VARS['postcount_value']); ! if(!$postcount_type || !$postcount_value) { message_die(GENERAL_MESSAGE, $lang['Search_invalid_postcount']); } break; ! case 'search_miscfield': break; case 'search_misc': --- 271,325 ---- $postcount_value = ( isset($HTTP_POST_VARS['postcount_value'] ) ) ? $HTTP_POST_VARS['postcount_value'] : urldecode($HTTP_GET_VARS['postcount_value']); ! if(!$postcount_type || ( !$postcount_value && $postcount_value != 0)) { message_die(GENERAL_MESSAGE, $lang['Search_invalid_postcount']); } break; ! case 'search_userfield': ! $userfield_type = ( isset($HTTP_POST_VARS['userfield_type'] ) ) ? $HTTP_POST_VARS['userfield_type'] : urldecode($HTTP_GET_VARS['userfield_type']); ! $userfield_value = ( isset($HTTP_POST_VARS['userfield_value'] ) ) ? $HTTP_POST_VARS['userfield_value'] : urldecode($HTTP_GET_VARS['userfield_value']); ! $regex = ( $HTTP_POST_VARS['search_userfield_regex'] ) ? true : ( $HTTP_GET_VARS['regex'] ) ? true : false; ! ! if(!$userfield_type || !$userfield_value) ! { ! message_die(GENERAL_MESSAGE, $lang['Search_invalid_userfield']); ! } ! ! break; ! case 'search_language': ! $language_type = ( isset($HTTP_POST_VARS['language_type'] ) ) ? $HTTP_POST_VARS['language_type'] : urldecode($HTTP_GET_VARS['language_type']); ! ! if(!$language_type) ! { ! message_die(GENERAL_MESSAGE, $lang['Search_invalid_language']); ! } ! ! break; ! case 'search_timezone': ! $timezone_type = ( isset($HTTP_POST_VARS['timezone_type'] ) ) ? $HTTP_POST_VARS['timezone_type'] : urldecode($HTTP_GET_VARS['timezone_type']); ! ! if(!$timezone_type && $timezone_type != 0) ! { ! message_die(GENERAL_MESSAGE, $lang['Search_invalid_timezone']); ! } ! ! break; ! case 'search_style': ! $style_type = ( isset($HTTP_POST_VARS['style_type'] ) ) ? $HTTP_POST_VARS['style_type'] : urldecode($HTTP_GET_VARS['style_type']); ! ! if(!$style_type) ! { ! message_die(GENERAL_MESSAGE, $lang['Search_invalid_style']); ! } ! ! break; ! case 'search_moderators': ! $moderators_forum = ( isset($HTTP_POST_VARS['moderators_forum'] ) ) ? $HTTP_POST_VARS['moderators_forum'] : urldecode($HTTP_GET_VARS['moderators_forum']); ! ! if(!$moderators_forum) ! { ! message_die(GENERAL_MESSAGE, $lang['Search_invalid_moderators']); ! } ! break; case 'search_misc': *************** *** 228,231 **** --- 337,364 ---- FROM ".USERS_TABLE." AS u"; + $lower_b = 'LOWER('; + $lower_e = ')'; + if($regex) + { + switch(SQL_LAYER) + { + case 'postgres': + $op = '~'; + break; + case 'oracle': + // Oracle uses a different syntax, we'll handle that a little later + break; + case 'mysql': + case 'mysql4': + $op = 'REGEXP'; + break; + default: + message_die(GENERAL_MESSAGE, $lang['Search_no_regexp']); + } + + $lower_b = ''; + $lower_e = ''; + } + // validate data & prepare sql switch($mode) *************** *** 235,239 **** $text = sprintf($lang['Search_for_username'], strip_tags(htmlspecialchars($username))); ! $username = preg_replace('/\*/', '%', trim(strip_tags(strtolower($username)))); if($username == '') --- 368,385 ---- $text = sprintf($lang['Search_for_username'], strip_tags(htmlspecialchars($username))); ! ! if(!$regex) ! { ! $username = preg_replace('/\*/', '%', trim(strip_tags(strtolower($username)))); ! ! if(strstr($username, '%')) ! { ! $op = 'LIKE'; ! } ! else ! { ! $op = '='; ! } ! } if($username == '') *************** *** 242,262 **** } ! if(strstr($username, '%')) { ! $op = 'LIKE'; } else ! { ! $op = '='; } - - $total_sql .= "SELECT COUNT(user_id) AS total - FROM ".USERS_TABLE." - WHERE LOWER(username) $op '".str_replace("\'", "''", $username)."' - AND user_id <> ".ANONYMOUS; - - $select_sql .= " WHERE LOWER(u.username) $op '".str_replace("\'", "''", $username)."' - AND u.user_id <> ".ANONYMOUS; - break; case 'search_email': --- 388,411 ---- } ! if($regex && SQL_LAYER == 'oracle') { ! $total_sql .= "SELECT COUNT(user_id) AS total ! FROM ".USERS_TABLE." ! WHERE REGEXP_LIKE(username, '".str_replace("\'", "''", $username)."') ! AND user_id <> ".ANONYMOUS; ! ! $select_sql .= " WHERE REGEXP_LIKE(u.username, '".str_replace("\'", "''", $username)."') ! AND u.user_id <> ".ANONYMOUS; } else ! { ! $total_sql .= "SELECT COUNT(user_id) AS total ! FROM ".USERS_TABLE." ! WHERE {$lower_b}username{$lower_e} $op '".str_replace("\'", "''", $username)."' ! AND user_id <> ".ANONYMOUS; ! ! $select_sql .= " WHERE {$lower_b}u.username{$lower_e} $op '".str_replace("\'", "''", $username)."' ! AND u.user_id <> ".ANONYMOUS; } break; case 'search_email': *************** *** 265,269 **** $text = sprintf($lang['Search_for_email'], strip_tags(htmlspecialchars($email))); ! $email = preg_replace('/\*/', '%', trim(strip_tags(strtolower($email)))); if($email == '') --- 414,430 ---- $text = sprintf($lang['Search_for_email'], strip_tags(htmlspecialchars($email))); ! if(!$regex) ! { ! $email = preg_replace('/\*/', '%', trim(strip_tags(strtolower($email)))); ! ! if(strstr($email, '%')) ! { ! $op = 'LIKE'; ! } ! else ! { ! $op = '='; ! } ! } if($email == '') *************** *** 271,292 **** message_die(GENERAL_MESSAGE, $lang['Search_invalid_email']); } ! ! if(strstr($email, '%')) { ! $op = 'LIKE'; } else ! { ! $op = '='; } - - $total_sql .= "SELECT COUNT(user_id) AS total - FROM ".USERS_TABLE." - WHERE LOWER(user_email) $op '".str_replace("\'", "''", $email)."' - AND user_id <> ".ANONYMOUS; - - $select_sql .= " WHERE LOWER(u.user_email) $op '".str_replace("\'", "''", $email)."' - AND u.user_id <> ".ANONYMOUS; - break; case 'search_ip': --- 432,456 ---- message_die(GENERAL_MESSAGE, $lang['Search_invalid_email']); } ! ! if($regex && SQL_LAYER == 'oracle') { ! $total_sql .= "SELECT COUNT(user_id) AS total ! FROM ".USERS_TABLE." ! WHERE REGEXP_LIKE(user_email, '".str_replace("\'", "''", $email)."') ! AND user_id <> ".ANONYMOUS; ! ! $select_sql .= " WHERE REGEXP_LIKE(u.user_email, '".str_replace("\'", "''", $email)."') ! AND u.user_id <> ".ANONYMOUS; } else ! { ! $total_sql .= "SELECT COUNT(user_id) AS total ! FROM ".USERS_TABLE." ! WHERE {$lower_b}user_email{$lower_e} $op '".str_replace("\'", "''", $email)."' ! AND user_id <> ".ANONYMOUS; ! ! $select_sql .= " WHERE {$lower_b}u.user_email{$lower_e} $op '".str_replace("\'", "''", $email)."' ! AND u.user_id <> ".ANONYMOUS; } break; case 'search_ip': *************** *** 576,584 **** { $range = preg_split('/[-\s]+/', $postcount_value); ! $range_begin = intval($range[0]); $range_end = intval($range[1]); ! if($range_begin < $range_end) { message_die(GENERAL_MESSAGE, $lang['Search_invalid_postcount']); --- 740,748 ---- { $range = preg_split('/[-\s]+/', $postcount_value); ! $range_begin = intval($range[0]); $range_end = intval($range[1]); ! if($range_begin > $range_end) { message_die(GENERAL_MESSAGE, $lang['Search_invalid_postcount']); *************** *** 617,622 **** break; ! case 'search_miscfield': ! break; case 'search_misc': default: --- 781,978 ---- break; ! case 'search_userfield': ! $base_url .= "&search_userfield=true&userfield_type=".urlencode($userfield_type)."&userfield_value=".urlencode($userfield_value); ! ! $text = strip_tags(htmlspecialchars($userfield_value)); ! ! if(!$regex) ! { ! $userfield_value = preg_replace('/\*/', '%', trim(strip_tags(strtolower($userfield_value)))); ! ! if(strstr($userfield_value, '%')) ! { ! $op = 'LIKE'; ! } ! else ! { ! $op = '='; ! } ! } ! ! if($userfield_value == '') ! { ! message_die(GENERAL_MESSAGE, $lang['Search_invalid_userfield']); ! } ! ! $userfield_type = trim(strtolower($userfield_type)); ! ! switch($userfield_type) ! { ! case 'icq': ! $text = sprintf($lang['Search_for_userfield_icq'],$text); ! $field = 'user_icq'; ! break; ! case 'aim': ! $text = sprintf($lang['Search_for_userfield_aim'],$text); ! $field = 'user_aim'; ! break; ! case 'msn': ! $text = sprintf($lang['Search_for_userfield_msn'],$text); ! $field = 'user_msnm'; ! break; ! case 'yahoo': ! $text = sprintf($lang['Search_for_userfield_yahoo'],$text); ! $field = 'user_yahoo'; ! break; ! case 'website': ! $text = sprintf($lang['Search_for_userfield_website'],$text); ! $field = 'user_website'; ! break; ! case 'location': ! $text = sprintf($lang['Search_for_userfield_location'],$text); ! $field = 'user_from'; ! break; ! case 'interests': ! $text = sprintf($lang['Search_for_userfield_interests'],$text); ! $field = 'user_interests'; ! break; ! case 'occupation': ! $text = sprintf($lang['Search_for_userfield_occupation'],$text); ! $field = 'user_occ'; ! break; ! default: ! message_die(GENERAL_MESSAGE, $lang['Search_invalid']); ! } ! ! if($regex && SQL_LAYER == 'oracle') ! { ! $total_sql .= "SELECT COUNT(user_id) AS total ! FROM ".USERS_TABLE." ! WHERE REGEXP_LIKE($field, '".str_replace("\'", "''", $userfield_value)."') ! AND user_id <> ".ANONYMOUS; ! ! $select_sql .= " WHERE REGEXP_LIKE(u.$field, '".str_replace("\'", "''", $userfield_value)."') ! AND u.user_id <> ".ANONYMOUS; ! } ! else ! { ! $total_sql .= "SELECT COUNT(user_id) AS total ! FROM ".USERS_TABLE." ! WHERE {$lower_b}$field{$lower_e} $op '".str_replace("\'", "''", $userfield_value)."' ! AND user_id <> ".ANONYMOUS; ! ! $select_sql .= " WHERE {$lower_b}u.$field{$lower_e} $op '".str_replace("\'", "''", $userfield_value)."' ! AND u.user_id <> ".ANONYMOUS; ! } ! ! break; ! case 'search_language': ! $base_url .= "&search_language=true&language_type=".urlencode($language_type); ! ! $language_type = trim(strtolower($language_type)); ! ! if($language_type == '') ! { ! message_die(GENERAL_MESSAGE, $lang['Search_invalid_language']); ! } ! ! $text = sprintf($lang['Search_for_language'], strip_tags(htmlspecialchars($language_type))); ! ! $total_sql .= "SELECT COUNT(user_id) AS total ! FROM ".USERS_TABLE." ! WHERE user_lang = '".str_replace("\'", "''", $language_type)."' ! AND user_id <> ".ANONYMOUS; ! ! $select_sql .= " WHERE u.user_lang = '".str_replace("\'", "''", $language_type)."' ! AND u.user_id <> ".ANONYMOUS; ! ! break; ! case 'search_timezone': ! $base_url .= "&search_timezone=true&timezone_type=".urlencode($timezone_type); ! $text = sprintf($lang['Search_for_timezone'], strip_tags(htmlspecialchars($timezone_type))); ! ! $timezone_type = intval($timezone_type); ! ! $total_sql .= "SELECT COUNT(user_id) AS total ! FROM ".USERS_TABLE." ! WHERE user_timezone = $timezone_type ! AND user_id <> ".ANONYMOUS; ! ! $select_sql .= " WHERE u.user_timezone = $timezone_type ! AND u.user_id <> ".ANONYMOUS; ! ! break; ! case 'search_style': ! $base_url .= "&search_style=true&style_type=".urlencode($style_type); ! ! $style_type = intval($style_type); ! ! $sql = "SELECT style_name ! FROM ".THEMES_TABLE." ! WHERE themes_id = ".$style_type; ! ! ! if(!$result = $db->sql_query($sql)) ! { ! message_die(GENERAL_ERROR, 'Could not select style data', '', __LINE__, __FILE__, $sql); ! } ! ! if($db->sql_numrows($result)==0) ! { ! message_die(GENERAL_MESSAGE, $lang['Search_invalid_style']); ! } ! ! $style_name = $db->sql_fetchrow($result); ! ! $text = sprintf($lang['Search_for_style'], strip_tags(htmlspecialchars($style_name['style_name']))); ! ! $total_sql .= "SELECT COUNT(user_id) AS total ! FROM ".USERS_TABLE." ! WHERE user_style = $style_type ! AND user_id <> ".ANONYMOUS; ! ! $select_sql .= " WHERE u.user_style = $style_type ! AND u.user_id <> ".ANONYMOUS; ! ! break; ! case 'search_moderators': ! $base_url .= "&search_moderators=true&style_type=".urlencode($moderators_forum); ! $moderators_forum = intval($moderators_forum); ! ! $sql = "SELECT forum_name ! FROM ".FORUMS_TABLE." ! WHERE forum_id = ".$moderators_forum; ! ! ! if(!$result = $db->sql_query($sql)) ! { ! message_die(GENERAL_ERROR, 'Could not select forum data', '', __LINE__, __FILE__, $sql); ! } ! ! if($db->sql_numrows($result)==0) ! { ! message_die(GENERAL_MESSAGE, $lang['Search_invalid_moderators']); ! } ! ! $forum_name = $db->sql_fetchrow($result); ! ! $text = sprintf($lang['Search_for_moderators'], strip_tags(htmlspecialchars($forum_name['forum_name']))); ! ! $total_sql .= "SELECT COUNT(u.user_id) AS total ! FROM ".USERS_TABLE." AS u, ".GROUPS_TABLE." AS g, ".USER_GROUP_TABLE." AS ug, ".AUTH_ACCESS_TABLE." AS aa ! WHERE u.user_id = ug.user_id ! AND ug.group_id = g.group_id ! AND g.group_id = aa.group_id ! AND aa.auth_mod = 1 ! AND u.user_id <> ".ANONYMOUS." ! GROUP BY (u.user_id)"; ! ! $select_sql .= ", ".GROUPS_TABLE." AS g, ".USER_GROUP_TABLE." AS ug, ".AUTH_ACCESS_TABLE." AS aa ! WHERE u.user_id = ug.user_id ! AND ug.group_id = g.group_id ! AND g.group_id = aa.group_id ! AND aa.auth_mod = 1 ! AND u.user_id <> ".ANONYMOUS; ! break; case 'search_misc': default: *************** *** 691,694 **** --- 1047,1055 ---- } + if($regex) + { + $base_url .= '®ex=1'; + } + $select_sql .= " ORDER BY "; |