function search_action() { $where = "true"; $search_string = get_str('search_string'); if (strlen($search_string)) { if (strlen($search_string) < 3) { error_page(tra("search string must be at least 3 characters")); } $s = BoincDb::escape_string($search_string); $s = escape_pattern($s); $where .= " and name like '{$s}%'"; } $country = get_str('country'); if ($country != 'any') { $s = BoincDb::escape_string($country); $where .= " and country='{$s}'"; } $t = get_str('team'); if ($t == 'yes') { $where .= " and teamid<>0"; } else { if ($t == 'no') { $where .= " and teamid=0"; } } $t = get_str('profile'); if ($t == 'yes') { $where .= " and has_profile<>0"; } else { if ($t == 'no') { $where .= " and has_profile=0"; } } $search_type = get_str('search_type', true); $order_clause = "id desc"; if ($search_type == 'rac') { $order_clause = "expavg_credit desc"; } else { if ($search_type == 'total') { $order_clause = "total_credit desc"; } } $fields = "id, create_time, name, country, total_credit, expavg_credit, teamid, url, has_profile, donated"; $users = BoincUser::enum_fields($fields, $where, "order by {$order_clause} limit 100"); page_head(tra("User search results")); $n = 0; foreach ($users as $user) { if ($n == 0) { start_table(); table_header(tra("Name"), tra("Team"), tra("Average credit"), tra("Total credit"), tra("Country"), tra("Joined")); } show_user($user); $n++; } end_table(); if (!$n) { echo tra("No users match your search criteria."); } page_tail(); }
if ($team) { show_team_xml($team); $total++; if ($total == 100) { break; } } //do not error out } } echo "</teams>\n"; exit; } $team_name = get_str("team_name"); $name_lc = strtolower($team_name); $name_lc = escape_pattern($name_lc); $clause = "name like '%" . BoincDb::escape_string($name_lc) . "%' order by expavg_credit desc limit 100"; $teams = BoincTeam::enum($clause); if ($format == 'xml') { echo "<teams>\n"; $total = 0; foreach ($teams as $team) { show_team_xml($team); $total++; if ($total == 100) { break; } } echo "</teams>\n"; exit; }
function search($params) { $list = array(); $tried = false; if (strlen($params->keywords)) { $kw = BoincDb::escape_string($params->keywords); $name_lc = strtolower($kw); $list2 = get_teams("name='{$name_lc}'", $params->active); merge_lists($list2, $list, 20); $name_lc = escape_pattern($name_lc); $list2 = get_teams("name like '" . $name_lc . "%'", $params->active); merge_lists($list2, $list, 5); $list2 = get_teams("match(name) against ('{$kw}')", $params->active); merge_lists($list2, $list, 5); $list2 = get_teams("match(name, description) against ('{$kw}')", $params->active); //echo "<br>keyword matches: ",sizeof($list2); merge_lists($list2, $list, 3); $tried = true; } if (strlen($params->country) && $params->country != 'None') { $country = BoincDb::escape_string($params->country); $list2 = get_teams("country = '{$country}'", $params->active); //echo "<br>country matches: ",sizeof($list2); merge_lists($list2, $list, 1); $tried = true; } if ($params->type and $params->type > 1) { $list2 = get_teams("type={$params->type}", $params->active); //echo "<br>type matches: ",sizeof($list2); merge_lists($list2, $list, 2); $tried = true; } if (!$tried) { $list = get_teams("id>0", $params->active); } return $list; }
function search($params) { $list = array(); $tried = false; if (strlen($params->keywords)) { $kw = BoincDb::escape_string($params->keywords); $name_lc = strtolower($kw); $name_lc = escape_pattern($name_lc); $list2 = get_teams("name='{$name_lc}'", $params->active); merge_lists($list2, $list, 20); $list2 = get_teams("name like '" . $name_lc . "%'", $params->active); merge_lists($list2, $list, 5); $list2 = get_teams("match(name) against ('{$kw}')", $params->active); merge_lists($list2, $list, 5); $list2 = get_teams("match(name, description) against ('{$kw}')", $params->active); //echo "<br>keyword matches: ",sizeof($list2); merge_lists($list2, $list, 3); $tried = true; } if (strlen($params->country) && $params->country != 'None') { $list2 = get_teams("country = '{$params->country}'", $params->active); //echo "<br>country matches: ",sizeof($list2); merge_lists($list2, $list, 1); $tried = true; } if ($params->type and $params->type > 1) { $list2 = get_teams("type={$params->type}", $params->active); //echo "<br>type matches: ",sizeof($list2); merge_lists($list2, $list, 2); $tried = true; } if (!$tried) { $list = get_teams("id>0", $params->active); } if (sizeof($list) == 0) { echo 'No teams were found matching your criteria. Try another search. <p>Or you can <a href="team_create_form.php">create a new team</a>.</p> <p>'; team_search_form($params); } else { echo "The following teams match one or more of your search criteria.\n\t\t\tTo join a team, click its name to go to the team page, then click <strong>Join this team</strong>.</p>\n\t\t\t<p>"; sort_list($list); show_list($list); echo "<h2>Change your search</h2>"; team_search_form($params); } }
function name_search($filter) { $count = 100; $search_string = get_str('search_string'); if (strlen($search_string) < 3) { error_page("search string must be at least 3 characters"); } $s = boinc_real_escape_string($search_string); $s = escape_pattern($s); $fields = "id, create_time, name, country, total_credit, expavg_credit, teamid, url, has_profile, donated"; $users = BoincUser::enum_fields($fields, "name like '{$s}%'", "limit {$count}"); $n = 0; foreach ($users as $user) { if (!filter_user($user, $filter)) { continue; } if ($n == 0) { echo "<h3>User names starting with '" . htmlspecialchars($search_string) . "'</h3>\n"; start_table(); table_header("Name", "Team", "Average credit", "Total credit", "Country", "Joined"); } show_user($user); $n++; } end_table(); if (!$n) { echo "No users matching your search criteria."; } }