Empty commit

This commit is contained in:
Git 2012-05-18 13:35:17 +00:00
parent 347ce0ba87
commit f84eee9faf
34 changed files with 1013 additions and 961 deletions

View File

@ -755,7 +755,7 @@ function show_header($PageTitle='',$JSIncludes='') {
if($PageTitle!='') { $PageTitle.=' :: '; }
$PageTitle .= SITE_NAME;
if(!is_array($LoggedUser)) {
if(!is_array($LoggedUser) || empty($LoggedUser['ID'])) {
require(SERVER_ROOT.'/design/publicheader.php');
} else {
require(SERVER_ROOT.'/design/privateheader.php');
@ -1483,7 +1483,7 @@ function warn_user($UserID, $Duration, $Reason) {
/**************************************************************************/
function update_hash($GroupID) {
global $DB,$SpecialChars,$Cache;
global $DB, $Cache;
$DB->query("UPDATE torrents_group SET TagList=(SELECT REPLACE(GROUP_CONCAT(tags.Name SEPARATOR ' '),'.','_')
FROM torrents_tags AS t
INNER JOIN tags ON tags.ID=t.TagID

File diff suppressed because it is too large Load Diff

View File

@ -19,6 +19,7 @@ function compare($X, $Y){
$ArtistID = $_GET['id'];
if(!is_number($ArtistID)) {
print json_encode(array('status' => 'failure'));
die();
}
if (empty($ArtistID)) {

View File

@ -23,8 +23,13 @@
* 3. For foo, there's two, same ArtistID, diff names, no redirect
*/
$DB->query("SELECT AliasID, ArtistID FROM artists_alias WHERE Name LIKE '".$AliasName."'");
list($CloneAliasID, $CloneArtistID) = $DB->next_record();
$DB->query("SELECT AliasID, ArtistID, Name FROM artists_alias WHERE Name LIKE '".$AliasName."'");
if($DB->record_count()) {
while(list($CloneAliasID, $CloneArtistID, $CloneAliasName) = $DB->next_record(MYSQLI_NUM, false)) {
if(!strcasecmp($CloneAliasName, $AliasName)) {
break;
}
}
if($CloneAliasID) {
if($Redirect == 0) {
$DB->query("UPDATE artists_alias SET ArtistID='".$ArtistID."', Redirect=0 WHERE AliasID='".$CloneAliasID."'");
@ -32,7 +37,8 @@
error('An alias by that name already exists <a href="artist.php?id='.$CloneArtistID.'">here</a>. You can try renaming that artist to this one.');
}
}
}
if(!$CloneAliasID) {
$DB->query("INSERT INTO artists_alias(ArtistID, Name, Redirect, UserID)
VALUES
(".$ArtistID.", '".$AliasName."', ".$Redirect.", ".$LoggedUser['ID'].")");
@ -42,6 +48,6 @@
list($ArtistName) = $DB->next_record();
write_log("The alias ".$AliasID." (".$AliasName.") was added to the artist ".$ArtistID." (".$ArtistName.") by user ".$LoggedUser['ID']." (".$LoggedUser['Username'].")");
}
header('Location: '.$_SERVER['HTTP_REFERER']);
?>

View File

@ -438,7 +438,7 @@ function compare($X, $Y){
[ <a href="torrents.php?action=download&amp;id=<?=$TorrentID?>&amp;authkey=<?=$LoggedUser['AuthKey']?>&amp;torrent_pass=<?=$LoggedUser['torrent_pass']?>" title="Download"><?=$Torrent['HasFile'] ? 'DL' : 'Missing'?></a>
<? if (($LoggedUser['FLTokens'] > 0) && ($Torrent['Size'] < 1073741824)
&& !in_array($TorrentID, $TokenTorrents) && empty($Torrent['FreeTorrent']) && ($LoggedUser['CanLeech'] == '1')) { ?>
| <a href="torrents.php?action=download&amp;id=<?=$TorrentID ?>&amp;authkey=<?=$LoggedUser['AuthKey']?>&amp;torrent_pass=<?=$LoggedUser['torrent_pass']?>&usetoken=1" title="Use a FL Token" onClick="return confirm('Are you sure you want to use a freeleech token here?');">FL</a>
| <a href="torrents.php?action=download&amp;id=<?=$TorrentID ?>&amp;authkey=<?=$LoggedUser['AuthKey']?>&amp;torrent_pass=<?=$LoggedUser['torrent_pass']?>&amp;usetoken=1" title="Use a FL Token" onClick="return confirm('Are you sure you want to use a freeleech token here?');">FL</a>
<? } ?> ]
</span>
&nbsp;&nbsp;&raquo;&nbsp; <a href="torrents.php?id=<?=$GroupID?>&amp;torrentid=<?=$TorrentID?>"><?=torrent_info($Torrent)?></a>

View File

@ -50,5 +50,4 @@
}
}
}
echo json_encode(array($FullName,$Suggestions,$Snatches,$Links));

View File

@ -77,7 +77,7 @@
<input type="hidden" name="auth" value="<?=$LoggedUser['AuthKey']?>" />
<input type="hidden" name="artistid" value="<?=$ArtistID?>" />
<div>
<em>Merges this artist (<?=Name?>) into the artist specified below (without redirection), so that "<?=Name?>" (and its aliases) will appear as a non-redirecting alias of the artist entered in the text box below.</em><br /><br />
<em>Merges this artist (<?=$Name?>) into the artist specified below (without redirection), so that "<?=$Name?>" (and its aliases) will appear as a non-redirecting alias of the artist entered in the text box below.</em><br /><br />
<div style="text-align: center;">
<label for="newartistid">ArtistID:</label>&nbsp;<input type="text" id="newartistid" name="newartistid" size="40" value="" /><br />
<strong>OR</strong><br />

View File

@ -85,12 +85,9 @@
include (SERVER_ROOT.'/sections/artist/artist.php');
} elseif (!empty($_GET['artistname'])) {
$Name = db_string(trim($_GET['artistname']));
$DB->query("SELECT ArtistID FROM artists_alias WHERE Name LIKE '$Name'");
if(list($ID) = $DB->next_record(MYSQLI_NUM, false)) {
header('Location: artist.php?id='.$ID);
die();
} else {
$NameSearch = trim($_GET['artistname']);
$DB->query("SELECT ArtistID, Name FROM artists_alias WHERE Name LIKE '".db_string($NameSearch)."'");
if($DB->record_count() == 0) {
if(isset($LoggedUser['SearchType']) && $LoggedUser['SearchType']) {
header('Location: torrents.php?action=advanced&artistname='.urlencode($_GET['artistname']));
} else {
@ -98,6 +95,19 @@
}
die();
}
list($FirstID, $Name) = $DB->next_record(MYSQLI_NUM, false);
if($DB->record_count() == 1 || !strcasecmp($Name,$NameSearch)) {
header('Location: artist.php?id='.$FirstID);
die();
}
while(list($ID, $Name) = $DB->next_record(MYSQLI_NUM, false)) {
if(!strcasecmp($Name,$NameSearch)) {
header('Location: artist.php?id='.$ID);
die();
}
}
header('Location: artist.php?id='.$FirstID);
die();
} else {
header('Location: torrents.php');
}

View File

@ -203,7 +203,7 @@ function compare($X, $Y){
<span>[ <a href="torrents.php?action=download&amp;id=<?=$TorrentID?>&amp;authkey=<?=$LoggedUser['AuthKey']?>&amp;torrent_pass=<?=$LoggedUser['torrent_pass']?>" title="Download">DL</a>
<? if (($LoggedUser['FLTokens'] > 0) && ($Torrent['Size'] < 1073741824)
&& !in_array($TorrentID, $TokenTorrents) && empty($Torrent['FreeTorrent']) && ($LoggedUser['CanLeech'] == '1')) { ?>
| <a href="torrents.php?action=download&amp;id=<?=$TorrentID ?>&amp;authkey=<?=$LoggedUser['AuthKey']?>&amp;torrent_pass=<?=$LoggedUser['torrent_pass']?>&usetoken=1" title="Use a FL Token" onClick="return confirm('Are you sure you want to use a freeleech token here?');">FL</a>
| <a href="torrents.php?action=download&amp;id=<?=$TorrentID ?>&amp;authkey=<?=$LoggedUser['AuthKey']?>&amp;torrent_pass=<?=$LoggedUser['torrent_pass']?>&amp;usetoken=1" title="Use a FL Token" onClick="return confirm('Are you sure you want to use a freeleech token here?');">FL</a>
<? } ?>
| <a href="reportsv2.php?action=report&amp;id=<?=$TorrentID?>" title="Report">RP</a> ]
</span>
@ -240,7 +240,7 @@ function compare($X, $Y){
[ <a href="torrents.php?action=download&amp;id=<?=$TorrentID?>&amp;authkey=<?=$LoggedUser['AuthKey']?>&amp;torrent_pass=<?=$LoggedUser['torrent_pass']?>" title="Download">DL</a>
<? if (($LoggedUser['FLTokens'] > 0) && ($Torrent['Size'] < 1073741824)
&& !in_array($TorrentID, $TokenTorrents) && empty($Torrent['FreeTorrent']) && ($LoggedUser['CanLeech'] == '1')) { ?>
| <a href="torrents.php?action=download&amp;id=<?=$TorrentID ?>&amp;authkey=<?=$LoggedUser['AuthKey']?>&amp;torrent_pass=<?=$LoggedUser['torrent_pass']?>&usetoken=1" title="Use a FL Token" onClick="return confirm('Are you sure you want to use a freeleech token here?');">FL</a>
| <a href="torrents.php?action=download&amp;id=<?=$TorrentID ?>&amp;authkey=<?=$LoggedUser['AuthKey']?>&amp;torrent_pass=<?=$LoggedUser['torrent_pass']?>&amp;usetoken=1" title="Use a FL Token" onClick="return confirm('Are you sure you want to use a freeleech token here?');">FL</a>
<? } ?>
| <a href="reportsv2.php?action=report&amp;id=<?=$TorrentID?>" title="Report">RP</a> ]
</span>

View File

@ -24,7 +24,7 @@
if(!empty($_GET['search'])) {
// What are we looking for? Let's make sure it isn't dangerous.
$Search = strtr(db_string(trim($_GET['search'])),$SpecialChars);
$Search = db_string(trim($_GET['search']));
// Break search string down into individual words
$Words = explode(' ', $Search);
}

View File

@ -247,7 +247,7 @@ function compare($X, $Y){
[ <a href="torrents.php?action=download&amp;id=<?=$TorrentID?>&amp;authkey=<?=$LoggedUser['AuthKey']?>&amp;torrent_pass=<?=$LoggedUser['torrent_pass']?>" title="Download">DL</a>
<? if (($LoggedUser['FLTokens'] > 0) && ($Torrent['Size'] < 1073741824)
&& !in_array($TorrentID, $TokenTorrents) && empty($Torrent['FreeTorrent']) && ($LoggedUser['CanLeech'] == '1')) { ?>
| <a href="torrents.php?action=download&amp;id=<?=$TorrentID ?>&amp;authkey=<?=$LoggedUser['AuthKey']?>&amp;torrent_pass=<?=$LoggedUser['torrent_pass']?>&usetoken=1" title="Use a FL Token" onClick="return confirm('Are you sure you want to use a freeleech token here?');">FL</a>
| <a href="torrents.php?action=download&amp;id=<?=$TorrentID ?>&amp;authkey=<?=$LoggedUser['AuthKey']?>&amp;torrent_pass=<?=$LoggedUser['torrent_pass']?>&amp;usetoken=1" title="Use a FL Token" onClick="return confirm('Are you sure you want to use a freeleech token here?');">FL</a>
<? } ?>
| <a href="reportsv2.php?action=report&amp;id=<?=$TorrentID?>" title="Report">RP</a> ]
</span>
@ -284,7 +284,7 @@ function compare($X, $Y){
[ <a href="torrents.php?action=download&amp;id=<?=$TorrentID?>&amp;authkey=<?=$LoggedUser['AuthKey']?>&amp;torrent_pass=<?=$LoggedUser['torrent_pass']?>" title="Download">DL</a>
<? if (($LoggedUser['FLTokens'] > 0) && ($Torrent['Size'] < 1073741824)
&& !in_array($TorrentID, $TokenTorrents) && empty($Torrent['FreeTorrent']) && ($LoggedUser['CanLeech'] == '1')) { ?>
| <a href="torrents.php?action=download&amp;id=<?=$TorrentID ?>&amp;authkey=<?=$LoggedUser['AuthKey']?>&amp;torrent_pass=<?=$LoggedUser['torrent_pass']?>&usetoken=1" title="Use a FL Token" onClick="return confirm('Are you sure you want to use a freeleech token here?');">FL</a>
| <a href="torrents.php?action=download&amp;id=<?=$TorrentID ?>&amp;authkey=<?=$LoggedUser['AuthKey']?>&amp;torrent_pass=<?=$LoggedUser['torrent_pass']?>&amp;usetoken=1" title="Use a FL Token" onClick="return confirm('Are you sure you want to use a freeleech token here?');">FL</a>
<? } ?>
| <a href="reportsv2.php?action=report&amp;id=<?=$TorrentID?>" title="Report">RP</a>]
</span>

View File

@ -21,5 +21,5 @@
$DB->query("DELETE FROM collages_comments WHERE ID='$PostID'");
$Cache->delete_value('collage_'.$CollageID);
$Cache->delete('collage_'.$CollageID.'_catalogue_0'); //Because these never exceed 500 posts, and I'm really tired right now.
$Cache->delete_value('collage_'.$CollageID.'_catalogue_0'); //Because these never exceed 500 posts, and I'm really tired right now.
?>

View File

@ -1,5 +1,8 @@
<?
define('PAYPAL_ADDRESS','whatcdbill@gmail.com');
define('PAYPAL_ADDRESS','');
define('PAYPAL_CURRENCY','EUR');
define('PAYPAL_SYMBOL','&#8364;');
define('PAYPAL_MINIMUM',5);

View File

@ -11,23 +11,14 @@
// Get topicid, forumid, number of pages
$DB->query("SELECT
DISTINCT
TopicID,
ForumID,
CEIL(
(SELECT COUNT(ID)
FROM forums_posts
WHERE TopicID=p.TopicID)/".POSTS_PER_PAGE."
) AS Pages,
CEIL(
(SELECT COUNT(ID)
FROM forums_posts
WHERE ID<'$PostID'
AND TopicID=p.TopicID)/".POSTS_PER_PAGE."
) AS Page
CEIL(COUNT(p.ID)/".POSTS_PER_PAGE.") AS Pages,
CEIL(SUM(IF(p.ID<='$PostID',1,0))/".POSTS_PER_PAGE.") AS Page
FROM forums_posts AS p
JOIN forums_topics AS t ON t.ID=p.TopicID
WHERE p.TopicID=(SELECT TopicID FROM forums_posts WHERE ID='$PostID')");
WHERE p.TopicID=(SELECT TopicID FROM forums_posts WHERE ID='$PostID')
GROUP BY t.ID");
list($TopicID, $ForumID, $Pages, $Page) = $DB->next_record();
// $Pages = number of pages in the thread

View File

@ -11,81 +11,69 @@
}
ignore_user_abort();
ini_set('max_execution_time',600);
ini_set('memory_limit','4096M');
ini_set('max_execution_time',300);
ob_end_flush();
gc_enable();
$Cache->InternalCache = false; // We don't want PHP to cache all results internally
$DB->query("TRUNCATE TABLE torrents_peerlists_compare");
$DB->query("INSERT INTO torrents_peerlists_compare (GroupID, SeedersList, LeechersList, SnatchedList)
SELECT GroupID,
GROUP_CONCAT(CONCAT(ID,'.',Seeders) ORDER BY ID SEPARATOR '|'),
GROUP_CONCAT(CONCAT(ID,'.',Leechers) ORDER BY ID SEPARATOR '|'),
GROUP_CONCAT(CONCAT(ID,'.',Snatched) ORDER BY ID SEPARATOR '|')
FROM torrents GROUP BY GroupID;
");
$DB->query("INSERT INTO torrents_peerlists_compare
SELECT ID, GroupID, Seeders, Leechers, Snatched FROM torrents
ON DUPLICATE KEY UPDATE Seeders=VALUES(Seeders), Leechers=VALUES(Leechers), Snatches=VALUES(Snatches)");
$DB->query("CREATE TEMPORARY TABLE tpc_temp
(TorrentID int, GroupID int, Seeders int, Leechers int, Snatched int,
PRIMARY KEY (GroupID,TorrentID))");
$DB->query("INSERT INTO tpc_temp SELECT t2.* FROM torrents_peerlists t1 JOIN torrents_peerlists_compare t2 USING(TorrentID)
WHERE t1.Seeders != t2.Seeders OR t1.Leechers != t2.Leechers OR t1.Snatches != t2.Snatches");
$DB->query("select t1.GroupID,t2.SeedersList,t2.LeechersList,t2.SnatchedList FROM torrents_peerlists AS t1 JOIN torrents_peerlists_compare AS t2 ON t1.GroupID=t2.GroupID WHERE t1.SeedersList!=t2.SeedersList OR t1.LeechersList!=t2.LeechersList OR t1.SnatchedList!=t2.SnatchedList ORDER BY t1.GroupID");
$StepSize = 30000;
$DB->query("SELECT * FROM tpc_temp ORDER BY GroupID ASC, TorrentID ASC LIMIT $StepSize");
while(list($GroupID,$Seeders,$Leechers,$Snatched) = $DB->next_record(MYSQLI_NUM)) {
$Data = $Cache->get_value('torrent_group_'.$GroupID);
if (!(is_array($Data) && (@$Data['ver'] >= 4))) { continue; }
$Data = $Data['d'];
$Changed = false;
$Seeders = explode('|',$Seeders);
$Leechers = explode('|',$Leechers);
$Snatched = explode('|',$Snatched);
$TotalSeeders = 0;
$TotalLeechers = 0;
$TotalSnatched = 0;
foreach($Seeders as $Nums) {
list($TorrentID, $Val) = explode('.',$Nums);
if(is_array($Data['Torrents']) && isset($Data['Torrents'][$TorrentID]) && is_array($Data['Torrents'][$TorrentID])) {
if($Data['Torrents'][$TorrentID]['Seeders']!=$Val) {
$Data['Torrents'][$TorrentID]['Seeders']=$Val;
$RowNum = 0;
$LastGroupID = 0;
$UpdatedKeys = $UncachedGroups = 0;
list($TorrentID, $GroupID, $Seeders, $Leechers, $Snatches) = $DB->next_record(MYSQLI_NUM, false);
while($TorrentID) {
if($LastGroupID != $GroupID) {
$CachedData = $Cache->get_value('torrent_group_'.$GroupID);
if($CachedData !== false) {
if(isset($CachedData['ver']) && $CachedData['ver'] >= 4) {
$CachedStats = &$CachedData['d']['Torrents'];
}
} else {
$UncachedGroups++;
}
$LastGroupID = $GroupID;
}
while($LastGroupID == $GroupID) {
$RowNum++;
if(isset($CachedStats) && is_array($CachedStats[$TorrentID])) {
$OldValues = &$CachedStats[$TorrentID];
$OldValues['Seeders'] = $Seeders;
$OldValues['Leechers'] = $Leechers;
$OldValues['Snatched'] = $Snatches;
$Changed = true;
unset($OldValues);
}
if(!($RowNum % $StepSize)) {
$DB->query("SELECT * FROM tpc_temp WHERE GroupID > $GroupID OR (GroupID = $GroupID AND TorrentID > $TorrentID)
ORDER BY GroupID ASC, TorrentID ASC LIMIT $StepSize");
}
$TotalSeeders+=$Val;
}
foreach($Leechers as $Nums) {
list($TorrentID, $Val) = explode('.',$Nums);
if(is_array($Data['Torrents']) && isset($Data['Torrents'][$TorrentID]) && is_array($Data['Torrents'][$TorrentID])) {
if($Data['Torrents'][$TorrentID]['Leechers']!=$Val) {
$Data['Torrents'][$TorrentID]['Leechers']=$Val;
$Changed = true;
}
}
$TotalLeechers+=$Val;
}
foreach($Snatched as $Nums) {
list($TorrentID, $Val) = explode('.',$Nums);
if(is_array($Data['Torrents']) && isset($Data['Torrents'][$TorrentID]) && is_array($Data['Torrents'][$TorrentID])) {
if($Data['Torrents'][$TorrentID]['Snatched']!=$Val) {
$Data['Torrents'][$TorrentID]['Snatched']=$Val;
$Changed = true;
}
}
$TotalSnatched=$Val;
$LastGroupID = $GroupID;
list($TorrentID, $GroupID, $Seeders, $Leechers, $Snatches) = $DB->next_record(MYSQLI_NUM, false);
}
if($Changed) {
$Cache->cache_value('torrent_group_'.$GroupID, array('ver'=>4,'d'=>$Data), 0);
$Cache->cache_value('torrent_group_'.$LastGroupID, $CachedData, 0);
unset($CachedStats);
$UpdatedKeys++;
$Changed = false;
}
unset($Data);
}
printf("Updated %d keys, skipped %d keys in %.6fs (%d kB memory)\n", $UpdatedKeys, $UncachedGroups, microtime(true)-$ScriptStartTime, memory_get_usage(true)>>10);
$DB->query("TRUNCATE TABLE torrents_peerlists");
$DB->query("INSERT INTO torrents_peerlists
(GroupID, SeedersList, LeechersList, SnatchedList)
SELECT GroupID, SeedersList, LeechersList, SnatchedList FROM torrents_peerlists_compare");
$DB->query("INSERT INTO torrents_peerlists SELECT * FROM torrents_peerlists_compare");
echo microtime(true)-$ScriptStartTime;
if (check_perms('admin_schedule')) {
echo '<pre>';
show_footer();

View File

@ -31,7 +31,7 @@
'upload' => '0',
'warn' => '0',
'delete' => '1',
'pm' => 'Your torrent has been deleted for being a duplicate of another torrent.'
'pm' => '2.2. Your torrent has been deleted because it was a duplicate of another torrent.'
)
),
'banned' => array(
@ -46,7 +46,8 @@
'upload' => '0',
'warn' => '4',
'delete' => '1',
'pm' => 'The releases on the Do Not Upload list (on the upload page) are currently forbidden from being uploaded from the site. Do not upload them unless your torrent meets a condition specified in the comment.'
'pm' => '1.2. You have uploaded material that is currently forbidden. Items on the Do Not Upload list (at the top of the upload page) cannot be uploaded to the site. Do not upload them unless your torrent meets a condition specified in the comments of the DNU list.
Because the torrent you uploaded contained material on the Do Not Upload list, you have been issued a 4-week warning.'
)
),
'urgent' => array(
@ -84,9 +85,7 @@
'delete' => '0',
'pm' => ''
)
)
),
'1' => array( //Music Resolves
'trump' => array(
'priority' => '2',
'title' => 'Trump',
@ -102,9 +101,11 @@
'upload' => '0',
'warn' => '0',
'delete' => '1',
'pm' => 'Your torrent has been deleted as it was trumped by another torrent.'
'pm' => '2.2. Your torrent has been deleted because it was trumped by another torrent.'
)
)
),
'1' => array( //Music Resolves
'tag_trump' => array (
'priority' => '5',
'title' => 'Tag Trump',
@ -119,8 +120,7 @@
'upload' => '0',
'warn' => '1',
'delete' => '1',
'pm' => '2.3.12. Properly tag your music files. Certain meta tags (e.g. ID3, Vorbis) are required on all music uploads. Make sure to use the proper format tags for your files (e.g. no ID3 tags for FLAC). ID3v2 tags for files are highly recommended over ID3v1. If you upload an album missing one or more of these tags, then another user may add the tags, re-upload, and report yours for deletion.'
'pm' => '2.3.16. Properly tag your music files. Certain meta tags (e.g., ID3, Vorbis) are required on all music uploads. Make sure to use the proper format tags for your files (e.g., no ID3 tags for FLAC - see 2.2.10.8). ID3v2 tags for files are highly recommended over ID3v1. ID3 are recommended for AC3 torrents but are not mandatory because the format does not natively support file metadata tagging (for AC3, the file names become the vehicle for correctly labeling media files). Torrents uploaded with both good ID3v1 tags and blank ID3v2 tags (a dual set of tags) are trumpable by torrents with either just good ID3v1 tags or good ID3v2 tags (a single set of tags). If you upload an album missing one or more of the required tags, then another user may add the tags, re-upload, and report your torrent for deletion.'
)
),
'vinyl_trump' => array(
@ -138,7 +138,7 @@
'upload' => '0',
'warn' => '0',
'delete' => '1',
'pm' => 'Your torrent has been deleted as it was trumped by another torrent.'
'pm' => '2.2. Your torrent has been deleted as it was trumped by another torrent.'
)
),
'folder_trump' => array (
@ -155,7 +155,8 @@
'upload' => '0',
'warn' => '0',
'delete' => '1',
'pm' => 'Name your directories with meaningful titles, such as "Artist - Album (Year) - Format." We advise that directory names in your uploads should at least be "Artist - Album (Year) - Format". The minimum acceptable is "Album", although it is preferable to include more information. If the directory name does not include this minimum then another user can rename the directory, re-upload and report yours for deletion. Avoid creating unnecessary nested folders (such as an extra folder for the actual album) inside your properly named directory. Nested folders make it less likely that downloaders leave the torrent unchanged in order to stay seeding.'
'pm' => '2.3.2. Name your directories with meaningful titles, such as "Artist - Album (Year) - Format." The minimum acceptable is "Album" although it is preferable to include more information. If the directory name does not include this minimum then another user can rename the directory, re-upload, and report your torrent for deletion. In addition, torrent folders that are named using the scene convention will be trumpable if the Scene label is absent from the torrent.
2.3.3. Avoid creating unnecessary nested folders (such as an extra folder for the actual album) inside your properly named directory. A torrent with unnecessary nested folders is trumpable by a torrent with such folders removed. For single disc albums, all audio files must be included in the main torrent folder. For multi-disc albums, the main torrent folder may include one sub-folder that holds the audio file contents for each disc in the box set, i.e., the main torrent folder is "Adele - 19 (2008) - FLAC" while appropriate sub-folders may include "19 (Disc 1of2)" or "19" and "Live From The Hotel Cafe (Disc 2of2)" or "Acoustic Set Live From The Hotel Cafe, Los Angeles." Additional folders are unnecessary because they do nothing to improve the organization of the torrent. If you are uncertain about what to do for other cases, PM a staff member for guidance.'
)
),
'file_trump' => array (
@ -172,7 +173,7 @@
'upload' => '0',
'warn' => '0',
'delete' => '1',
'pm' => '2.3.10. File names must accurately reflect the song titles. You may not have file names like 01track.mp3, 02track.mp3, etc. Also, file names with incorrect song titles can be trumped by properly labeled torrents. If you upload an album with improper file names, then another user may fix the file names, re-upload, and report yours for deletion.'
'pm' => '2.3.11. File names must accurately reflect the song titles. You may not have file names like 01track.mp3, 02track.mp3, etc. Torrents containing files that are named with incorrect song titles can be trumped by properly labeled torrents. Also, torrents that are sourced from the scene but do not have the Scene label must comply with site naming rules (no release group names in the file names, no advertisements in the file names, etc.). If all the letters in the track titles are capitalized, the torrent is trumpable. If you upload an album with improper file names, then another user may fix the file names, re-upload, and report yours for deletion.'
)
),
'tracks_missing' => array(
@ -190,7 +191,9 @@
'upload' => '0',
'warn' => '1',
'delete' => '1',
'pm' => 'All music torrents must represent a complete album. If tracks are available separately, but not released as singles, you may not upload them individually.'
'pm' => '2.1.19. All music torrents must represent a complete release, and may not be missing tracks (or discs in the case of a multi-disc release).
2.1.19.2. A single track (e.g., one MP3 file) cannot be uploaded on its own unless it is an officially released single. If a specific track can only be found on an album, the entire album must be uploaded in the torrent.
Because the torrent you uploaded was missing a track (or tracks), you have been issued a 1-week warning.'
)
),
'discs_missing' => array(
@ -207,7 +210,9 @@
'upload' => '0',
'warn' => '1',
'delete' => '1',
'pm' => 'All music torrents must represent a complete release. Albums must not be missing discs in the case of a multi-disc release.'
'pm' => '2.1.19. All music torrents must represent a complete release, and may not be missing tracks (or discs in the case of a multi-disc release).
2.1.19.1. If an album is released as a multi-disc set (or box set) of CDs or vinyl discs, then it must be uploaded as a single torrent. Preferably, each individual CD rip in a multi-disc set should be organized in its own folder (see 2.3.12).
Because the torrent you uploaded was missing a disc (or discs), you have been issued a 1-week warning.'
)
),
'bonus_tracks' => array(
@ -224,7 +229,8 @@
'upload' => '0',
'warn' => '1',
'delete' => '1',
'pm' => 'Please note that individual bonus tracks are not allowed to be uploaded without the rest of the album. Bonus tracks are not bonus discs.'
'pm' => '2.1.19.3. Bonus discs may be uploaded separately in accordance with 2.4. Please note that individual bonus tracks cannot be uploaded without the rest of the album. Bonus tracks are not bonus discs. Enhanced audio CDs with data or video tracks must be uploaded without the non-audio tracks. If you want to share the videos or data, you may host the files off-site with a file sharing service and include the link to that service in your torrent description.
Because the torrent you uploaded contained only bonus tracks, you have been issued a 1-week warning.'
)
),
'transcode' => array(
@ -242,7 +248,8 @@
'upload' => '0',
'warn' => '2',
'delete' => '1',
'pm' => 'No transcodes or re-encodes of lossy releases are acceptable here. For more information about transcodes, please visit this wiki page : http://'.NONSSL_SITE_URL.'/wiki.php?action=article&id=14'
'pm' => '2.1.2. No transcodes or re-encodes of lossy releases are acceptable here.
Because the torrent you uploaded consisted of transcoded audio files, you have been issued a 2-week warning.'
)
),
'low' => array(
@ -258,7 +265,8 @@
'upload' => '0',
'warn' => '2',
'delete' => '1',
'pm' => 'Music releases must have an average bitrate of at least 192kbps regardless of the format.'
'pm' => '2.1.3. Music releases must have an average bitrate of at least 192 kbps regardless of the format. Exceptions: The following VBR encodes may go under the 192 kbps limit: LAME V2 (VBR), V1 (VBR), V0 (VBR), APS (VBR), APX (VBR), MP3 192 (VBR), and AAC ~192 (VBR) to AAC ~256 (VBR) releases.
Because the torrent you uploaded contained files that were below the minimum bitrate, you have been issued a 2-week warning.'
)
),
'mutt' => array(
@ -274,7 +282,8 @@
'upload' => '0',
'warn' => '2',
'delete' => '1',
'pm' => 'All music torrents must be encoded with a single encoder using the same settings.'
'pm' => '2.1.6. All music torrents must be encoded with a single encoder using the same settings.
Because the torrent you uploaded contained files that were encoded by multiple encoders, you have been issued a 2-week warning.'
)
),
'single_track' => array(
@ -292,7 +301,9 @@
'upload' => '0',
'warn' => '1',
'delete' => '1',
'pm' => 'Albums must not be ripped or uploaded as a single track.'
'pm' => '2.1.5. Albums must not be ripped or uploaded as a single track.
2.1.5.1. If the tracks on the original CD were separate, you must rip them to separate files. Any unsplit FLAC rips lacking a cue sheet will be deleted outright. Any unsplit FLAC rip that includes a cue sheet will be trumpable by a properly split FLAC torrent. CDs with single tracks can be uploaded without prior splitting.
Because the torrent you uploaded was ripped as a single track, you have been issued a 1-week warning.'
)
),
'tags_lots' => array(
@ -309,8 +320,8 @@
'upload' => '0',
'warn' => '0',
'delete' => '0',
'pm' => 'The [url=http://'.NONSSL_SITE_URL.'/rules.php?p=upload#r2.3.12]Uploading Rules[/url] require all uploads to be properly tagged. Your torrent has been marked as eligible for trumping, which is now visible to all interested users, who may trump your torrent at any time.
[b]You can avoid a 1-week warning by fixing this torrent yourself![/b] It\'s easy, and only takes a few minutes: Add or fix the required tags, and upload a new torrent to the site. Then, report (RP) the bad torrent for the reason "Tag Trump", indicate in the report comments that you have fixed the tags, and provide a link (PL) to the new torrent.'
'pm' => '2.3.16. Properly tag your music files.
The Uploading Rules require that all uploads be properly tagged. Your torrent has been marked as having poor tags. It is now listed on better.php and is eligible for trumping. You are of course free to fix this torrent yourself. Add or fix the required tags and upload the replacement torrent to the site. Then, report (RP) the older torrent using the category "Tag Trump" and indicate in the report comments that you have fixed the tags. Be sure to provide a link (PL) to the new replacement torrent.'
)
),
'folders_bad' => array(
@ -325,8 +336,9 @@
'upload' => '0',
'warn' => '0',
'delete' => '0',
'pm' => 'The [url=http://'.NONSSL_SITE_URL.'/rules.php?p=upload#2.3.2]Uploading Rules[/url] require all uploads to have meaningful directory names. Your torrent has been marked as eligible for trumping, which is now visible to all interested users, who may trump your torrent at any time.
[b]You can fix this torrent yourself![/b] It\'s easy, and only takes a few minutes: Add or fix the folder/directory name(s), and upload a new torrent to the site. Then, report (RP) the bad torrent for the reason "Folder Trump", indicate in the report comments that you have fixed the directory name(s), and provide a link (PL) to the new torrent.')
'pm' => '2.3.2. Name your directories with meaningful titles, such as "Artist - Album (Year) - Format."
The Uploading Rules require that all uploads contain torrent directories with meaningful names. Your torrent has been marked as having a poorly named torrent directory. It is now listed on better.php and is eligible for trumping. You are of course free to fix this torrent yourself. Add or fix the folder/directory name(s) and upload the replacement torrent to the site. Then, report (RP) the older torrent using the category "Folder Trump" and indicate in the report comments that you have fixed the directory name(s). Be sure to provide a link (PL) to the new replacement torrent.'
)
),
'wrong_format' => array(
'priority' => '32',
@ -340,7 +352,7 @@
'upload' => '0',
'warn' => '0',
'delete' => '0',
'pm' => 'Please be careful when specifying the format of your uploads'
'pm' => '2.1.4. Bitrates must accurately reflect encoder presets or the average bitrate of the audio files. You are responsible for supplying correct format and bitrate information on the upload page.'
)
),
'wrong_media' => array(
@ -355,7 +367,7 @@
'upload' => '0',
'warn' => '0',
'delete' => '0',
'pm' => 'Please be careful when specifying the media of your uploads'
'pm' => ''
)
),
'format' => array(
@ -371,7 +383,10 @@
'upload' => '0',
'warn' => '1',
'delete' => '1',
'pm' => 'The only formats allowed for music are: MP3, FLAC, Ogg Vorbis, AAC, AC3, DTS'
'pm' => '2.1.1. The only formats allowed for music are:
Lossy: MP3, AAC, AC3, DTS
Lossless: FLAC
Because the torrent you uploaded contained disallowed formats, you have been issued a 1-week warning.'
)
),
'bitrate' => array(
@ -389,7 +404,7 @@
'upload' => '0',
'warn' => '1',
'delete' => '1',
'pm' => 'Bitrates must accurately reflect encoder presets or average bitrate of the audio files.'
'pm' => '2.1.4. Bitrates must accurately reflect encoder presets or the average bitrate of the audio files. You are responsible for supplying correct format and bitrate information on the upload page.'
)
),
'source' => array(
@ -405,7 +420,8 @@
'upload' => '0',
'warn' => '1',
'delete' => '1',
'pm' => "Radio, television, web rips and podcasts are not allowed. It does not matter whether it's FM, direct satellite, internet, or even if it's a pre-broadcast tape."
'pm' => "2.1.11. Music ripped from the radio (Satellite or FM), television, the web, or podcasts are not allowed.
Because the torrent you uploaded contained audio files ripped from broadcast sources, you have been issued a 1-week warning."
)
),
'discog' => array(
@ -421,7 +437,8 @@
'upload' => '0',
'warn' => '1',
'delete' => '1',
'pm' => "Multi-album torrents are not allowed on the site under any circumstances. That means no discographies, Pitchfork compilations, etc."
'pm' => "2.1.20. User made discographies may not be uploaded. Multi-album torrents are not allowed on the site under any circumstances. That means no discographies, Pitchfork compilations, etc. If releases (e.g., CD singles) were never released as a bundled set, do not upload them together. Live Soundboard material should be uploaded as one torrent per night, per show, or per venue. Including more than one show in a torrent results in a multi-album torrent.
Because the torrent you uploaded is a discography, you have been issued a 1-week warning."
)
),
'user_discog' => array(
@ -437,7 +454,9 @@
'upload' => '0',
'warn' => '1',
'delete' => '1',
'pm' => "User-made compilations are not allowed. Compilations must be reasonably official."
'pm' => "2.1.16. User-made compilations are not allowed.
2.1.16.1. These are defined as compilations made by the uploader or anyone else who does not officially represent the artist or the label. Compilations must be reasonably official. User-made and unofficial multichannel mixes are also not allowed.
Because the torrent you uploaded is a user compilation, you have been issued a 1-week warning."
)
),
'lineage' => array(
@ -452,14 +471,15 @@
'upload' => '0',
'warn' => '0',
'delete' => '0',
'pm' => "All lossless analog rips must include clear information about source lineage. This information should be displayed in the torrent description. Optionally, the uploader may include the information in a .txt or .log file within the torrent."
'pm' => "2.3.9. All lossless analog rips should include clear information about source lineage. All lossless SACD digital layer analog rips and vinyl rips must include clear information about recording equipment used (see 2.8). If you used a USB turntable for a vinyl rip, clearly indicate this in your lineage information. Also include all intermediate steps up to lossless encoding, such as the program used for mastering, sound card used, etc. Lossless analog rips missing rip information can be trumped by better documented lossless analog rips of equal or better quality. In order to trump a lossless analog rip without a lineage, this lineage must be included as a .txt or .log file within the new torrent."
)
),
'edited' => array(
'priority' => '14',
'title' => 'Edited Log',
'report_messages' => array(
"Please explain exactly where you believe the log was edited."
"Please explain exactly where you believe the log was edited.",
"The torrent will not show 'reported' on the group page, but rest assured that the report will be seen by moderators."
),
'report_fields' => array(
),
@ -467,7 +487,9 @@
'upload' => '0',
'warn' => '4',
'delete' => '1',
'pm' => "No log editing is permitted. See rule 2.2.15.9."
'pm' => "2.2.10.9. No log editing is permitted.
2.2.10.9.1. Forging log data is a serious misrepresentation of quality, and will result in a warning and the loss of your uploading privileges when the edited log is found. We recommend that you do not open the rip log file for any reason. However, if you must open the rip log, do not edit anything in the file for any reason. If you discover that one of your software settings is incorrect in the ripping software preferences, you must rip the CD again with the proper settings. Do not consolidate logs under any circumstances. If you must re-rip specific tracks or an entire disc and the rip results happen to have the new log appended to the original, leave them as is. Do not remove any part of either log, and never copy/paste parts of a new log over an old log.
Because the torrent you uploaded contained an edited log you have been issued a 4-week warning. In addition, your uploading privileges will be suspended for the duration of your warning. To have your privileges restored, you must PM the staff member who handled this log case."
)
),
'audience' => array(
@ -483,7 +505,8 @@
'upload' => '0',
'warn' => '1',
'delete' => '1',
'pm' => "No unofficial audience recordings. Unofficially-mastered audience recordings (AUD) are not allowed here regardless of how rare you think they are."
'pm' => "2.1.12. No unofficial audience recordings may be uploaded. These include but are not limited to AUD (Audience), IEM (In Ear Monitor), ALD (Assistive Listening Device), Mini-Disc, and Matrix-sourced recordings (see 2.6.3).
Because the torrent you uploaded is sourced from an audience recording, you have been issued a 1-week warning."
)
),
'filename' => array(
@ -498,7 +521,9 @@
'upload' => '0',
'warn' => '0',
'delete' => '0',
'pm' => 'Reason: The [url=http://'.NONSSL_SITE_URL.'/rules.php?p=upload#r2.3.10]Uploading Rules[/url] require all uploads to have proper file names. Your torrent has been marked as eligible for trumping, which is now visible to all interested users, who may trump your torrent at any time. You are encouraged to fix this torrent yourself. It\'s easy, and only takes a few minutes: Fix the required file names and upload a new torrent to the site. Then, report (RP) the bad torrent for the reason "Bad File Names Trump," indicate in the report comments that you have fixed the file names, and provide a link (PL) to the new torrent'
'pm' => '2.3.11. File names must accurately reflect the song titles. You may not have file names like 01track.mp3, 02track.mp3, etc. Torrents containing files that are named with incorrect song titles can be trumped by properly labeled torrents. Also, torrents that are sourced from the scene but do not have the Scene label must comply with site naming rules (no release group names in the file names, no advertisements in the file names, etc.). If all the letters in the track titles are capitalized, the torrent is trumpable.
2.3.13. Track numbers are required in file names (e.g., "01 - TrackName.mp3"). If a torrent without track numbers in the file names is uploaded, then a torrent with the track numbers in the file names can take its place. When formatted properly, file names will sort in order by track number or playing order. Also see 2.3.14.
The Uploading Rules require that all uploads contain audio tracks with accurate file names. Your torrent has been marked as having incorrect or incomplete file names. It is now listed on better.php and is eligible for trumping. You are of course free to fix this torrent yourself. Add or fix the file names and upload the replacement torrent to the site. Then, report (RP) the older torrent using the category "Bad File Names Trump" and indicate in the report comments that you have fixed the file names. Be sure to provide a link (PL) to the new replacement torrent.'
)
),
'cassette' => array(
@ -514,7 +539,10 @@
'upload' => '0',
'warn' => '1',
'delete' => '1',
'pm' => "Cassette-sourced uploads must be approved by staff first. You must contact a moderator privately for approval before uploading. Unapproved cassette torrents may be reported and deleted if no note exists of prior staff approval."
'pm' => "2.10.1 Cassettes are allowed under strict conditions.
2.10.1.1. Releases available only on cassette may be uploaded under special strict conditions (see this wiki for information on cassette ripping). Cassette-sourced uploads must be approved by staff first (see this wiki for details on the approval process). This also applies to soundboard releases where a tape generation can be found in the lineage (either the tape is not in the first generation or there are multiple tape generations). See 2.6.6 for more information.
2.10.1.2. You must contact a moderator privately for approval before uploading. Include proof in the form of discography information from a reputable source as well as the spectrals for 2 songs in your message.
Because the torrent you uploaded is an unapproved rip of a cassette, you have been issued a 1-week warning."
)
),
'skips' => array(
@ -531,7 +559,7 @@
'upload' => '0',
'warn' => '0',
'delete' => '1',
'pm' => "Music not sourced from vinyl must not contain pops, clicks, or skips. They will be deleted for rip/encode errors if reported. Music that is sourced from vinyl must not have excessive problems."
'pm' => "2.1.8. Music not sourced from vinyl must not contain pops, clicks, or skips. They will be deleted for rip/encode errors if reported."
)
),
'rescore' => array(
@ -549,24 +577,8 @@
'delete' => '0',
'pm' => ""
)
),
'ogg' => array(
'priority' => '11',
'title' => 'Disallowed Ogg Preset',
'report_messages' => array(
"Please include as much information as possible to verify the report"
),
'report_fields' => array(
'track' => '0'
),
'resolve_options' => array(
'upload' => '0',
'warn' => '1',
'delete' => '1',
'pm' => "Only -q8.x (~256 (VBR)) is allowed on the site for Ogg Vorbis. Torrents encoded with presets other than -q8.x will be deleted."
)
),
),
'2' => array( //Applications Rules Broken
'missing_crack' => array(
'priority' => '7',
@ -581,7 +593,8 @@
'upload' => '0',
'warn' => '1',
'delete' => '1',
'pm' => 'All applications must come with a crack, keygen, or other method of ensuring that downloaders can install them easily. App torrents with keygens, cracks, or patches that do not work and torrents missing clear installation instructions are deleted if reported. No exceptions.'
'pm' => '4.1.2. All applications must come with a crack, keygen, or other method of ensuring that downloaders can install them easily. App torrents with keygens, cracks, or patches that do not work or torrents missing clear installation instructions will be deleted if reported. No exceptions.
Because the torrent you uploaded is missing an installation method, you have been issued a 1-week warning.'
)
),
'game' => array(
@ -597,7 +610,9 @@
'upload' => '0',
'warn' => '4',
'delete' => '1',
'pm' => 'No games of any kind are allowed: whether PC, Mac, phone or any other platform.'
'pm' => '1.2.5. Games of any kind. No games of any kind for PC, Mac, Linux, mobile devices, or any other platform are allowed.
4.1.7. Games of any kind are prohibited (see 1.2.5).
Because the torrent you uploaded contains a game, you have been issued a 4-week warning.'
)
),
'free' => array(
@ -613,7 +628,8 @@
'upload' => '0',
'warn' => '1',
'delete' => '1',
'pm' => 'App releases must not be freely available tools. Application releases cannot be freely downloaded anywhere from any official source. Nor may you upload open source apps where the source code is available for free.'
'pm' => '4.1.3. App releases must not be freely available tools. Application releases cannot be freely downloaded anywhere from any official source. Nor may you upload open source applications where the source code is available for free.
Because the torrent you uploaded contains a freely available application, you have been issued a 1-week warning.'
)
),
'description' => array(
@ -629,7 +645,8 @@
'upload' => '0',
'warn' => '1',
'delete' => '1',
'pm' => 'Release descriptions for apps must contain good information about the application. You should either have a small description of the program (either taken from its website or from a NFO) or a link to informationideally both.'
'pm' => '4.1.4. Release descriptions for applications must contain good information about the application. You should either have a small description of the program (either taken from its website or from an NFO file) or a link to the information -- but ideally both. Torrents missing this information will be deleted when reported.
Because the torrent you uploaded had inadequate release information, you have been issued a 1-week warning.'
)
),
'pack' => array(
@ -645,7 +662,9 @@
'upload' => '0',
'warn' => '1',
'delete' => '1',
'pm' => 'Sound sample packs, template collections, and font collections are allowed if they are official releases, not freely available, and unarchived.'
'pm' => '2.1.18. Sound Sample Packs must be uploaded as applications.
4.1.9. Sound sample packs, template collections, and font collections are allowed if they are official releases, not freely available, and unarchived. Sound sample packs, template collections, and font collections must be official compilations and they must not be uploaded as an archive. The files contained inside the torrent must not be archived so that users can see what the pack contains. That means if sound sample packs are in WAV format, they must be uploaded as WAV. If the font collection, template collection, or sound sample pack was originally released as an archive, you must unpack the files before uploading them in a torrent. None of the contents in these packs and collections may be freely available.
Because the torrent you uploaded contains either a freely available application or an archived collection, you have been issued a 1-week warning.'
)
),
'collection' => array(
@ -661,7 +680,8 @@
'upload' => '0',
'warn' => '1',
'delete' => '1',
'pm' => 'Collections of cracks, keygens or serials are not allowed. The crack, keygen or serial for an application must be in a torrent with its corresponding application. It cannot be uploaded separately from the application.'
'pm' => '4.1.11. Collections of cracks, keygens or serials are not allowed. The crack, keygen, or serial for an application must be in a torrent with its corresponding application. It cannot be uploaded separately from the application.
Because the torrent you uploaded was a collection of serials, keygens, or cracks, you have been issued a 1-week warning.'
)
),
'hack' => array(
@ -677,7 +697,8 @@
'upload' => '0',
'warn' => '1',
'delete' => '1',
'pm' => 'Torrents containing hacking or cracking tools are not allowed.'
'pm' => '4.1.12. Torrents containing hacking or cracking tools are prohibited.
Because the torrent you uploaded contained a hacking tool, you have been issued a 1-week warning.'
)
),
'virus' => array(
@ -726,7 +747,7 @@
'upload' => '0',
'warn' => '0',
'delete' => '1',
'pm' => 'Collections of eBooks are allowed only if each title is related to each other in a meaningful way.'
'pm' => '6.5. Collections/packs of ebooks are prohibited, even if each title is somehow related to other ebook titles in some way. All ebooks must be uploaded individually and cannot be archived (users must be able to see the ebook format in the torrent).'
)
)
),
@ -745,7 +766,7 @@
'upload' => '0',
'warn' => '0',
'delete' => '1',
'pm' => "Music not sourced from vinyl must not contain pops, clicks, or skips. They will be deleted for rip/encode errors if reported. Music that is sourced from vinyl must not have excessive problems."
'pm' => "2.1.8. Music not sourced from vinyl must not contain pops, clicks, or skips. They will be deleted for rip/encode errors if reported."
)
)
),
@ -763,7 +784,8 @@
'upload' => '0',
'warn' => '1',
'delete' => '1',
'pm' => 'Tutorials on how to use musical instruments, vocal training, producing music or otherwise learning the theory and practice of music are the only allowed topics.'
'pm' => '7.3. Tutorials on how to use musical instruments, vocal training, producing music, or otherwise learning the theory and practice of music are the only allowed topics. No material outside of these topics is allowed. For example, instruction videos about Kung Fu training, dance lessons, beer brewing, or photography are not permitted here. What is considered allowable under these topics is ultimately at the discretion of the staff.
Because the torrent you uploaded contains a video of a disallowed topic, you have been issued a 1-week warning.'
)
)
),
@ -781,7 +803,8 @@
'upload' => '0',
'warn' => '1',
'delete' => '1',
'pm' => 'No radio talk shows and podcasts are allowed.'
'pm' => '3.3. No radio talk shows or podcasts are allowed. What.CD is primarily a music site, and those recordings do not belong in any torrent category.
Because the torrent you uploaded contains files sourced from a talk show or podcast, you have been issued a 1-week warning.'
)
)
),
@ -799,7 +822,7 @@
'upload' => '0',
'warn' => '',
'delete' => '1',
'pm' => "Collections may not span more than one comic title. You may not collect multiple different comic titles. e.g. 'The Amazing Spider-Man #1 and The Incredible Hulk #1' Exceptions: Titles may contain more than one comic title if either: it's a recognized comic crossover/event or it's a DCP weekly release."
'pm' => '5.2.3. Collections may not span more than one comic title. You may not include multiple, different comic titles in a single collection, e.g., "The Amazing Spider-Man #1" and "The Incredible Hulk #1."'
)
),
'volumes' => array(
@ -815,7 +838,7 @@
'upload' => '0',
'warn' => '',
'delete' => '1',
'pm' => "Torrents spanning multiple volumes are too large and must be uploaded as separate volumes."
'pm' => "5.2.6. Torrents spanning multiple volumes are too large and must be uploaded as separate volumes."
)
)
)

