index page add top uploader

This commit is contained in:
xiaomlove
2022-04-25 01:22:07 +08:00
parent c3969aeee9
commit a47b33a983
18 changed files with 156 additions and 60 deletions
+58
View File
@@ -188,6 +188,64 @@ if ($showlastxtorrents_main == "yes") {
}
}
// ------------- end: latest torrents ------------------//
// ------------- start: top uploader ------------------//
if (get_setting('main.show_top_uploader') == "yes") {
$topUploaderBaseQuery = \App\Models\Torrent::query()
->selectRaw("owner, count(*) as counts")
->groupBy('owner')
->orderBy("counts", "desc")
->take(10);
$userStatResult = \Nexus\Database\NexusDB::remember("index_top_uploader_all", 60, function () use ($topUploaderBaseQuery) {
return (clone $topUploaderBaseQuery)->get();
});
if($userStatResult->isNotEmpty())
{
\Nexus\Nexus::css('.tr-top-uploader-tab>td {cursor: pointer}', 'footer', false);
$toggleTimeRangeJs = <<<JS
jQuery(".tr-top-uploader-tab").on("click", "td", function () {
let _this = jQuery(this)
if (_this.hasClass("colhead")) {
return
}
_this.parent().children().removeClass("colhead")
_this.addClass("colhead")
jQuery(".top-uploader").hide()
jQuery("." + _this.attr("data-table")).fadeIn()
})
JS;
\Nexus\Nexus::js($toggleTimeRangeJs, "footer", false);
print ("<h2>".$lang_index['top_uploader_title']."</h2>");
print("<table width='100%'><tr class='tr-top-uploader-tab' title='{$lang_index['top_uploader_toggle_time_range_tab']}'><td class='colhead' align='center' data-table='top-uploader-recently'>{$lang_index['top_uploader_toggle_time_range_recently']}</td><td align='center' data-table='top-uploader-all'>{$lang_index['top_uploader_toggle_time_range_all']}</td></tr></table>");
$userTorrentCounts = $userStatResult->pluck('counts', 'owner');
$uidArr = $userStatResult->pluck('owner')->toArray();
$result = \App\Models\User::query()->whereIn('id', $uidArr)->orderByRaw(sprintf("field(id,%s)", implode(',', $uidArr)))->get(['id', 'username']);
print ("<table class='top-uploader top-uploader-all' width=\"100%\" border=\"1\" cellspacing=\"0\" cellpadding=\"5\" style='display: none'><tr><td class=\"colhead\" width=\"\">".$lang_index['col_author']."</td><td class=\"colhead\" align=\"center\">".$lang_index['col_counts']."</td><td class=\"colhead\" align=\"center\">".$lang_index['col_ranking']."</td></tr>");
foreach ($result as $ranking => $row)
{
print ("<tr><td>" . get_username($row->id) . "</td><td align=\"center\">" . $userTorrentCounts->get($row->id, 0) . "</td><td align=\"center\">" . ($ranking + 1) . "</td></tr>");
}
print ("</table>");
$userStatResult = \Nexus\Database\NexusDB::remember("index_top_uploader_recently", 60, function () use ($topUploaderBaseQuery) {
return (clone $topUploaderBaseQuery)->where('added', '>=', \Carbon\Carbon::today()->subDays(30))->get();
});
$userTorrentCounts = $userStatResult->pluck('counts', 'owner');
$uidArr = $userStatResult->pluck('owner')->toArray();
$result = \App\Models\User::query()->whereIn('id', $uidArr)->orderByRaw(sprintf("field(id,%s)", implode(',', $uidArr)))->get(['id', 'username']);
print ("<table class='top-uploader top-uploader-recently' width=\"100%\" border=\"1\" cellspacing=\"0\" cellpadding=\"5\"><tr><td class=\"colhead\" width=\"\">".$lang_index['col_author']."</td><td class=\"colhead\" align=\"center\">".$lang_index['col_counts']."</td><td class=\"colhead\" align=\"center\">".$lang_index['col_ranking']."</td></tr>");
foreach ($result as $ranking => $row)
{
print ("<tr><td>" . get_username($row->id) . "</td><td align=\"center\">" . $userTorrentCounts->get($row->id, 0) . "</td><td align=\"center\">" . ($ranking + 1) . "</td></tr>");
}
print ("</table>");
}
}
// ------------- end: top uploader ------------------//
// ------------- start: polls ------------------//
if ($CURUSER && $showpolls_main == "yes")
{