where('userid', $id) ->whereIn('torrentid', $torrentIdArr) ->select(['seedtime', 'uploaded', 'torrentid']) ->get() ->keyBy('torrentid'); } if ($showActionClaim) { $claimData = \App\Models\Claim::query() ->where('uid', $CURUSER['id']) ->whereIn('torrent_id', $torrentIdArr) ->get() ->keyBy('torrent_id'); } $ret = "". ($showsize ? "" : "").($showsenum ? "" : "").($showlenum ? "" : "").($showuploaded ? "" : "") . ($showdownloaded ? "" : "").($showratio ? "" : "").($showsetime ? "" : "").($showletime ? "" : "").($showcotime ? "" : "").($showanonymous ? "" : ""); if ($shouldShowClient) { $ret .= sprintf('', $lang_getusertorrentlistajax['col_client']); } $ret .= sprintf('', $lang_functions['std_action']); $ret .= ""; $total_size = 0; foreach ($results as $arr) { if ($mode == 'uploaded') { $seedTimeAndUploadedData = $seedTimeAndUploaded->get($arr['torrent']); $arr['seedtime'] = $seedTimeAndUploadedData ? $seedTimeAndUploadedData->seedtime : 0; $arr['uploaded'] = $seedTimeAndUploadedData ? $seedTimeAndUploadedData->uploaded : 0; } $catimage = htmlspecialchars($arr["image"]); $catname = htmlspecialchars($arr["catname"]); $sphighlight = get_torrent_bg_color($arr['sp_state']); $banned_torrent = ($arr["banned"] == 'yes' ? " (".$lang_functions['text_banned'].")" : ""); $sp_torrent = get_torrent_promotion_append($arr['sp_state'], '', false, '', 0, '', $arr['__ignore_global_sp_state'] ?? false); //Total size if ($showtotalsize){ $total_size += $arr['size']; } $hrImg = get_hr_img($arr, $arr['search_box_id']); $approvalStatusIcon = $torrentRep->renderApprovalStatus($arr["approval_status"]); //torrent name $dispname = $nametitle = htmlspecialchars($arr["torrentname"]); $count_dispname=mb_strlen($dispname,"UTF-8"); $max_lenght_of_torrent_name=($CURUSER['fontsize'] == 'large' ? 70 : 80); if($count_dispname > $max_lenght_of_torrent_name) $dispname=mb_substr($dispname, 0, $max_lenght_of_torrent_name,"UTF-8") . ".."; if ($smalldescription_main == 'yes'){ //small description $dissmall_descr = htmlspecialchars(trim($arr["small_descr"])); $count_dissmall_descr=mb_strlen($dissmall_descr,"UTF-8"); $max_lenght_of_small_descr=80; // maximum length if($count_dissmall_descr > $max_lenght_of_small_descr) { $dissmall_descr=mb_substr($dissmall_descr, 0, $max_lenght_of_small_descr,"UTF-8") . ".."; } } else $dissmall_descr == ""; $ret .= "\n" . ""; $ret .= sprintf('', substr($arr['added'], 0, 10), substr($arr['added'], 11)); //size if ($showsize) $ret .= ""; //number of seeders if ($showsenum) $ret .= ""; //number of leechers if ($showlenum) $ret .= ""; //uploaded amount if ($showuploaded){ $uploaded = mksize_compact($arr["uploaded"]); $ret .= ""; } //downloaded amount if ($showdownloaded){ $downloaded = mksize_compact($arr["downloaded"]); $ret .= ""; } //ratio if ($showratio){ if ($arr['downloaded'] > 0) { $ratio = number_format($arr['uploaded'] / $arr['downloaded'], 3); $ratio = "".$ratio.""; } elseif ($arr['uploaded'] > 0) $ratio = "Inf."; else $ratio = "---"; $ret .= ""; } if ($showsetime){ $ret .= ""; } if ($showletime){ $ret .= ""; } if ($showcotime) $ret .= ""; if ($showanonymous) $ret .= ""; if ($shouldShowClient) { $ipArr = array_filter([$arr['ipv4'], $arr['ipv6']]); foreach ($ipArr as &$_ip) { $_ip = sprintf('%s', $_ip . $seedBoxRep->renderIcon($_ip, $arr['userid'])); } $ret .= sprintf( '', get_agent($arr['peer_id'], $arr['agent']), $arr['port'], implode('
', $ipArr) ); } $claimButton = ''; if ( $showActionClaim && \App\Models\Claim::getConfigIsEnabled() && \Carbon\Carbon::parse($arr['added'])->addDays($claimTorrentTTL)->lte(\Carbon\Carbon::now()) ) { $claim = $claimData->get($arr['torrent']); if ($CURUSER['id'] == $arr['userid']) { $claimButton = $claimRep->buildActionButtons($arr['torrent'], $claim); } else { if ($claim) { $claimText = nexus_trans('claim.already_claimed'); } else { $claimText = nexus_trans('claim.not_claim_yet'); } $claimButton = sprintf('', $claimText); } } $ret .= sprintf('', $claimButton); $ret .="\n"; } $ret .= "
".$lang_getusertorrentlistajax['col_type']."".$lang_getusertorrentlistajax['col_name']."".$lang_getusertorrentlistajax['col_added']."\"size\"\"seeders\"\"leechers\"".$lang_getusertorrentlistajax['col_uploaded']."".$lang_getusertorrentlistajax['col_downloaded']."".$lang_getusertorrentlistajax['col_ratio']."".$lang_getusertorrentlistajax['col_se_time']."".$lang_getusertorrentlistajax['col_le_time']."".$lang_getusertorrentlistajax['col_time_completed']."".$lang_getusertorrentlistajax['col_anonymous']."%sIP%s
".return_category_image($arr['category'], "torrents.php?allsec=1&")."" . $dispname . "". $banned_torrent . $sp_torrent . $hrImg . $approvalStatusIcon .($dissmall_descr == "" ? "" : "
" . $dissmall_descr) . "
%s
%s
". mksize_compact($arr['size'])."".$arr['seeders']."".$arr['leechers']."".$uploaded."".$downloaded."".$ratio."".mkprettytime($arr['seedtime'])."".mkprettytime($arr['leechtime']).""."". str_replace(" ", "
", gettime($arr['completedat'],false)). "
".$arr['anonymous']."%s
%s
%s%s
\n"; return [$ret, $total_size]; } $count = 0; $torrentlist = $pagertop = $pagerbottom = ""; switch ($type) { case 'uploaded': { // $res = sql_query("SELECT torrents.id AS torrent, torrents.name as torrentname, small_descr, seeders, leechers, anonymous, torrents.banned, torrents.approval_status, categories.name AS catname, categories.image, category, sp_state, size, torrents.hr, snatched.seedtime, snatched.uploaded FROM torrents LEFT JOIN snatched ON torrents.id = snatched.torrentid LEFT JOIN categories ON torrents.category = categories.id WHERE torrents.owner=$id AND snatched.userid=$id " . (($CURUSER["id"] != $id)?((get_user_class() < $viewanonymous_class) ? " AND anonymous = 'no'":""):"") ." ORDER BY torrents.added DESC") or sqlerr(__FILE__, __LINE__); // $res = sql_query("SELECT torrents.id AS torrent, torrents.name as torrentname, small_descr, seeders, leechers, anonymous, torrents.banned, torrents.approval_status, categories.name AS catname, categories.image, category, sp_state, size, torrents.hr, torrents.added FROM torrents LEFT JOIN categories ON torrents.category = categories.id WHERE torrents.owner=$id " . (($CURUSER["id"] != $id)?((!user_can('viewanonymous')) ? " AND anonymous = 'no'":""):"") ." ORDER BY torrents.id DESC") or sqlerr(__FILE__, __LINE__); $fields = "torrents.id AS torrent, torrents.name as torrentname, small_descr, seeders, leechers, anonymous, torrents.banned, torrents.approval_status, categories.name AS catname, categories.image, category, sp_state, size, torrents.hr, torrents.added,torrents.owner as userid, categories.mode as search_box_id"; $tableWhere = "torrents LEFT JOIN categories ON torrents.category = categories.id WHERE torrents.owner=$id"; if ($CURUSER['id'] != $id && !user_can('viewanonymous')) { $tableWhere .= " AND anonymous = 'no'"; } $order = "torrents.id DESC"; break; } // Current Seeding case 'seeding': { // $res = sql_query("SELECT torrent,added,snatched.uploaded,snatched.downloaded,torrents.name as torrentname, torrents.small_descr, torrents.sp_state, torrents.banned, torrents.approval_status, categories.name as catname,size,torrents.hr,image,category,seeders,leechers FROM peers LEFT JOIN torrents ON peers.torrent = torrents.id LEFT JOIN categories ON torrents.category = categories.id LEFT JOIN snatched ON torrents.id = snatched.torrentid WHERE peers.userid=$id AND snatched.userid = $id AND peers.seeder='yes' ORDER BY torrents.id DESC") or sqlerr(); $fields = "torrent,added,snatched.uploaded,snatched.downloaded,snatched.seedtime,torrents.name as torrentname, torrents.small_descr, torrents.sp_state, torrents.banned, torrents.approval_status, categories.name as catname,size,torrents.hr,image,category,seeders,leechers,snatched.userid, categories.mode as search_box_id, peers.peer_id, peers.agent, peers.port, peers.ipv4, peers.ipv6"; $tableWhere = "peers LEFT JOIN torrents ON peers.torrent = torrents.id LEFT JOIN categories ON torrents.category = categories.id LEFT JOIN snatched ON torrents.id = snatched.torrentid WHERE peers.userid=$id AND snatched.userid = $id AND peers.seeder='yes'"; $order = "torrents.id DESC"; break; } // Current Leeching case 'leeching': { // $res = sql_query("SELECT torrent,snatched.uploaded,snatched.downloaded,torrents.name as torrentname, torrents.small_descr, torrents.sp_state, torrents.banned, torrents.approval_status, categories.name as catname,size,torrents.hr,image,category,seeders,leechers, torrents.added FROM peers LEFT JOIN torrents ON peers.torrent = torrents.id LEFT JOIN categories ON torrents.category = categories.id LEFT JOIN snatched ON torrents.id = snatched.torrentid WHERE peers.userid=$id AND snatched.userid = $id AND peers.seeder='no' ORDER BY torrents.id DESC") or sqlerr(); $fields = "torrent,snatched.uploaded,snatched.downloaded,snatched.seedtime,torrents.name as torrentname, torrents.small_descr, torrents.sp_state, torrents.banned, torrents.approval_status, categories.name as catname,size,torrents.hr,image,category,seeders,leechers, torrents.added,snatched.userid, categories.mode as search_box_id, peers.peer_id, peers.agent, peers.port, peers.ipv4, peers.ipv6"; $tableWhere = "peers LEFT JOIN torrents ON peers.torrent = torrents.id LEFT JOIN categories ON torrents.category = categories.id LEFT JOIN snatched ON torrents.id = snatched.torrentid WHERE peers.userid=$id AND snatched.userid = $id AND peers.seeder='no'"; $order = "torrents.id DESC"; break; } // Completed torrents case 'completed': { // $res = sql_query("SELECT torrents.id AS torrent, torrents.name AS torrentname, small_descr, categories.name AS catname, torrents.banned, torrents.approval_status, categories.image, category, sp_state, size, torrents.hr, torrents.added,snatched.uploaded, snatched.seedtime, snatched.leechtime, snatched.completedat FROM torrents LEFT JOIN snatched ON torrents.id = snatched.torrentid LEFT JOIN categories on torrents.category = categories.id WHERE snatched.finished='yes' AND torrents.owner != $id AND userid=$id ORDER BY snatched.id DESC") or sqlerr(); $fields = "torrents.id AS torrent, torrents.name AS torrentname, small_descr, categories.name AS catname, torrents.banned, torrents.approval_status, categories.image, category, sp_state, size, torrents.hr, torrents.added,snatched.uploaded, snatched.seedtime,snatched.uploaded, snatched.leechtime, snatched.completedat,snatched.userid, categories.mode as search_box_id"; $tableWhere = "torrents LEFT JOIN snatched ON torrents.id = snatched.torrentid LEFT JOIN categories on torrents.category = categories.id WHERE snatched.finished='yes' AND userid=$id AND torrents.owner != $id"; $order = "snatched.id DESC"; break; } // Incomplete torrents case 'incomplete': { // $res = sql_query("SELECT torrents.id AS torrent, torrents.name AS torrentname, small_descr, torrents.banned, torrents.approval_status, categories.name AS catname, categories.image, category, sp_state, size, torrents.hr, torrents.added,snatched.uploaded, snatched.downloaded, snatched.leechtime FROM torrents LEFT JOIN snatched ON torrents.id = snatched.torrentid LEFT JOIN categories on torrents.category = categories.id WHERE snatched.finished='no' AND userid=$id AND torrents.owner != $id ORDER BY snatched.id DESC") or sqlerr(); $fields = "torrents.id AS torrent, torrents.name AS torrentname, small_descr, torrents.banned, torrents.approval_status, categories.name AS catname, categories.image, category, sp_state, size, torrents.hr, torrents.added,snatched.uploaded, snatched.downloaded, snatched.leechtime,snatched.seedtime,snatched.userid, categories.mode as search_box_id"; $tableWhere = "torrents LEFT JOIN snatched ON torrents.id = snatched.torrentid LEFT JOIN categories on torrents.category = categories.id WHERE snatched.finished='no' AND userid=$id AND torrents.owner != $id"; $order = "snatched.id DESC"; break; } } if (isset($tableWhere)) { $cacheKey = sprintf('user:%s:type:%s:total_size', $id, $type); $page = $_GET['page'] ?? 0; $sumSql = "select count(*) as count, sum(torrents.size) as total_size from $tableWhere limit 1"; if ($page == 0) { $sumRes = mysql_fetch_assoc(sql_query($sumSql)); \Nexus\Database\NexusDB::cache_put($cacheKey, $sumRes); } else { $sumRes = \Nexus\Database\NexusDB::remember($cacheKey, 3600, function () use ($sumSql) { return mysql_fetch_assoc(sql_query($sumSql)); }); } $count = $sumRes['count']; $total_size = $sumRes['total_size']; } if ($count > 0 && isset($tableWhere, $fields, $order)) { $pageSize = 100; list($pagertop, $pagerbottom, $limit) = pager($pageSize, $count, "getusertorrentlistajax.php?"); $sql = "select $fields from $tableWhere order by $order $limit"; do_log("count: $count, list sql: $sql"); $res = sql_query($sql); list($torrentlist, $total_size_this_page) = maketable ( $res, $type); } $table = $pagertop . $torrentlist . $pagerbottom; $hasData = false; $summary = sprintf('%s%s', $count, $lang_getusertorrentlistajax['text_record'] . add_s ( $count )); if (isset($total_size) && $total_size){ $hasData = true; $summary .= $lang_getusertorrentlistajax['text_total_size'] . mksize($total_size); } elseif ($count) { $hasData = true; } if ($hasData) { $btnArr = apply_filter("user_seeding_top_btn", [], $CURUSER['id']); $header = sprintf('
%s
%s
', $summary, implode("", $btnArr)); echo '
' . $header . $table; } else { echo $lang_getusertorrentlistajax['text_no_record']; } ?>