2011-03-28 14:21:28 +00:00
< ?
//******************************************************************************//
//--------------- Fill a request -----------------------------------------------//
$RequestID = $_REQUEST [ 'requestid' ];
2013-04-15 08:00:54 +00:00
if ( ! is_number ( $RequestID )) {
2011-03-28 14:21:28 +00:00
error ( 0 );
}
authorize ();
//VALIDATION
2013-04-15 08:00:54 +00:00
if ( ! empty ( $_GET [ 'torrentid' ]) && is_number ( $_GET [ 'torrentid' ])) {
2011-03-28 14:21:28 +00:00
$TorrentID = $_GET [ 'torrentid' ];
} else {
2013-04-15 08:00:54 +00:00
if ( empty ( $_POST [ 'link' ])) {
2011-03-28 14:21:28 +00:00
$Err = " You forgot to supply a link to the filling torrent " ;
} else {
$Link = $_POST [ 'link' ];
2013-04-15 08:00:54 +00:00
if ( preg_match ( " / " . TORRENT_REGEX . " /i " , $Link , $Matches ) < 1 ) {
2011-03-28 14:21:28 +00:00
$Err = " Your link didn't seem to be a valid torrent link " ;
} else {
$TorrentID = $Matches [ 0 ];
}
}
2013-02-19 08:00:30 +00:00
2013-04-15 08:00:54 +00:00
if ( ! empty ( $Err )) {
2011-03-28 14:21:28 +00:00
error ( $Err );
}
2013-02-19 08:00:30 +00:00
2011-03-28 14:21:28 +00:00
preg_match ( " /torrentid=([0-9]+)/i " , $Link , $Matches );
$TorrentID = $Matches [ 1 ];
2013-04-15 08:00:54 +00:00
if ( ! $TorrentID || ! is_number ( $TorrentID )) {
2011-03-28 14:21:28 +00:00
error ( 404 );
}
}
//Torrent exists, check it's applicable
$DB -> query ( " SELECT t.UserID,
t . Time ,
tg . ReleaseType ,
t . Encoding ,
t . Format ,
2013-02-19 08:00:30 +00:00
t . Media ,
t . HasLog ,
t . HasCue ,
2011-03-28 14:21:28 +00:00
t . LogScore ,
tg . CategoryID ,
IF ( t . Remastered = '1' , t . RemasterCatalogueNumber , tg . CatalogueNumber )
FROM torrents AS t
LEFT JOIN torrents_group AS tg ON t . GroupID = tg . ID
2013-02-19 08:00:30 +00:00
WHERE t . ID = " . $TorrentID . "
2011-03-28 14:21:28 +00:00
LIMIT 1 " );
2011-06-02 08:00:04 +00:00
2013-04-15 08:00:54 +00:00
if ( $DB -> record_count () < 1 ) {
2011-03-28 14:21:28 +00:00
error ( 404 );
}
list ( $UploaderID , $UploadTime , $TorrentReleaseType , $Bitrate , $Format , $Media , $HasLog , $HasCue , $LogScore , $TorrentCategoryID , $TorrentCatalogueNumber ) = $DB -> next_record ();
$FillerID = $LoggedUser [ 'ID' ];
$FillerUsername = $LoggedUser [ 'Username' ];
2013-04-15 08:00:54 +00:00
if ( ! empty ( $_POST [ 'user' ]) && check_perms ( 'site_moderate_requests' )) {
2011-03-28 14:21:28 +00:00
$FillerUsername = $_POST [ 'user' ];
2011-09-06 08:00:10 +00:00
$DB -> query ( " SELECT ID FROM users_main WHERE Username LIKE ' " . db_string ( $FillerUsername ) . " ' " );
2013-04-15 08:00:54 +00:00
if ( $DB -> record_count () < 1 ) {
2011-03-28 14:21:28 +00:00
$Err = " No such user to fill for! " ;
} else {
list ( $FillerID ) = $DB -> next_record ();
}
}
2013-04-15 08:00:54 +00:00
if ( time_ago ( $UploadTime ) < 3600 && $UploaderID != $FillerID && ! check_perms ( 'site_moderate_requests' )) {
2012-09-09 08:00:26 +00:00
$Err = " There is a one hour grace period for new uploads to allow the torrent's uploader to fill the request. " ;
2011-03-28 14:21:28 +00:00
}
2011-08-29 08:00:08 +00:00
$DB -> query ( " SELECT
Title ,
2011-03-28 14:21:28 +00:00
UserID ,
TorrentID ,
CategoryID ,
ReleaseType ,
CatalogueNumber ,
BitrateList ,
FormatList ,
MediaList ,
2011-08-29 08:00:08 +00:00
LogCue
FROM requests
2011-03-28 14:21:28 +00:00
WHERE ID = " . $RequestID );
2011-08-29 08:00:08 +00:00
list ( $Title , $RequesterID , $OldTorrentID , $RequestCategoryID , $RequestReleaseType , $RequestCatalogueNumber , $BitrateList , $FormatList , $MediaList , $LogCue ) = $DB -> next_record ();
2011-03-28 14:21:28 +00:00
2013-04-15 08:00:54 +00:00
if ( ! empty ( $OldTorrentID )) {
$Err = 'This request has already been filled.' ;
2011-03-28 14:21:28 +00:00
}
2013-04-15 08:00:54 +00:00
if ( $RequestCategoryID != 0 && $TorrentCategoryID != $RequestCategoryID ) {
$Err = 'This torrent is of a different category than the request. If the request is actually miscategorized, please contact staff.' ;
2011-03-28 14:21:28 +00:00
}
$CategoryName = $Categories [ $RequestCategoryID - 1 ];
2013-04-15 08:00:54 +00:00
if ( $CategoryName == 'Music' ) {
2011-03-28 14:21:28 +00:00
//Commenting out as it's causing some issues with some users being unable to fill, unsure what it is, etc
2013-04-15 08:00:54 +00:00
/* if ( $RequestCatalogueNumber ) {
if ( $TorrentCatalogueNumber != $RequestCatalogueNumber ) {
$Err = " This request requires the catalogue number $RequestCatalogueNumber " ;
2011-03-28 14:21:28 +00:00
}
} */
2012-02-23 08:00:18 +00:00
//WEB has no ripping log. Ditto Vinyl - Actually ditto everything but CD
2013-04-15 08:00:54 +00:00
//$WEBOverride = ((strpos($MediaList, 'WEB') !== false) && $Media == "WEB");
//$VinylOverride = ((strpos($MediaList, 'Vinyl') !== false) && $Media == "Vinyl");
//if ($Format == 'FLAC' && $LogCue && !$WEBOverride && !$VinylOverride) {
if ( $Format == 'FLAC' && $LogCue && $Media == 'CD' ) {
if ( strpos ( $LogCue , 'Log' ) && ! $HasLog ) {
$Err = 'This request requires a log.' ;
2011-03-28 14:21:28 +00:00
}
/*
* Removed due to rule 2.2 . 15.6 rendering some requests unfillable
*/
2013-04-15 08:00:54 +00:00
//if (strpos($LogCue, "Cue") && !$HasCue) {
2012-09-09 08:00:26 +00:00
// $Err = "This request requires a cue.";
2011-03-28 14:21:28 +00:00
//}
2013-02-19 08:00:30 +00:00
2013-04-15 08:00:54 +00:00
if ( strpos ( $LogCue , '%' )) {
preg_match ( '/\d+/' , $LogCue , $Matches );
if (( int ) $LogScore < ( int ) $Matches [ 0 ]) {
$Err = 'This torrent\'s log score is too low.' ;
2011-03-28 14:21:28 +00:00
}
}
}
2011-09-16 08:00:13 +00:00
2013-04-15 08:00:54 +00:00
if ( $BitrateList === 'Other' ) {
if ( $Bitrate === 'Lossless' || $Bitrate === 'APS (VBR)' || $Bitrate === 'V2 (VBR)' || $Bitrate === 'V1 (VBR)' || $Bitrate === '256' || $Bitrate === 'APX (VBR)' || $Bitrate === 'V0 (VBR)' || $Bitrate === 'q8.x (VBR)' || $Bitrate === '320' || $Bitrate === '24bit Lossless' )
$Err = " $Bitrate is not an allowed bitrate for this request. " ;
} elseif ( $BitrateList && $BitrateList != 'Any' ) {
if ( strpos ( $BitrateList , $Bitrate ) === false ) {
$Err = " $Bitrate is not an allowed bitrate for this request. " ;
2011-03-28 14:21:28 +00:00
}
}
2013-04-15 08:00:54 +00:00
if ( $FormatList && $FormatList != " Any " ) {
if ( strpos ( $FormatList , $Format ) === false ) {
$Err = " $Format is not an allowed format for this request. " ;
2011-03-28 14:21:28 +00:00
}
}
2013-04-15 08:00:54 +00:00
if ( $MediaList && $MediaList != " Any " ) {
if ( strpos ( $MediaList , $Media ) === false ) {
$Err = " $Media is not allowed media for this request. " ;
2011-03-28 14:21:28 +00:00
}
}
}
// Fill request
2013-04-15 08:00:54 +00:00
if ( ! empty ( $Err )) {
2011-03-28 14:21:28 +00:00
error ( $Err );
}
//We're all good! Fill!
$DB -> query ( " UPDATE requests SET
2013-04-15 08:00:54 +00:00
FillerID = $FillerID ,
TorrentID = $TorrentID ,
2011-03-28 14:21:28 +00:00
TimeFilled = '".sqltime()."'
2013-04-15 08:00:54 +00:00
WHERE ID = $RequestID " );
2011-03-28 14:21:28 +00:00
2013-04-15 08:00:54 +00:00
if ( $CategoryName == 'Music' ) {
2011-03-28 14:21:28 +00:00
$ArtistForm = get_request_artists ( $RequestID );
2012-10-11 08:00:15 +00:00
$ArtistName = Artists :: display_artists ( $ArtistForm , false , true );
2011-03-28 14:21:28 +00:00
$FullName = $ArtistName . $Title ;
} else {
$FullName = $Title ;
}
2013-04-15 08:00:54 +00:00
$DB -> query ( " SELECT UserID FROM requests_votes WHERE RequestID = $RequestID " );
2011-03-28 14:21:28 +00:00
$UserIDs = $DB -> to_array ();
foreach ( $UserIDs as $User ) {
2011-08-22 08:00:05 +00:00
list ( $VoterID ) = $User ;
2013-04-15 08:00:54 +00:00
Misc :: send_pm ( $VoterID , 0 , " The request \" $FullName\ " has been filled " , 'One of your requests — [url=https://'.SSL_SITE_URL.'/requests.php?action=view&id='. $RequestID .']'. $FullName .'[/url] — has been filled. You can view it here: [url]https://'.SSL_SITE_URL.'/torrents.php?torrentid='. $TorrentID .'[/url]');
2011-03-28 14:21:28 +00:00
}
$RequestVotes = get_votes_array ( $RequestID );
2013-04-15 08:00:54 +00:00
Misc :: write_log ( " Request $RequestID ( " . $FullName . " ) was filled by user $FillerID ( " . $FillerUsername . " ) with the torrent $TorrentID for a " . Format :: get_size ( $RequestVotes [ 'TotalBounty' ]) . ' bounty.' );
2011-03-28 14:21:28 +00:00
// Give bounty
$DB -> query ( " UPDATE users_main
2013-02-19 08:00:30 +00:00
SET Uploaded = ( Uploaded + " . $RequestVotes['TotalBounty'] . " )
2013-04-15 08:00:54 +00:00
WHERE ID = $FillerID " );
2011-03-28 14:21:28 +00:00
$Cache -> delete_value ( 'user_stats_' . $FillerID );
$Cache -> delete_value ( 'request_' . $RequestID );
2012-02-05 08:00:20 +00:00
if ( $GroupID ) {
$Cache -> delete_value ( 'requests_group_' . $GroupID );
}
2011-03-28 14:21:28 +00:00
2011-08-22 08:00:05 +00:00
2013-04-15 08:00:54 +00:00
$DB -> query ( " SELECT ArtistID FROM requests_artists WHERE RequestID = $RequestID " );
2011-03-28 14:21:28 +00:00
$ArtistIDs = $DB -> to_array ();
2013-04-15 08:00:54 +00:00
foreach ( $ArtistIDs as $ArtistID ) {
$Cache -> delete_value ( " artists_requests_ $ArtistID " );
2011-03-28 14:21:28 +00:00
}
$SS -> UpdateAttributes ( 'requests' , array ( 'torrentid' , 'fillerid' ), array ( $RequestID => array (( int ) $TorrentID ,( int ) $FillerID )));
2012-10-11 08:00:15 +00:00
Requests :: update_sphinx_requests ( $RequestID );
2011-03-28 14:21:28 +00:00
header ( 'Location: requests.php?action=view&id=' . $RequestID );
?>