mirror of https://github.com/BOINC/boinc.git
134 lines
4.2 KiB
PHP
134 lines
4.2 KiB
PHP
<?php
|
|
|
|
require_once("../inc/db.inc");
|
|
require_once("../inc/util.inc");
|
|
|
|
function format_float($x) {
|
|
if ($x<1.e-5) {
|
|
return '0';
|
|
} else if ($x<0.01) {
|
|
return sprintf("%0.5f", $x);
|
|
} else if ($x<0.1) {
|
|
return sprintf("%0.4f", $x);
|
|
} else if ($x<1) {
|
|
return sprintf("%0.3f", $x);
|
|
} else if ($x<10) {
|
|
return sprintf("%0.2f", $x);
|
|
} else if ($x<100) {
|
|
return sprintf("%0.1f", $x);
|
|
} else if ($x<1000) {
|
|
return sprintf("%0.0f", $x);
|
|
} else {
|
|
return number_format($x);
|
|
}
|
|
return '';
|
|
}
|
|
|
|
function show_user($user, $which) {
|
|
$rac=format_float($user->expavg_credit);
|
|
$tot=format_float($user->total_credit);
|
|
echo
|
|
" <tr>
|
|
<td align=\"center\">$which</td>
|
|
<td align=\"center\">".user_links($user)."</td>
|
|
<td align=\"center\">".date_str($user->create_time)."</td>
|
|
<td align=\"center\">".$user->country."</td>
|
|
<td align=\"center\">$tot</td>
|
|
<td align=\"center\">$rac</td>
|
|
</tr>\n";
|
|
}
|
|
|
|
function print_table_header($urls, $nextd) {
|
|
echo
|
|
"<table align=\"center\" cellpadding=\"2\" border=\"1\" width=\"100%\">
|
|
<tr>
|
|
<th align=\"center\">Position</th>
|
|
<th align=\"center\"><a href=user_search_action.php?search_string=$urls&offset=0&descending=$nextd&order=name>User name</a></th>
|
|
<th align=\"center\"><a href=user_search_action.php?search_string=$urls&offset=0&descending=$nextd&order=create_time>Joined project</a></th>
|
|
<th align=\"center\"><a href=user_search_action.php?search_string=$urls&offset=0&descending=$nextd&order=country>Country</a></th>
|
|
<th align=\"center\"><a href=user_search_action.php?search_string=$urls&offset=0&descending=$nextd&order=total_credit>Total credit</a></th>
|
|
<th align=\"center\"><a href=user_search_action.php?search_string=$urls&offset=0&descending=$nextd&order=expavg_credit>Recent credit</a></th>
|
|
</tr>\n";
|
|
}
|
|
|
|
/* if needed to help prevent database stress, sleep! */
|
|
/* sleep(2); */
|
|
|
|
db_init();
|
|
|
|
$default_sort = 'id';
|
|
$allowed_order = array('id', 'name', 'create_time','country', 'total_credit', 'expavg_credit');
|
|
$nice_names = array('', 'sorted by name', 'sorted by date joined', 'sorted by country', 'sorted by total credit', 'sorted by recent average credit');
|
|
|
|
/* Sanity check on order */
|
|
if (!isset ($_GET['order']) ||
|
|
!in_array ($_GET['order'], $allowed_order)) {
|
|
$order = $default_sort;
|
|
$nice_name='';
|
|
} else {
|
|
$order = $_GET['order'];
|
|
$nice_name = $nice_names[array_search($order, $allowed_order)];
|
|
}
|
|
|
|
if (isset($_GET['search_string'])) $search_string = $_GET['search_string'];
|
|
|
|
if (isset($_GET['offset'])) $offset = $_GET['offset'];
|
|
if (!is_numeric($offset) || $offset<0) $offset=0;
|
|
|
|
if (isset($_GET['descending']) && $_GET['descending']==1) {
|
|
$upordown='desc';
|
|
$descending=1;
|
|
$nextd=0;
|
|
} else {
|
|
$upordown='asc';
|
|
$descending=0;
|
|
$nextd=1;
|
|
}
|
|
|
|
$count = 100;
|
|
|
|
page_head("Search results");
|
|
|
|
if (strlen($search_string)>=3) {
|
|
$urls = urlencode($search_string);
|
|
$s = str_replace('_', '\\\\_', $search_string);
|
|
$s = str_replace('%', '\\\\%', $s);
|
|
$q = "select * from user where name like '$s%' order by $order $upordown limit $offset,$count";
|
|
$result = mysql_query($q);
|
|
|
|
$n=0;
|
|
while ($user = mysql_fetch_object($result)) {
|
|
if ($n==0) {
|
|
echo "<h2>User names starting with '$search_string' $nice_name</h2>\n";
|
|
print_table_header($urls, $nextd);
|
|
}
|
|
show_user($user, $n+$offset+1);
|
|
$n++;
|
|
}
|
|
echo "</table>\n";
|
|
mysql_free_result($result);
|
|
if (!$n) {
|
|
echo "<h2>No user names found starting with '$search_string'</h2>\n";
|
|
}
|
|
|
|
echo "<br><br>\n";
|
|
echo "<h3>";
|
|
|
|
if ($offset>=$count) {
|
|
$prev= $offset-$count;
|
|
echo "<a href=user_search_action.php?search_string=$urls&offset=$prev&descending=$descending&order=$order>Previous $count</a> \n";
|
|
}
|
|
if ($n==$count) {
|
|
$next= $offset+$count;
|
|
echo "<a href=user_search_action.php?search_string=$urls&offset=$next&descending=$descending&order=$order>Next $count</a>\n";
|
|
}
|
|
echo "</h3>";
|
|
|
|
} else {
|
|
echo "<h2>Search string must be at least three characters long!</h2>\n";
|
|
}
|
|
echo "<br><h3><a href=profile_menu.php>Return to profile zone</a></h3><br>\n";
|
|
|
|
page_tail();
|
|
?>
|