$Orders = array('Time', 'Name', 'Seeders', 'Leechers', 'Snatched', 'Size'); $Ways = array('ASC'=>'Ascending', 'DESC'=>'Descending'); // The "order by x" links on columns headers function header_link($SortKey,$DefaultWay="DESC") { global $Order,$Way; if($SortKey==$Order) { if($Way=="DESC") { $NewWay="ASC"; } else { $NewWay="DESC"; } } else { $NewWay=$DefaultWay; } return "torrents.php?way=".$NewWay."&order=".$SortKey."&".get_url(array('way','order')); } $UserID = $_GET['userid']; if(!is_number($UserID)) { error(0); } if(!empty($_GET['page']) && is_number($_GET['page']) && $_GET['page'] > 0) { $Page = $_GET['page']; $Limit = ($Page-1)*TORRENTS_PER_PAGE.', '.TORRENTS_PER_PAGE; } else { $Page = 1; $Limit = TORRENTS_PER_PAGE; } if(!empty($_GET['order']) && in_array($_GET['order'], $Orders)) { $Order = $_GET['order']; } else { $Order = 'Time'; } if(!empty($_GET['way']) && array_key_exists($_GET['way'], $Ways)) { $Way = $_GET['way']; } else { $Way = 'DESC'; } $SearchWhere = array(); if(!empty($_GET['format'])) { if(in_array($_GET['format'], $Formats)) { $SearchWhere[]="t.Format='".db_string($_GET['format'])."'"; } elseif($_GET['format'] == 'perfectflac') { $_GET['filter'] = 'perfectflac'; } } if(!empty($_GET['bitrate']) && in_array($_GET['bitrate'], $Bitrates)) { $SearchWhere[]="t.Encoding='".db_string($_GET['bitrate'])."'"; } if(!empty($_GET['media']) && in_array($_GET['media'], $Media)) { $SearchWhere[]="t.Media='".db_string($_GET['media'])."'"; } if(!empty($_GET['releasetype']) && array_key_exists($_GET['releasetype'], $ReleaseTypes)) { $SearchWhere[]="tg.ReleaseType='".db_string($_GET['releasetype'])."'"; } if(isset($_GET['scene']) && in_array($_GET['scene'], array('1','0'))) { $SearchWhere[]="t.Scene='".db_string($_GET['scene'])."'"; } if(isset($_GET['vanityhouse']) && in_array($_GET['vanityhouse'], array('1','0'))) { $SearchWhere[]="tg.VanityHouse='".db_string($_GET['vanityhouse'])."'"; } if(isset($_GET['cue']) && in_array($_GET['cue'], array('1','0'))) { $SearchWhere[]="t.HasCue='".db_string($_GET['cue'])."'"; } if(isset($_GET['log']) && in_array($_GET['log'], array('1','0', '100', '-1'))) { if($_GET['log'] == '100') { $SearchWhere[]="t.HasLog = '1'"; $SearchWhere[]="t.LogScore = '100'"; } elseif ($_GET['log'] == '-1') { $SearchWhere[]="t.HasLog = '1'"; $SearchWhere[]="t.LogScore < '100'"; } else { $SearchWhere[]="t.HasLog='".db_string($_GET['log'])."'"; } } if(!empty($_GET['categories'])) { $Cats = array(); foreach(array_keys($_GET['categories']) as $Cat) { if(!is_number($Cat)) { error(0); } $Cats[]="tg.CategoryID='".db_string($Cat)."'"; } $SearchWhere[]='('.implode(' OR ', $Cats).')'; } if(!isset($_GET['tags_type'])) { $_GET['tags_type'] = '1'; } if(!empty($_GET['tags'])) { $Tags = explode(',',$_GET['tags']); $TagList = array(); foreach($Tags as $Tag) { $Tag = trim(str_replace('.','_',$Tag)); if(empty($Tag)) { continue; } if($Tag[0] == '!') { $Tag = ltrim(substr($Tag,1)); if(empty($Tag)) { continue; } $TagList[]="CONCAT(' ',tg.TagList,' ') NOT LIKE '% ".db_string($Tag)." %'"; } else { $TagList[]="CONCAT(' ',tg.TagList,' ') LIKE '% ".db_string($Tag)." %'"; } } if(!empty($TagList)) { if(isset($_GET['tags_type']) && $_GET['tags_type'] != 1) { $_GET['tags_type'] = '0'; $SearchWhere[]='('.implode(' OR ', $TagList).')'; } else { $_GET['tags_type'] = '1'; $SearchWhere[]='('.implode(' AND ', $TagList).')'; } } } $SearchWhere = implode(' AND ', $SearchWhere); if(!empty($SearchWhere)) { $SearchWhere = ' AND '.$SearchWhere; } $User = user_info($UserID); $Perms = get_permissions($User['PermissionID']); $UserClass = $Perms['Class']; switch($_GET['type']) { case 'snatched': if(!check_paranoia('snatched', $User['Paranoia'], $UserClass, $UserID)) { error(403); } $Time = 'xs.tstamp'; $UserField = 'xs.uid'; $ExtraWhere = ''; $From = "xbt_snatched AS xs JOIN torrents AS t ON t.ID=xs.fid"; break; case 'seeding': if(!check_paranoia('seeding', $User['Paranoia'], $UserClass, $UserID)) { error(403); } $Time = '(unix_timestamp(now()) - xfu.timespent)'; $UserField = 'xfu.uid'; $ExtraWhere = 'AND xfu.active=1 AND xfu.Remaining=0'; $From = "xbt_files_users AS xfu JOIN torrents AS t ON t.ID=xfu.fid"; break; case 'contest': $Time = 'unix_timestamp(t.Time)'; $UserField = 't.UserID'; $ExtraWhere = " AND t.ID IN (SELECT TorrentID FROM library_contest WHERE UserID = ".$UserID.")"; $From = "torrents AS t"; break; case 'leeching': if(!check_paranoia('leeching', $User['Paranoia'], $UserClass, $UserID)) { error(403); } $Time = '(unix_timestamp(now()) - xfu.timespent)'; $UserField = 'xfu.uid'; $ExtraWhere = 'AND xfu.active=1 AND xfu.Remaining>0'; $From = "xbt_files_users AS xfu JOIN torrents AS t ON t.ID=xfu.fid"; break; case 'uploaded': if ((empty($_GET['filter']) || $_GET['filter'] != 'perfectflac') && !check_paranoia('uploads', $User['Paranoia'], $UserClass, $UserID)) { error(403); } $Time = 'unix_timestamp(t.Time)'; $UserField = 't.UserID'; $ExtraWhere = ''; $From = "torrents AS t"; break; case 'downloaded': if(!check_perms('site_view_torrent_snatchlist')) { error(403); } $Time = 'unix_timestamp(ud.Time)'; $UserField = 'ud.UserID'; $ExtraWhere = ''; $From = "users_downloads AS ud JOIN torrents AS t ON t.ID=ud.TorrentID"; break; default: error(404); } if(!empty($_GET['filter'])) { if($_GET['filter'] == "perfectflac") { if (!check_paranoia('perfectflacs', $User['Paranoia'], $UserClass, $UserID)) { error(403); } $ExtraWhere .= " AND t.Format = 'FLAC'"; if(empty($_GET['media'])) { $ExtraWhere .= " AND ( t.LogScore = 100 OR t.Media IN ('Vinyl','WEB','DVD','Soundboard','Casette','SACD','Blu-ray','DAT') )"; } elseif(strtoupper($_GET['media']) == 'CD' && empty($_GET['log'])) { $ExtraWhere .= " AND t.LogScore = 100"; } } elseif($_GET['filter'] == "uniquegroup") { if (!check_paranoia('uniquegroups', $User['Paranoia'], $UserClass, $UserID)) { error(403); } $GroupBy = "tg.ID"; } } if(empty($GroupBy)) { $GroupBy = "t.ID"; } if((empty($_GET['search']) || trim($_GET['search']) == '') && $Order!='Name') { $SQL = "SELECT SQL_CALC_FOUND_ROWS t.GroupID, t.ID AS TorrentID, $Time AS Time, tg.CategoryID FROM $From JOIN torrents_group AS tg ON tg.ID=t.GroupID WHERE $UserField='$UserID' $ExtraWhere $SearchWhere GROUP BY ".$GroupBy." ORDER BY $Order $Way LIMIT $Limit"; } else { $DB->query("CREATE TEMPORARY TABLE temp_sections_torrents_user ( GroupID int(10) unsigned not null, TorrentID int(10) unsigned not null, Time int(12) unsigned not null, CategoryID int(3) unsigned, Seeders int(6) unsigned, Leechers int(6) unsigned, Snatched int(10) unsigned, Name mediumtext, Size bigint(12) unsigned, PRIMARY KEY (TorrentID)) CHARSET=utf8"); $DB->query("INSERT IGNORE INTO temp_sections_torrents_user SELECT t.GroupID, t.ID AS TorrentID, $Time AS Time, tg.CategoryID, t.Seeders, t.Leechers, t.Snatched, CONCAT_WS(' ', GROUP_CONCAT(aa.Name SEPARATOR ' '), ' ', tg.Name, ' ', tg.Year, ' ') AS Name, t.Size FROM $From JOIN torrents_group AS tg ON tg.ID=t.GroupID LEFT JOIN torrents_artists AS ta ON ta.GroupID=tg.ID LEFT JOIN artists_alias AS aa ON aa.AliasID=ta.AliasID WHERE $UserField='$UserID' $ExtraWhere $SearchWhere GROUP BY TorrentID, Time"); if(!empty($_GET['search']) && trim($_GET['search']) != '') { $Words = array_unique(explode(' ', db_string($_GET['search']))); } $SQL = "SELECT SQL_CALC_FOUND_ROWS GroupID, TorrentID, Time, CategoryID FROM temp_sections_torrents_user"; if(!empty($Words)) { $SQL .= " WHERE Name LIKE '%".implode("%' AND Name LIKE '%", $Words)."%'"; } $SQL .= " ORDER BY $Order $Way LIMIT $Limit"; } $DB->query($SQL); $GroupIDs = $DB->collect('GroupID'); $TorrentsInfo = $DB->to_array('TorrentID', MYSQLI_ASSOC); $DB->query("SELECT FOUND_ROWS()"); list($TorrentCount) = $DB->next_record(); $Results = get_groups($GroupIDs); $Action = display_str($_GET['type']); $User = user_info($UserID); show_header($User['Username'].'\'s '.$Action.' torrents'); $Pages=get_pages($Page,$TorrentCount,TORRENTS_PER_PAGE); ?>
Torrent | Time | Size | ||||
[DL
| RP]
=$DisplayName?>
|
=time_diff($Time,1)?> | =get_size($Torrent['Size'])?> | =number_format($Torrent['Snatched'])?> | >=number_format($Torrent['Seeders'])?> | =number_format($Torrent['Leechers'])?> |