" . count($arr) . " $name\n";
if (!count($arr))
return $s;
$s .= "\n";
$s .= "
\n";
$s .= "| ".$lang_viewpeerlist['col_user_ip']." | " .
($enablelocation_tweak == 'yes' || get_user_class() >= $userprofile_class ? "".$lang_viewpeerlist['col_location']." | " : "").
"".$lang_viewpeerlist['col_connectable']." | ".
"".$lang_viewpeerlist['col_uploaded']." | ".
"".$lang_viewpeerlist['col_rate']." | " .
"".$lang_viewpeerlist['col_downloaded']." | " .
"".$lang_viewpeerlist['col_rate']." | " .
"".$lang_viewpeerlist['col_ratio']." | " .
"".$lang_viewpeerlist['col_complete']." | " .
"".$lang_viewpeerlist['col_connected']." | " .
"".$lang_viewpeerlist['col_idle']." | " .
"".$lang_viewpeerlist['col_client']." |
\n";
$now = time();
$num = 0;
foreach ($arr as $e) {
$privacy = get_single_value("users", "privacy","WHERE id=".sqlesc($e['userid']));
++$num;
$highlight = $CURUSER["id"] == $e['userid'] ? " bgcolor=#BBAF9B" : "";
$s .= "\n";
if($privacy == "strong" || ($torrent['anonymous'] == 'yes' && $e['userid'] == $torrent['owner']))
{
if(get_user_class() >= $viewanonymous_class || $e['userid'] == $CURUSER['id'])
$s .= "".$lang_viewpeerlist['text_anonymous']." (" . get_username($e['userid']) . ")";
else
$s .= " | ".$lang_viewpeerlist['text_anonymous']." | \n";
}
else
$s .= "" . get_username($e['userid']);
$secs = max(1, ($e["la"] - $e["st"]));
if ($enablelocation_tweak == 'yes'){
list($loc_pub, $loc_mod) = get_ip_location(sprintf('%s,%s', $e['ipv4'], $e['ipv6']));
$location = get_user_class() >= $userprofile_class ? " " . $loc_pub . " " : $loc_pub;
$s .= " | " . $location . " | \n";
}
elseif (get_user_class() >= $userprofile_class){
$location = implode(', ', array_filter([$e['ipv4'], $e['ipv6']]));
$s .= "" . $location . " | \n";
}
$s .= "" . ($e['connectable'] == "yes" ? $lang_viewpeerlist['text_yes'] : "".$lang_viewpeerlist['text_no']."") . " | \n";
$s .= "" . mksize($e["uploaded"]) . " | \n";
$s .= "" . mksize(($e["uploaded"] - $e["uploadoffset"]) / $secs) . "/s | \n";
$s .= "" . mksize($e["downloaded"]) . " | \n";
if ($e["seeder"] == "no")
$s .= "" . mksize(($e["downloaded"] - $e["downloadoffset"]) / $secs) . "/s | \n";
else
$s .= "" . mksize(($e["downloaded"] - $e["downloadoffset"]) / max(1, $e["finishedat"] - $e['st'])) . "/s | \n";
if ($e["downloaded"])
{
$ratio = floor(($e["uploaded"] / $e["downloaded"]) * 1000) / 1000;
$s .= "" . number_format($ratio, 3) . " | \n";
}
elseif ($e["uploaded"])
$s .= "".$lang_viewpeerlist['text_inf']." | \n";
else
$s .= "--- | \n";
$s .= "" . sprintf("%.2f%%", 100 * (1 - ($e["to_go"] / $torrent["size"]))) . " | \n";
$s .= "" . mkprettytime($now - $e["st"]) . " | \n";
$s .= "" . mkprettytime($now - $e["la"]) . " | \n";
$s .= "" . htmlspecialchars(get_agent($e["peer_id"],$e["agent"])) . " | \n";
$s .= "
\n";
}
$s .= "
\n";
return $s;
}
$downloaders = array();
$seeders = array();
$subres = sql_query("SELECT seeder, finishedat, downloadoffset, uploadoffset, ip, ipv4, ipv6, port, uploaded, downloaded, to_go, UNIX_TIMESTAMP(started) AS st, connectable, agent, peer_id, UNIX_TIMESTAMP(last_action) AS la, userid FROM peers WHERE torrent = $id") or sqlerr();
while ($subrow = mysql_fetch_array($subres)) {
if ($subrow["seeder"] == "yes")
$seeders[] = $subrow;
else
$downloaders[] = $subrow;
}
function leech_sort($a,$b) {
$x = $a["to_go"];
$y = $b["to_go"];
if ($x == $y)
return 0;
if ($x < $y)
return -1;
return 1;
}
function seed_sort($a,$b) {
$x = $a["uploaded"];
$y = $b["uploaded"];
if ($x == $y)
return 0;
if ($x < $y)
return 1;
return -1;
}
$res = sql_query("SELECT torrents.id, torrents.owner, torrents.size, torrents.anonymous FROM torrents WHERE torrents.id = $id LIMIT 1") or sqlerr();
$row = mysql_fetch_array($res);
usort($seeders, "seed_sort");
usort($downloaders, "leech_sort");
print(dltable($lang_viewpeerlist['text_seeders'], $seeders, $row));
print(dltable($lang_viewpeerlist['text_leechers'], $downloaders, $row));
}
?>