mirror of
https://github.com/WhatCD/Gazelle.git
synced 2024-12-13 10:56:26 +00:00
6273679d49
fix typo I introduced in schedule.php Print to LAB_CHAN if sphinx connection fails nice bitcoin display Corrects [#] tag for Mono [hateradio] bitcoin donation Fix torrent unbookmarking upgraded sphinxapi.php to r2876 as the site is running r2902 Added options to block Tor, Opera Turbo and Opera Mini check for stale cache vanity house [clone00] bookmark almost anything [patapper] new torrent edit flags [rattvis] permissions stuff from patappatch c [BBCode] new [important] tag [DutchDude] Fixed images flowing past their boxes [hateradio] [BBCode] Tag for ordered lists. [hateradio] finally fixed that annoying textarea-resizing thing renamed temporary tables fixes http://what.cd/forums.php?action=viewthread&threadid=137432&page=1#post3408738 implements http://what.cd/forums.php?action=viewthread&threadid=122832 fixes http://what.cd/forums.php?action=viewthread&threadid=136553 fixes http://what.cd/forums.php?action=viewthread&threadid=112967 implements http://what.cd/forums.php?action=viewthread&threadid=110395
399 lines
14 KiB
PHP
399 lines
14 KiB
PHP
<?
|
|
//******************************************************************************//
|
|
//--------------- Take edit ----------------------------------------------------//
|
|
// This pages handles the backend of the 'edit torrent' function. It checks //
|
|
// the data, and if it all validates, it edits the values in the database //
|
|
// that correspond to the torrent in question. //
|
|
//******************************************************************************//
|
|
|
|
enforce_login();
|
|
authorize();
|
|
|
|
|
|
require(SERVER_ROOT.'/classes/class_validate.php');
|
|
$Validate = new VALIDATE;
|
|
|
|
//******************************************************************************//
|
|
//--------------- Set $Properties array ----------------------------------------//
|
|
// This is used if the form doesn't validate, and when the time comes to enter //
|
|
// it into the database. //
|
|
//******************************************************************************//
|
|
|
|
$Properties=array();
|
|
$TypeID = (int)$_POST['type'];
|
|
$Type = $Categories[$TypeID-1];
|
|
$TorrentID = (int)$_POST['torrentid'];
|
|
$Properties['Remastered'] = (isset($_POST['remaster']))? 1 : 0;
|
|
if($Properties['Remastered']) {
|
|
$Properties['UnknownRelease'] = (isset($_POST['unknown'])) ? 1 : 0;
|
|
$Properties['RemasterYear'] = $_POST['remaster_year'];
|
|
$Properties['RemasterTitle'] = $_POST['remaster_title'];
|
|
$Properties['RemasterRecordLabel'] = $_POST['remaster_record_label'];
|
|
$Properties['RemasterCatalogueNumber'] = $_POST['remaster_catalogue_number'];
|
|
}
|
|
if(!$Properties['Remastered']) {
|
|
$Properties['UnknownRelease'] = 0;
|
|
$Properties['RemasterYear'] = '';
|
|
$Properties['RemasterTitle'] = '';
|
|
$Properties['RemasterRecordLabel'] = '';
|
|
$Properties['RemasterCatalogueNumber'] = '';
|
|
}
|
|
$Properties['Scene'] = (isset($_POST['scene']))? 1 : 0;
|
|
$Properties['HasLog'] = (isset($_POST['flac_log']))? 1 : 0;
|
|
$Properties['HasCue'] = (isset($_POST['flac_cue']))? 1 : 0;
|
|
$Properties['BadTags'] = (isset($_POST['bad_tags']))? 1 : 0;
|
|
$Properties['BadFolders'] = (isset($_POST['bad_folders']))? 1 : 0;
|
|
$Properties['BadFiles'] = (isset($_POST['bad_files'])) ? 1 : 0;
|
|
$Properties['CassetteApproved'] = (isset($_POST['cassette_approved']))? 1 : 0;
|
|
$Properties['LossymasterApproved'] = (isset($_POST['lossymaster_approved']))? 1 : 0;
|
|
$Properties['Format'] = $_POST['format'];
|
|
$Properties['Media'] = $_POST['media'];
|
|
$Properties['Bitrate'] = $_POST['bitrate'];
|
|
$Properties['Encoding'] = $_POST['bitrate'];
|
|
$Properties['Trumpable'] = (isset($_POST['make_trumpable'])) ? 1 : 0;
|
|
$Properties['TorrentDescription'] = $_POST['release_desc'];
|
|
$Properties['Name'] = $_POST['title'];
|
|
if($_POST['album_desc']) {
|
|
$Properties['GroupDescription'] = $_POST['album_desc'];
|
|
}
|
|
if(check_perms('torrents_freeleech')) {
|
|
$Free = (int)$_POST['freeleech'];
|
|
if(!in_array($Free, array(0,1,2))) {
|
|
error(404);
|
|
}
|
|
$Properties['FreeLeech'] = $Free;
|
|
|
|
if($Free == 0) {
|
|
$FreeType = 0;
|
|
} else {
|
|
$FreeType = (int)$_POST['freeleechtype'];
|
|
if(!in_array($Free, array(0,1,2,3))) {
|
|
error(404);
|
|
}
|
|
}
|
|
$Properties['FreeLeechType'] = $FreeType;
|
|
}
|
|
|
|
//******************************************************************************//
|
|
//--------------- Validate data in edit form -----------------------------------//
|
|
|
|
$DB->query('SELECT UserID, Remastered, RemasterYear, FreeTorrent FROM torrents WHERE ID='.$TorrentID);
|
|
list($UserID, $Remastered, $RemasterYear, $CurFreeLeech) = $DB->next_record(MYSQLI_BOTH, false);
|
|
|
|
if($LoggedUser['ID']!=$UserID && !check_perms('torrents_edit')) {
|
|
error(403);
|
|
}
|
|
|
|
if($Remastered == '1' && !$RemasterYear && !check_perms('edit_unknowns')) {
|
|
error(403);
|
|
}
|
|
|
|
if($Properties['UnknownRelease'] && !($Remastered == '1' && !$RemasterYear) && !check_perms('edit_unknowns')) {
|
|
//It's Unknown now, and it wasn't before
|
|
$DB->query("SELECT UserID FROM torrents WHERE ID = ".$TorrentID);
|
|
list($UploaderID) = $DB->next_record();
|
|
if($LoggedUser['ID'] != $UploaderID) {
|
|
//Hax
|
|
die();
|
|
}
|
|
}
|
|
|
|
$Validate->SetFields('type','1','number','Not a valid type.',array('maxlength'=>count($Categories), 'minlength'=>1));
|
|
switch ($Type) {
|
|
case 'Music':
|
|
if(!empty($Properties['Remastered']) && !$Properties['UnknownRelease']){
|
|
$Validate->SetFields('remaster_year', '1', 'number', 'Year of remaster/re-issue must be entered.');
|
|
} else {
|
|
$Validate->SetFields('remaster_year', '0','number', 'Invalid remaster year.');
|
|
}
|
|
|
|
if (!empty($Properties['Remastered']) && !$Properties['UnknownRelease'] && $Properties['RemasterYear'] < 1982 && $Properties['Media'] == 'CD') {
|
|
error("You have selected a year for an album that predates the media you say it was created on.");
|
|
header("Location: torrents.php?action=edit&id=$TorrentID");
|
|
die();
|
|
}
|
|
|
|
$Validate->SetFields('remaster_title',
|
|
'0','string','Remaster title must be between 2 and 80 characters.',array('maxlength'=>80, 'minlength'=>2));
|
|
|
|
if ($Properties['RemasterTitle'] == 'Original Release') {
|
|
error('"Original Release" is not a valid remaster title.');
|
|
header("Location: torrents.php?action=edit&id=$TorrentID");
|
|
die();
|
|
}
|
|
|
|
$Validate->SetFields('remaster_record_label',
|
|
'0','string','Remaster record label must be between 2 and 80 characters.',array('maxlength'=>80, 'minlength'=>2));
|
|
|
|
$Validate->SetFields('remaster_catalogue_number',
|
|
'0','string','Remaster catalogue number must be between 2 and 80 characters.',array('maxlength'=>80, 'minlength'=>2));
|
|
|
|
|
|
$Validate->SetFields('format',
|
|
'1','inarray','Not a valid format.',array('inarray'=>$Formats));
|
|
|
|
$Validate->SetFields('bitrate',
|
|
'1','inarray','You must choose a bitrate.', array('inarray'=>$Bitrates));
|
|
|
|
|
|
// Handle 'other' bitrates
|
|
if($Properties['Encoding'] == 'Other') {
|
|
$Validate->SetFields('other_bitrate',
|
|
'1','text','You must enter the other bitrate (max length: 9 characters).', array('maxlength'=>9));
|
|
$enc = trim($_POST['other_bitrate']);
|
|
if(isset($_POST['vbr'])) { $enc.=' (VBR)'; }
|
|
|
|
$Properties['Encoding'] = $enc;
|
|
$Properties['Bitrate'] = $enc;
|
|
} else {
|
|
$Validate->SetFields('bitrate',
|
|
'1','inarray','You must choose a bitrate.', array('inarray'=>$Bitrates));
|
|
}
|
|
|
|
$Validate->SetFields('media',
|
|
'1','inarray','Not a valid media.',array('inarray'=>$Media));
|
|
|
|
$Validate->SetFields('release_desc',
|
|
'0','string','Invalid release description.',array('maxlength'=>1000000, 'minlength'=>0));
|
|
|
|
break;
|
|
|
|
case 'Audiobooks':
|
|
case 'Comedy':
|
|
/*$Validate->SetFields('title',
|
|
'1','string','Title must be between 2 and 300 characters.',array('maxlength'=>300, 'minlength'=>2));
|
|
^ this is commented out because there is no title field on these pages*/
|
|
$Validate->SetFields('year',
|
|
'1','number','The year of the release must be entered.');
|
|
|
|
$Validate->SetFields('format',
|
|
'1','inarray','Not a valid format.',array('inarray'=>$Formats));
|
|
|
|
$Validate->SetFields('bitrate',
|
|
'1','inarray','You must choose a bitrate.', array('inarray'=>$Bitrates));
|
|
|
|
|
|
// Handle 'other' bitrates
|
|
if($Properties['Encoding'] == 'Other') {
|
|
$Validate->SetFields('other_bitrate',
|
|
'1','text','You must enter the other bitrate (max length: 9 characters).', array('maxlength'=>9));
|
|
$enc = trim($_POST['other_bitrate']);
|
|
if(isset($_POST['vbr'])) { $enc.=' (VBR)'; }
|
|
|
|
$Properties['Encoding'] = $enc;
|
|
$Properties['Bitrate'] = $enc;
|
|
} else {
|
|
$Validate->SetFields('bitrate',
|
|
'1','inarray','You must choose a bitrate.', array('inarray'=>$Bitrates));
|
|
}
|
|
|
|
$Validate->SetFields('release_desc',
|
|
'0','string','The release description has a minimum length of 10 characters.',array('maxlength'=>1000000, 'minlength'=>10));
|
|
|
|
break;
|
|
|
|
case 'Applications':
|
|
case 'Comics':
|
|
case 'E-Books':
|
|
case 'E-Learning Videos':
|
|
/*$Validate->SetFields('title',
|
|
'1','string','Title must be between 2 and 300 characters.',array('maxlength'=>300, 'minlength'=>2));
|
|
^ this is commented out because there is no title field on these pages*/
|
|
break;
|
|
}
|
|
|
|
$Err = $Validate->ValidateForm($_POST); // Validate the form
|
|
|
|
if($Properties['Remastered'] && !$Properties['RemasterYear']) {
|
|
//Unknown Edit!
|
|
if($LoggedUser['ID'] == $UserID || check_perms('edit_unknowns')) {
|
|
//Fine!
|
|
} else {
|
|
$Err = "You may not edit somebody elses upload to unknown";
|
|
}
|
|
}
|
|
|
|
if($Err){ // Show the upload form, with the data the user entered
|
|
if(check_perms('site_debug')) {
|
|
die($Err);
|
|
}
|
|
error($Err);
|
|
}
|
|
|
|
|
|
//******************************************************************************//
|
|
//--------------- Make variables ready for database input ----------------------//
|
|
|
|
// Shorten and escape $Properties for database input
|
|
$T = array();
|
|
foreach ($Properties as $Key => $Value) {
|
|
$T[$Key]="'".db_string(trim($Value))."'";
|
|
if(!$T[$Key]){
|
|
$T[$Key] = NULL;
|
|
}
|
|
}
|
|
|
|
|
|
//******************************************************************************//
|
|
//--------------- Start database stuff -----------------------------------------//
|
|
|
|
$DBTorVals = array();
|
|
$DB->query("SELECT Media, Format, Encoding, RemasterYear, Remastered, RemasterTItle, RemasterRecordLabel, RemasterCatalogueNumber, Scene, Description FROM torrents WHERE ID = ".$TorrentID);
|
|
$DBTorVals = $DB->to_array(false, MYSQLI_ASSOC);
|
|
$DBTorVals = $DBTorVals[0];
|
|
$LogDetails = "";
|
|
foreach ($DBTorVals as $Key => $Value) {
|
|
$Value = "'".$Value."'";
|
|
if ($Value != $T[$Key]) {
|
|
if (!isset($T[$Key])) {
|
|
continue;
|
|
}
|
|
if ((empty($Value) && empty($T[$Key])) || ($Value == "'0'" && $T[$Key] == "''")) {
|
|
continue;
|
|
}
|
|
if ($LogDetails == "") {
|
|
$LogDetails = $Key.": ".$Value." -> ".$T[$Key];
|
|
} else {
|
|
$LogDetails = $LogDetails.", ".$Key.": ".$Value." -> ".$T[$Key];
|
|
}
|
|
}
|
|
}
|
|
|
|
// Update info for the torrent
|
|
$SQL = "
|
|
UPDATE torrents SET
|
|
Media=$T[Media],
|
|
Format=$T[Format],
|
|
Encoding=$T[Encoding],
|
|
RemasterYear=$T[RemasterYear],
|
|
Remastered=$T[Remastered],
|
|
RemasterTitle=$T[RemasterTitle],
|
|
RemasterRecordLabel=$T[RemasterRecordLabel],
|
|
RemasterCatalogueNumber=$T[RemasterCatalogueNumber],
|
|
Scene=$T[Scene],
|
|
Description=$T[TorrentDescription],";
|
|
|
|
if(check_perms('torrents_freeleech')) {
|
|
$SQL .= "FreeTorrent=$T[FreeLeech],";
|
|
$SQL .= "FreeLeechType=$T[FreeLeechType],";
|
|
}
|
|
|
|
if(check_perms('users_mod')) {
|
|
if($T[Format] != "'FLAC'") {
|
|
$SQL .= "
|
|
HasLog='0',
|
|
HasCue='0',
|
|
";
|
|
} else {
|
|
$SQL .= "
|
|
HasLog=$T[HasLog],
|
|
HasCue=$T[HasCue],
|
|
";
|
|
}
|
|
|
|
$DB->query("SELECT TorrentID FROM torrents_bad_tags WHERE TorrentID='$TorrentID'");
|
|
list($btID) = $DB->next_record();
|
|
|
|
if (!$btID && $Properties['BadTags']) {
|
|
$DB->query("INSERT INTO torrents_bad_tags VALUES($TorrentID, $LoggedUser[ID], '".sqltime()."')");
|
|
}
|
|
if ($btID && !$Properties['BadTags']) {
|
|
$DB->query("DELETE FROM torrents_bad_tags WHERE TorrentID='$TorrentID'");
|
|
}
|
|
|
|
$DB->query("SELECT TorrentID FROM torrents_bad_folders WHERE TorrentID='$TorrentID'");
|
|
list($bfID) = $DB->next_record();
|
|
|
|
if (!$bfID && $Properties['BadFolders']) {
|
|
$DB->query("INSERT INTO torrents_bad_folders VALUES($TorrentID, $LoggedUser[ID], '".sqltime()."')");
|
|
}
|
|
if ($bfID && !$Properties['BadFolders']) {
|
|
$DB->query("DELETE FROM torrents_bad_folders WHERE TorrentID='$TorrentID'");
|
|
}
|
|
|
|
$DB->query("SELECT TorrentID FROM torrents_bad_files WHERE TorrentID='$TorrentID'");
|
|
list($bfiID) = $DB->next_record();
|
|
|
|
if (!$bfiID && $Properties['BadFiles']) {
|
|
$DB->query("INSERT INTO torrents_bad_files VALUES($TorrentID, $LoggedUser[ID], '".sqltime()."')");
|
|
}
|
|
if ($bfiID && !$Properties['BadFiles']) {
|
|
$DB->query("DELETE FROM torrents_bad_files WHERE TorrentID='$TorrentID'");
|
|
}
|
|
|
|
$DB->query("SELECT TorrentID FROM torrents_cassette_approved WHERE TorrentID='$TorrentID'");
|
|
list($caID) = $DB->next_record();
|
|
|
|
if (!$caID && $Properties['CassetteApproved']) {
|
|
$DB->query("INSERT INTO torrents_cassette_approved VALUES($TorrentID, $LoggedUser[ID], '".sqltime()."')");
|
|
}
|
|
if ($caID && !$Properties['CassetteApproved']) {
|
|
$DB->query("DELETE FROM torrents_cassette_approved WHERE TorrentID='$TorrentID'");
|
|
}
|
|
|
|
$DB->query("SELECT TorrentID FROM torrents_lossymaster_approved WHERE TorrentID='$TorrentID'");
|
|
list($lmaID) = $DB->next_record();
|
|
|
|
if (!$lmaID && $Properties['LossymasterApproved']) {
|
|
$DB->query("INSERT INTO torrents_lossymaster_approved VALUES($TorrentID, $LoggedUser[ID], '".sqltime()."')");
|
|
}
|
|
if ($lmaID && !$Properties['LossymasterApproved']) {
|
|
$DB->query("DELETE FROM torrents_lossymaster_approved WHERE TorrentID='$TorrentID'");
|
|
}
|
|
}
|
|
|
|
$SQL .= "
|
|
flags='2'
|
|
WHERE ID=$TorrentID
|
|
";
|
|
$DB->query($SQL);
|
|
|
|
if(check_perms('torrents_freeleech') && $Properties['FreeLeech'] != $CurFreeLeech) {
|
|
freeleech_torrents($TorrentID, $Properties['FreeLeech'], $Properties['FreeLeechType']);
|
|
}
|
|
|
|
$DB->query("SELECT GroupID, Time FROM torrents WHERE ID='$TorrentID'");
|
|
list($GroupID, $Time) = $DB->next_record();
|
|
|
|
// Competition
|
|
if(strtotime($Time)>1241352173) {
|
|
if($_POST['log_score'] == '100') {
|
|
$DB->query("INSERT IGNORE into users_points (GroupID, UserID, Points) VALUES ('$GroupID', '$UserID', '1')");
|
|
}
|
|
}
|
|
// End competiton
|
|
|
|
$DB->query("SELECT LogScore FROM torrents WHERE ID = ".$TorrentID);
|
|
list($LogScore) = $DB->next_record();
|
|
if ($Properties['Trumpable'] == 1 && $LogScore == 100) {
|
|
$DB->query("UPDATE torrents SET LogScore = 99 WHERE ID = ".$TorrentID);
|
|
$Results = array();
|
|
$Results[] = "The original uploader has chosen to allow this log to be deducted one point for using EAC v0.95., -1 point [1]";
|
|
$Details = db_string(serialize($Results));
|
|
$DB->query("UPDATE torrents_logs_new SET Score = 99, Details = '".$Details."' WHERE TorrentID = ".$TorrentID);
|
|
}
|
|
|
|
if ($Properties['Trumpable'] == 0 && $LogScore == 99) {
|
|
$DB->query("UPDATE torrents SET LogScore = 100 WHERE ID = ".$TorrentID);
|
|
$DB->query("UPDATE torrents_logs_new SET Score = 100, Details = '' WHERE TorrentID = ".$TorrentID);
|
|
}
|
|
|
|
$DB->query("SELECT Name FROM torrents_group WHERE ID=$GroupID");
|
|
list($Name) = $DB->next_record();
|
|
|
|
write_log("Torrent $TorrentID ($Name) in group $GroupID was edited by ".$LoggedUser['Username']." (".$LogDetails.")"); // TODO: this is probably broken
|
|
$Cache->delete_value('torrents_details_'.$GroupID);
|
|
$Cache->delete_value('torrent_download_'.$TorrentID);
|
|
|
|
$DB->query("SELECT ArtistID FROM torrents_artists WHERE GroupID = ".$GroupID);
|
|
$Artists = $DB->collect('ArtistID');
|
|
foreach($Artists as $ArtistID) {
|
|
$Cache->delete_value('artist_'.$ArtistID);
|
|
}
|
|
|
|
update_hash($GroupID);
|
|
// All done!
|
|
|
|
header("Location: torrents.php?id=$GroupID");
|
|
?>
|