mirror of
https://github.com/WhatCD/Gazelle.git
synced 2024-12-14 11:26:26 +00:00
dcaa536e58
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
105 lines
2.8 KiB
PHP
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();
|