Gazelle/sections/torrents/redownload.php
What.CD dcaa536e58 Update sphinxapi for v2
Allow indexing by column 0 in ->to_array()

Only need numeric indices in 'ip_bans' key

Cache keys were completely broken on the debug pages

Add bbcode missing functions to staffpms

Add border to improve layout of torrent pages with postmod

Fix a bug where users could download anyone's snatch/upload/seedlist regardless of paranoia settings

Don't escape thread titles before caching

Better BBCode URL matching

Fix user search by tracker IP for ocelot data

Fix bug where the same thread would show up twice in the announcements forum

Update tables before sending invite email to prevent sending multiple invites
2011-05-12 10:24:03 +00:00

105 lines
2.8 KiB
PHP

<?
if (!empty($_GET['userid']) && is_number($_GET['userid'])) {
$UserID = $_GET['userid'];
} else {
error(0);
}
if(!check_perms('zip_downloader')) {
error(403);
}
$User = user_info($UserID);
$Perms = get_permissions($User['PermissionID']);
$UserClass = $Perms['Class'];
require(SERVER_ROOT.'/classes/class_torrent.php');
require(SERVER_ROOT.'/classes/class_zip.php');
if (empty($_GET['type'])) {
error(0);
} else {
switch ($_GET['type']) {
case 'uploads':
if(!check_paranoia('uploads', $User['Paranoia'], $UserClass, $UserID)) { error(403); }
$SQL = "WHERE t.UserID='$UserID'";
$Month = "t.Time";
break;
case 'snatches':
if(!check_paranoia('snatched', $User['Paranoia'], $UserClass, $UserID)) { error(403); }
$SQL = "JOIN xbt_snatched AS x ON t.ID=x.fid WHERE x.uid='$UserID'";
$Month = "FROM_UNIXTIME(x.tstamp)";
break;
case 'seeding':
if(!check_paranoia('seeding', $User['Paranoia'], $UserClass, $UserID)) { error(403); }
$SQL = "JOIN xbt_files_users AS xfu ON t.ID = xfu.fid WHERE xfu.uid='$UserID' AND xfu.remaining = 0";
$Month = "FROM_UNIXTIME(xfu.mtime)";
break;
default:
error(0);
}
}
ZIP::unlimit();
$DB->query("SELECT
DATE_FORMAT(".$Month.",'%b \'%y') AS Month,
t.GroupID,
t.Media,
t.Format,
t.Encoding,
IF(t.RemasterYear=0,tg.Year,t.RemasterYear),
tg.Name,
t.Size,
f.File
FROM torrents as t
JOIN torrents_group AS tg ON t.GroupID=tg.ID
LEFT JOIN torrents_files AS f ON t.ID=f.TorrentID
".$SQL."
GROUP BY t.ID");
$Downloads = $DB->to_array(false,MYSQLI_NUM,false);
$Artists = get_artists($DB->collect('GroupID'));
list($UserID, $Username) = array_values(user_info($UserID));
$Zip = new ZIP($Username.'\'s '.ucfirst($_GET['type']));
foreach($Downloads as $Download) {
list($Month, $GroupID, $Media, $Format, $Encoding, $Year, $Album, $Size, $Contents) = $Download;
$Artist = display_artists($Artists[$GroupID],false);
$Contents = unserialize(base64_decode($Contents));
$Tor = new TORRENT($Contents, true);
$Tor->set_announce_url(ANNOUNCE_URL.'/'.$LoggedUser['torrent_pass'].'/announce');
unset($Tor->Val['announce-list']);
$TorrentName='';
$TorrentInfo='';
$TorrentName = $Artist;
$TorrentName .= $Album;
if ($Year>0) { $TorrentName.=' - '.$Year; }
if ($Media!='') { $TorrentInfo.=$Media; }
if ($Format!='') {
if ($TorrentInfo!='') { $TorrentInfo.=' - '; }
$TorrentInfo.=$Format;
}
if ($Encoding!='') {
if ($TorrentInfo!='') { $TorrentInfo.=' - '; }
$TorrentInfo.=$Encoding;
}
if ($TorrentInfo!='') { $TorrentName.=' ('.$TorrentInfo.')'; }
if (!$TorrentName) { $TorrentName="No Name"; }
$FileName = file_string($TorrentName);
if ($Browser == 'Internet Explorer') {
$FileName = urlencode($FileName);
}
$FileName .= '.torrent';
$Zip->add_file($Tor->enc(), file_string($Month).'/'.$FileName);
}
$Zip->close_stream();