View File

@ -160,8 +160,8 @@
// Get topicid, forumid, number of pages
$DB->query("SELECT DISTINCT
RequestID,
CEIL((SELECT COUNT(rc1.ID) FROM requests_comments AS rc1 WHERE rc1.RequestID=rc.RequestID)/".TORRENT_COMMENTS_PER_PAGE.") AS Pages,
CEIL((SELECT COUNT(rc2.ID) FROM requests_comments AS rc2 WHERE rc2.ID<='".db_string($_GET['postid'])."')/".TORRENT_COMMENTS_PER_PAGE.") AS Page
CEIL(COUNT(rc.ID)/".TORRENT_COMMENTS_PER_PAGE.") AS Pages,
CEIL(SUM(IF(rc.ID<=".$_GET['postid'].",1,0))/".TORRENT_COMMENTS_PER_PAGE.") AS Page
FROM requests_comments AS rc
WHERE rc.RequestID=(SELECT RequestID FROM requests_comments WHERE ID='".db_string($_GET['postid'])."')");
list($RequestID,$Pages,$Page)=$DB->next_record();

View File

@ -378,16 +378,22 @@
SELECT
aa.ArtistID,
aa.AliasID,
aa.Name,
aa.Redirect
FROM artists_alias AS aa
WHERE aa.Name LIKE '".db_string($Artist['name'])."'");
if($DB->record_count() > 0) {
list($ArtistID, $AliasID, $Redirect) = $DB->next_record();
while($Result = $DB->next_record(MYSQLI_NUM, false)) {
list($ArtistID, $AliasID, $AliasName, $Redirect) = $Result;
if(!strcasecmp($Artist['name'], $AliasName)) {
if($Redirect) {
$AliasID = $Redirect;
}
$ArtistForm[$Importance][$Num] = array('id' => $ArtistID, 'aliasid' => $AliasID, 'name' => $Artist['name']);
break;
}
}
$ArtistForm[$Importance][$Num] = array('id' => $ArtistID, 'aliasid' => $AliasID, 'name' => $AliasName);
$Cache->delete_value('artist_'.$ArtistID);
} else {
//2. For each artist that didn't exist, create an artist.

View File

@ -17,16 +17,16 @@
One account per person per lifetime. Anyone creating additional accounts will be banned.
</li>
<li>
Avatars must not exceed 256kB or be vertically longer than 400px. Avatars must be safe for work, be entirely unoffensive and not contain any nudity or religious imagery. Use common sense.
Avatars must not exceed 256 kB or be vertically longer than 400 pixels. Avatars must be safe for work, be entirely unoffensive, and cannot contain any nudity or religious imagery. Use common sense.
</li>
<li>
Do not post our .torrent files on other sites. Every .torrent file has your personal passkey embedded in it. The tracker will automatically disable your account if you share your torrent files with others. You will not get your account back. This doesn't prohibit you sharing the content on other sites, just the .torrent file.
Do not post our .torrent files on other sites. Every .torrent file has your personal passkey embedded in it. The tracker will automatically disable your account if you share your torrent files with others. You will not get your account back. This doesn't prohibit you from sharing the content on other sites, but does prohibit you from sharing the .torrent file.
</li>
<li>
Any torrent you are seeding to this tracker must only have our tracker's URL in it. Adding another tracker's URL will cause incorrect data to be sent to our tracker, and will lead to you getting disabled for cheating.
Any torrent you are seeding to this tracker must only have our tracker's URL in it. Adding another tracker's URL will cause incorrect data to be sent to our tracker, and will lead to your getting disabled for cheating.
</li>
<li>
This is a torrent site which promotes sharing amongst the community. If you are not willing to give back to the community what you take from it, this site is not for you. In other words, we expect you to have an acceptable share ratio. If you download a torrent, please, seed the copy you have until there are sufficient people seeding as well before you stop.
This is a torrent site which promotes sharing amongst the community. If you are not willing to give back to the community what you take from it, this site is not for you. In other words, we expect you to have an acceptable share ratio. If you download a torrent, please, seed the copy you have until there are sufficient people seeding the torrent data before you stop.
</li>
<li>
Do not browse the site using proxies or TOR. The site will automatically alert us. This includes VPNs with dynamic IP addresses.
@ -38,7 +38,7 @@
Trading and selling invites is strictly prohibited, as is offering them in public - this includes on any forum which is not a class-restricted section on an invitation-only torrent site.
</li>
<li>
Trading, selling, sharing, or giving away your account is prohibited as well. PM a mod to disable you if you no longer want it.
Trading, selling, sharing, or giving away your account is prohibited. PM a mod to disable your account if you no longer want it.
</li>
<li>
You're completely responsible for the people you invite. If your invitees are caught cheating or trading/selling invites, not only will they be banned, so will you. Be careful who you invite. Invites are a precious commodity.
@ -50,10 +50,10 @@
Attempting to find or exploit a bug in the site code is the worst possible offense you can commit. We have automatic systems in place for monitoring these activities, and committing them will result in the banning of you, your inviter, and your inviter's entire invite tree.
</li>
<li>
We're a community. Working together is what makes this place what it is. There are well over a thousand new torrents uploaded every day and sadly the staff aren't psychic. If you come across something which violates a rule, report it! Ignoring it is only damaging the community.
We're a community. Working together is what makes this place what it is. There are well over a thousand new torrents uploaded every day and sadly the staff aren't psychic. If you come across something that violates a rule, report it and help us better organize the site for you.
</li>
<li>
We respect the wishes of other sites here, as we wish for them to do the same. Please refrain from posting links or full names of sites that want not to be mentioned.
We respect the wishes of other sites here, as we wish for them to do the same. Please refrain from posting links to or full names for sites that do not want to be mentioned.
</li>
</ul>
</div>

File diff suppressed because it is too large Load Diff

View File

@ -7,12 +7,12 @@
show_header();
//requires wget, unzip commands to be installed
shell_exec('wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity_CSV/GeoLiteCity_'.date('Ym').'03.zip');
shell_exec('wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity_CSV/GeoLiteCity_'.date('Ym').'04.zip');
//shell_exec('wget http://debug.what.cd/GeoLiteCity_'.date('Ym').'01.zip');
shell_exec('unzip GeoLiteCity_'.date('Ym').'03.zip');
shell_exec('rm GeoLiteCity_'.date('Ym').'03.zip');
shell_exec('unzip GeoLiteCity_'.date('Ym').'04.zip');
shell_exec('rm GeoLiteCity_'.date('Ym').'04.zip');
if(($Locations = file("GeoLiteCity_".date('Ym')."03/GeoLiteCity-Location.csv", FILE_IGNORE_NEW_LINES)) === false) {
if(($Locations = file("GeoLiteCity_".date('Ym')."04/GeoLiteCity-Location.csv", FILE_IGNORE_NEW_LINES)) === false) {
error("Download or extraction of maxmind database failed");
}
array_shift($Locations);
@ -31,7 +31,7 @@
echo "There are ".count($CountryIDs)." CountryIDs";
echo "<br />";
if(($Blocks = file("GeoLiteCity_".date('Ym')."03/GeoLiteCity-Blocks.csv", FILE_IGNORE_NEW_LINES)) === false) {
if(($Blocks = file("GeoLiteCity_".date('Ym')."04/GeoLiteCity-Blocks.csv", FILE_IGNORE_NEW_LINES)) === false) {
echo "Error";
}
array_shift($Blocks);

View File

@ -29,7 +29,15 @@
$DB->query("INSERT INTO artists_alias (ArtistID, Name) VALUES ('$ArtistID', '$AliasName')");
$AliasID = $DB->inserted_id();
} else {
list($AliasID, $ArtistID, $Redirect, $AliasName) = $DB->next_record();
list($AliasID, $ArtistID, $Redirect, $FoundAliasName) = $DB->next_record(MYSQLI_NUM, false);
if($DB->record_count() > 1 && strcasecmp($AliasName, $FoundAliasName)) {
while($Result = $DB->next_record(MYSQLI_NUM, false)) {
list($AliasID, $ArtistID, $Redirect, $FoundAliasName) = $Result;
if(!strcasecmp($AliasName, $FoundAliasName)) {
break;
}
}
}
if($Redirect) {
$AliasID = $Redirect;
}

View File

@ -107,6 +107,7 @@ function header_link($SortKey,$DefaultWay="desc") {
foreach($SearchBitrates as $ID=>$Val) {
$SearchBitrates[$ID]=strtolower($Val);
}
foreach($Formats as $ID=>$Val) {
$SearchFormats[$ID]=strtolower($Val);
}
@ -903,7 +904,7 @@ function header_link($SortKey,$DefaultWay="desc") {
[ <a href="torrents.php?action=download&amp;id=<?=$TorrentID?>&amp;authkey=<?=$LoggedUser['AuthKey']?>&amp;torrent_pass=<?=$LoggedUser['torrent_pass']?>" title="Download"><?=$Data['HasFile'] ? 'DL' : 'Missing'?></a>
<? if (($LoggedUser['FLTokens'] > 0) && $Data['HasFile'] && ($Data['Size'] < 1073741824)
&& !in_array($TorrentID, $TokenTorrents) && empty($Data['FreeTorrent']) && ($LoggedUser['CanLeech'] == '1')) { ?>
| <a href="torrents.php?action=download&amp;id=<?=$TorrentID?>&amp;authkey=<?=$LoggedUser['AuthKey']?>&amp;torrent_pass=<?=$LoggedUser['torrent_pass']?>&usetoken=1" title="Use a FL Token" onClick="return confirm('Are you sure you want to use a freeleech token here?');">FL</a>
| <a href="torrents.php?action=download&amp;id=<?=$TorrentID?>&amp;authkey=<?=$LoggedUser['AuthKey']?>&amp;torrent_pass=<?=$LoggedUser['torrent_pass']?>&amp;usetoken=1" title="Use a FL Token" onClick="return confirm('Are you sure you want to use a freeleech token here?');">FL</a>
<? } ?>
| <a href="reportsv2.php?action=report&amp;id=<?=$TorrentID?>" title="Report">RP</a> ]
</span>
@ -942,7 +943,7 @@ function header_link($SortKey,$DefaultWay="desc") {
[ <a href="torrents.php?action=download&amp;id=<?=$TorrentID?>&amp;authkey=<?=$LoggedUser['AuthKey']?>&amp;torrent_pass=<?=$LoggedUser['torrent_pass']?>" title="Download">DL</a>
<? if (($LoggedUser['FLTokens'] > 0) && $Data['HasFile'] && ($Data['Size'] < 1073741824)
&& !in_array($TorrentID, $TokenTorrents) && empty($Data['FreeTorrent']) && ($LoggedUser['CanLeech'] == '1')) { ?>
| <a href="torrents.php?action=download&amp;id=<?=$TorrentID ?>&amp;authkey=<?=$LoggedUser['AuthKey']?>&amp;torrent_pass=<?=$LoggedUser['torrent_pass']?>&usetoken=1" title="Use a FL Token" onClick="return confirm('Are you sure you want to use a freeleech token here?');">FL</a>
| <a href="torrents.php?action=download&amp;id=<?=$TorrentID ?>&amp;authkey=<?=$LoggedUser['AuthKey']?>&amp;torrent_pass=<?=$LoggedUser['torrent_pass']?>&amp;usetoken=1" title="Use a FL Token" onClick="return confirm('Are you sure you want to use a freeleech token here?');">FL</a>
<? } ?>
| <a href="reportsv2.php?action=report&amp;id=<?=$TorrentID?>" title="Report">RP</a>]
</span>

View File

@ -522,7 +522,7 @@ function filelist($Str) {
<span>[ <a href="torrents.php?action=download&amp;id=<?=$TorrentID ?>&amp;authkey=<?=$LoggedUser['AuthKey']?>&amp;torrent_pass=<?=$LoggedUser['torrent_pass']?>" title="Download"><?=$HasFile ? 'DL' : 'Missing'?></a>
<? if (($LoggedUser['FLTokens'] > 0) && $HasFile && ($Size < 1073741824)
&& !in_array($TorrentID, $TokenTorrents) && ($FreeTorrent == '0') && ($LoggedUser['CanLeech'] == '1')) { ?>
| <a href="torrents.php?action=download&amp;id=<?=$TorrentID ?>&amp;authkey=<?=$LoggedUser['AuthKey']?>&amp;torrent_pass=<?=$LoggedUser['torrent_pass']?>&usetoken=1" title="Use a FL Token" onClick="return confirm('Are you sure you want to use a freeleech token here?');">FL</a>
| <a href="torrents.php?action=download&amp;id=<?=$TorrentID ?>&amp;authkey=<?=$LoggedUser['AuthKey']?>&amp;torrent_pass=<?=$LoggedUser['torrent_pass']?>&amp;usetoken=1" title="Use a FL Token" onClick="return confirm('Are you sure you want to use a freeleech token here?');">FL</a>
<? } ?>
| <a href="reportsv2.php?action=report&amp;id=<?=$TorrentID?>" title="Report">RP</a>
<? if($CanEdit) { ?>

View File

@ -45,8 +45,7 @@
INNER JOIN torrents_group AS tg ON tg.ID=t.GroupID
WHERE t.ID='".db_string($TorrentID)."'");
if($DB->record_count() < 1) {
header('Location: log.php?search='.$TorrentID);
die();
error(404);
}
$Info = array($DB->next_record(MYSQLI_NUM, array(4,5,6,10)));
$Artists = get_artist($Info[0][4],false);

View File

@ -36,8 +36,10 @@
if ($TorrentID != 0) {
$DB->query("SELECT Media, Format, Encoding FROM torrents WHERE ID=".$TorrentID);
list($Media, $Format, $Encoding) = $DB->next_record();
if ($Media == "") { ?>
if ($DB->record_count() == 0) { ?>
<td><a href="torrents.php?torrentid=<?=$TorrentID?>"><?=$TorrentID?></a> (Deleted)</td><?
} elseif ($Media == "") { ?>
<td><a href="torrents.php?torrentid=<?=$TorrentID?>"><?=$TorrentID?></a></td><?
} else { ?>
<td><a href="torrents.php?torrentid=<?=$TorrentID?>"><?=$TorrentID?></a> (<?=$Format?>/<?=$Encoding?>/<?=$Media?>)</td>
<? }

View File

@ -309,12 +309,13 @@ function js_pages($Action, $TorrentID, $NumResults, $CurrentPage) {
if (!check_perms('site_moderate_forums')) { error(403); }
// Get topicid, forumid, number of pages
$DB->query("SELECT DISTINCT
$DB->query("SELECT
GroupID,
CEIL((SELECT COUNT(tc1.ID) FROM torrents_comments AS tc1 WHERE tc1.GroupID=tc.GroupID)/".TORRENT_COMMENTS_PER_PAGE.") AS Pages,
CEIL((SELECT COUNT(tc2.ID) FROM torrents_comments AS tc2 WHERE tc2.ID<'".db_string($_GET['postid'])."')/".TORRENT_COMMENTS_PER_PAGE.") AS Page
CEIL(COUNT(tc.ID)/".TORRENT_COMMENTS_PER_PAGE.") AS Pages,
CEIL(SUM(IF(tc.ID<=".$_GET['postid'].",1,0))/".TORRENT_COMMENTS_PER_PAGE.") AS Page
FROM torrents_comments AS tc
WHERE tc.GroupID=(SELECT GroupID FROM torrents_comments WHERE ID='".db_string($_GET['postid'])."')");
WHERE tc.GroupID=(SELECT GroupID FROM torrents_comments WHERE ID=".$_GET['postid'].")
GROUP BY tc.GroupID");
list($GroupID,$Pages,$Page)=$DB->next_record();
// $Pages = number of pages in the thread
@ -353,8 +354,8 @@ function js_pages($Action, $TorrentID, $NumResults, $CurrentPage) {
list($Size, $Name) = $File;
$TmpFileList []= $Name .'{{{'.$Size.'}}}'; // Name {{{Size}}}
}
$FilePath = $Tor->Val['info']->Val['files'] ? db_string($Tor->Val['info']->Val['name']) : "";
$FileString = db_string(implode('|||', $TmpFileList));
$FilePath = $Tor->Val['info']->Val['files'] ? make_utf8($Tor->Val['info']->Val['name']) : "";
$FileString = make_utf8(implode('|||', $TmpFileList));
$DB->query("UPDATE torrents SET Size = ".$TotalSize.", FilePath = '".db_string($FilePath)."', FileList = '".db_string($FileString)."' WHERE ID = ".$TorrentID);
$Cache->delete_value('torrents_details_'.$GroupID);
}

View File

@ -172,7 +172,7 @@
[<a href="torrents.php?action=download&amp;id=<?=$TorrentID?>&amp;authkey=<?=$LoggedUser['AuthKey']?>&amp;torrent_pass=<?=$LoggedUser['torrent_pass']?>" title="Download">DL</a>
<? if (($LoggedUser['FLTokens'] > 0) && ($Size < 1073741824)
&& !in_array($TorrentID, $TokenTorrents) && empty($FreeTorrent) && ($LoggedUser['CanLeech'] == '1')) { ?>
| <a href="torrents.php?action=download&amp;id=<?=$TorrentID?>&amp;authkey=<?=$LoggedUser['AuthKey']?>&amp;torrent_pass=<?=$LoggedUser['torrent_pass']?>&usetoken=1" title="Use a FL Token" onClick="return confirm('Are you sure you want to use a freeleech token here?');">FL</a>
| <a href="torrents.php?action=download&amp;id=<?=$TorrentID?>&amp;authkey=<?=$LoggedUser['AuthKey']?>&amp;torrent_pass=<?=$LoggedUser['torrent_pass']?>&amp;usetoken=1" title="Use a FL Token" onClick="return confirm('Are you sure you want to use a freeleech token here?');">FL</a>
<? } ?>
| <a href="#" onclick="Clear(<?=$TorrentID?>);return false;" title="Remove from notifications list">CL</a>]
</span>

View File

@ -8,6 +8,7 @@
ini_set('upload_max_filesize',2097152);
ini_set('max_file_uploads',100);
define(MAX_FILENAME_LENGTH, 180);
require(SERVER_ROOT.'/classes/class_torrent.php');
include(SERVER_ROOT.'/classes/class_validate.php');
include(SERVER_ROOT.'/classes/class_feed.php');
@ -354,6 +355,7 @@
// File list and size
list($TotalSize, $FileList) = $Tor->file_list();
$DirName = $Tor->Val['info']->Val['name'];
$TmpFileList = array();
$HasLog = "'0'";
@ -386,15 +388,20 @@
if(preg_match('/\:/i', $Name)) {
$Err = 'The torrent contains one or more files with a :, which is a forbidden character. Please rename the files as necessary and recreate the .torrent file.';
}
// Make sure the filename is not too long
if(mb_strlen($Name, 'UTF-8') + mb_strlen($DirName, 'UTF-8') + 1 > MAX_FILENAME_LENGTH) {
$Err = 'The torrent contained one or more files with too long a name ('.$Name.')';
}
// Add file and size to array
$TmpFileList []= $Name .'{{{'.$Size.'}}}'; // Name {{{Size}}}
}
// To be stored in the database
$FilePath = $Tor->Val['info']->Val['files'] ? db_string($Tor->Val['info']->Val['name']) : "";
$FilePath = $Tor->Val['info']->Val['files'] ? db_string(make_utf8($Tor->Val['info']->Val['name'])) : "";
// Name {{{Size}}}|||Name {{{Size}}}|||Name {{{Size}}}|||Name {{{Size}}}
$FileString = "'".db_string(implode('|||', $TmpFileList))."'";
$FileString = "'".db_string(make_utf8(implode('|||', $TmpFileList)))."'";
// Number of files described in torrent
$NumFiles = count($FileList);
@ -504,15 +511,21 @@
SELECT
aa.ArtistID,
aa.AliasID,
aa.Name,
aa.Redirect
FROM artists_alias AS aa
WHERE aa.Name LIKE '".db_string($Artist['name'])."'");
if($DB->record_count() > 0){
list($ArtistID, $AliasID, $Redirect) = $DB->next_record();
while($Result = $DB->next_record(MYSQLI_NUM, false)) {
list($ArtistID, $AliasID, $AliasName, $Redirect) = $Result;
if(!strcasecmp($Artist['name'], $AliasName)) {
if($Redirect) {
$AliasID = $Redirect;
}
$ArtistForm[$Importance][$Num] = array('id' => $ArtistID, 'aliasid' => $AliasID, 'name' => $Artist['name']);
break;
}
}
$ArtistForm[$Importance][$Num] = array('id' => $ArtistID, 'aliasid' => $AliasID, 'name' => $AliasName);
}
}
}

View File

@ -29,7 +29,7 @@ function wrap($String, $ForceMatch = '', $IPSearch = false){
$Match = $ForceMatch;
}
if($Match == ' REGEXP '){
if(strpos($String, '\'') || preg_match('/^.*\\\\$/i', $String)){
if(strpos($String, '\'') !== false || preg_match('/^.*\\\\$/i', $String)){
error('Regex contains illegal characters.');
}
} else {
@ -480,8 +480,10 @@ function num_compare($Field, $Operand, $Num1, $Num2 = ''){
</td>
</tr>
<tr>
<td class="label nobr"></td>
<td></td>
<td class="label nobr">IP:</td>
<td>
<input type="text" name="ip" size="20" value="<?=display_str($_GET['ip'])?>" />
</td>
<td class="label nobr"></td>
<td></td>
<td class="label nobr">Secondary Class:</td>
@ -504,9 +506,13 @@ function num_compare($Field, $Operand, $Num1, $Num2 = ''){
</select>
</td>
<tr>
<td class="label nobr">IP:</td>
<td class="label nobr">Extra:</td>
<td>
<input type="text" name="ip" size="20" value="<?=display_str($_GET['ip'])?>" />
<input type="checkbox" name="ip_history" id="ip_history"<? if($_GET['ip_history']){ echo ' checked="checked"'; }?> />
<label for="ip_history">IP History</label>
<input type="checkbox" name="email_history" id="email_history"<? if($_GET['email_history']){ echo ' checked="checked"'; }?> />
<label for="email_history">Email History</label>
</td>
<td class="label nobr">Ratio:</td>
<td width="30%">
@ -625,13 +631,8 @@ function num_compare($Field, $Operand, $Num1, $Num2 = ''){
<td>
<input type="text" name="tracker_ip" size="20" value="<?=display_str($_GET['tracker_ip'])?>" />
</td>
<td class="label nobr">Extra</td>
<td class="label nobr"></td>
<td>
<input type="checkbox" name="ip_history" id="ip_history"<? if($_GET['ip_history']){ echo ' checked="checked"'; }?> />
<label for="ip_history">IP History</label>
<input type="checkbox" name="email_history" id="email_history"<? if($_GET['email_history']){ echo ' checked="checked"'; }?> />
<label for="email_history">Email History</label>
</td>
</tr>

View File

@ -298,18 +298,6 @@
$LightUpdates['Donor']=$Donor;
}
if ($Artist!=$Cur['Artist'] && (check_perms('users_promote_below') || check_perms('users_promote_to'))) {
$UpdateSet[]="Artist='$Artist'";
$EditSummary[]="artist status changed";
$LightUpdates['Artist']=$Artist;
if($Artist == 1) {
send_pm($UserID, 0, db_string("Artist Class"), db_string("Hi,\n\nCongratulations on your promotion to the artist class.
To add a recommendation, please go to [url=http://".NONSSL_SITE_URL."/tools.php?action=recommend]this tool[/url] (for the first time, you may have to go to [url=http://".NONSSL_SITE_URL."/tools.php?action=recommend&resetsession=1]this link[/url]) instead.
Please only recommend albums that you created yourself, or albums where you officially represent the artist in question.
\n\nThanks,\n ".SITE_NAME." staff"),'');
}
}
// Secondary classes
$OldClasses = $Cur['SecondaryClasses']?explode(',', $Cur['SecondaryClasses']):array();
$DroppedClasses = array_diff($OldClasses, $SecondaryClasses);
@ -337,6 +325,7 @@
$Values = array();
foreach ($AddedClasses as $PermID) {
$Values[] = "($UserID, $PermID)";
}
$DB->query("INSERT INTO users_levels (UserID, PermissionID) VALUES ".implode(', ',$Values));
//$LightUpdates['ExtraClasses']= array_fill_keys($SecondaryClasses, 1);

View File

@ -1020,14 +1020,14 @@ function check_paranoia_here($Setting) {
if (check_perms('users_edit_ratio',$Class) || (check_perms('users_edit_own_ratio') && $UserID == $LoggedUser['ID'])) {
?>
<tr>
<td class="label">Uploaded:</td>
<td class="label"><span title="Upload amount in bytes. Also accepts e.g. +20GB or -35.6364MB on the end">Uploaded:</span></td>
<td>
<input type="hidden" name="OldUploaded" value="<?=$Uploaded?>" />
<input type="text" size="20" name="Uploaded" value="<?=$Uploaded?>" />
</td>
</tr>
<tr>
<td class="label">Downloaded:</td>
<td class="label"><span title="Download amount in bytes. Also accepts e.g. +20GB or -35.6364MB on the end">Downloaded:</span></td>
<td>
<input type="hidden" name="OldDownloaded" value="<?=$Downloaded?>" />
<input type="text" size="20" name="Downloaded" value="<?=$Downloaded?>" />

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 106 KiB

View File

@ -87,8 +87,8 @@ function Delete(post) {
ajax.get("forums.php?action=delete&auth=" + authkey + "&postid=" + postid, function () {
$('#post' + postid).hide();
});
} else if (location.href.match(/collage\.php/)) {
ajax.get("collage.php?action=delete_comment&auth=" + authkey + "&postid=" + postid, function () {
} else if (location.href.match(/collages?\.php/)) {
ajax.get("collages.php?action=delete_comment&auth=" + authkey + "&postid=" + postid, function () {
$('#post' + postid).hide();
});
} else if (location.href.match(/requests\.php/)) {