. include_once("../inc/boinc_db.inc"); include_once("../inc/util.inc"); include_once("../inc/team.inc"); include_once("../inc/team_types.inc"); // Merge list1 into list2. // list entries are of the form id => team, // where team includes a field "refcnt". // function merge_lists($list1, &$list2, $weight) { foreach($list1 as $team) { $id = $team->id; if (array_key_exists($id, $list2)) { $list2[$id]->refcnt += $weight; } else { $list2[$id] = $team; $list2[$id]->refcnt = $weight; } } } function compare($t1, $t2) { if ($t1->refcnt > $t2->refcnt) return -1; if ($t1->refcnt < $t2->refcnt) return 1; if ($t1->rnd > $t2->rnd) return -1; if ($t1->rnd < $t2->rnd) return 1; return 0; } // Sort list by decreasing refcnt // function sort_list(&$list) { foreach ($list as $a=>$b) $b->rnd = rand(); usort($list, 'compare'); } function get_teams($clause, $active) { $c2 = ''; if ($active) $c2 = "and expavg_credit>0.1"; return BoincTeam::enum("$clause $c2 order by expavg_credit desc limit 20"); } function show_list($list) { start_table(); echo " Team name Description Average credit Type Country "; $i = 0; foreach ($list as $team) { $type = team_type_name($team->type); $j = $i++ % 2; echo " id>$team->name ".sanitize_html($team->description)." ".format_credit($team->expavg_credit)." $type $team->country "; } echo ""; } 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 "
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 "
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 "
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.

Or you can create a new team.

"; team_search_form($params); } else { echo " The following teams match one or more of your search criteria. To join a team, click its name to go to the team page, then click Join this team.

"; sort_list($list); show_list($list); echo "

Change your search

"; team_search_form($params); } } $user = get_logged_in_user(false); if (isset($_GET['submit'])) { $params = null; $params->keywords = get_str('keywords', true); $params->country = $_GET['country']; $params->type = $_GET['type']; $params->active = get_str('active', true); page_head("Team search results"); search($params); } else { page_head("Find a team", 'document.form.keywords.focus()'); echo " You can team up with other people with similar interests, or from the same country, company, or school.

Use this form to find teams that might be right for you.

"; team_search_form($params); if (isset($_COOKIE['init'])) { echo "

Click here if you're not interested in joining a team right now. "; } } page_tail(); ?>