2011-03-28 14:21:28 +00:00
< ?
2012-02-03 08:00:22 +00:00
include ( SERVER_ROOT . '/sections/requests/functions.php' ); // get_request_tags()
2011-03-28 14:21:28 +00:00
function get_group_info ( $GroupID , $Return = true , $RevisionID = 0 ) {
global $Cache , $DB ;
if ( ! $RevisionID ) {
$TorrentCache = $Cache -> get_value ( 'torrents_details_' . $GroupID );
}
//TODO: Remove LogInDB at a much later date.
2011-08-09 21:03:28 +00:00
if ( $RevisionID || ! is_array ( $TorrentCache ) || ! isset ( $TorrentCache [ 1 ][ 0 ][ 'LogInDB' ]) || ! isset ( $TorrentCache [ 1 ][ 0 ][ 'VanityHouse' ])) {
2011-03-28 14:21:28 +00:00
// Fetch the group details
$SQL = " SELECT " ;
if ( ! $RevisionID ) {
$SQL .= "
g . WikiBody ,
g . WikiImage , " ;
} else {
$SQL .= "
w . Body ,
w . Image , " ;
}
$SQL .= "
g . ID ,
g . Name ,
g . Year ,
g . RecordLabel ,
g . CatalogueNumber ,
g . ReleaseType ,
g . CategoryID ,
g . Time ,
2011-08-09 21:03:28 +00:00
g . VanityHouse ,
2011-03-28 14:21:28 +00:00
GROUP_CONCAT ( DISTINCT tags . Name SEPARATOR '|' ),
GROUP_CONCAT ( DISTINCT tags . ID SEPARATOR '|' ),
GROUP_CONCAT ( tt . UserID SEPARATOR '|' ),
GROUP_CONCAT ( tt . PositiveVotes SEPARATOR '|' ),
GROUP_CONCAT ( tt . NegativeVotes SEPARATOR '|' )
FROM torrents_group AS g
LEFT JOIN torrents_tags AS tt ON tt . GroupID = g . ID
LEFT JOIN tags ON tags . ID = tt . TagID " ;
if ( $RevisionID ) {
$SQL .= "
LEFT JOIN wiki_torrents AS w ON w . PageID = '".db_string($GroupID)."' AND w . RevisionID = '".db_string($RevisionID)."' " ;
}
$SQL .= "
WHERE g . ID = '".db_string($GroupID)."'
GROUP BY NULL " ;
$DB -> query ( $SQL );
$TorrentDetails = $DB -> to_array ();
// Fetch the individual torrents
$DB -> query ( "
SELECT
t . ID ,
t . Media ,
t . Format ,
t . Encoding ,
t . Remastered ,
t . RemasterYear ,
t . RemasterTitle ,
t . RemasterRecordLabel ,
t . RemasterCatalogueNumber ,
t . Scene ,
t . HasLog ,
t . HasCue ,
t . LogScore ,
t . FileCount ,
t . Size ,
t . Seeders ,
t . Leechers ,
t . Snatched ,
t . FreeTorrent ,
t . Time ,
t . Description ,
t . FileList ,
t . FilePath ,
t . UserID ,
t . last_action ,
tbt . TorrentID ,
tbf . TorrentID ,
tfi . TorrentID ,
2011-08-09 21:03:28 +00:00
ca . TorrentID ,
lma . TorrentID ,
2012-05-31 08:00:14 +00:00
lwa . TorrentID ,
2011-03-28 14:21:28 +00:00
t . LastReseedRequest ,
tln . TorrentID AS LogInDB ,
2011-07-04 08:00:07 +00:00
t . ID AS HasFile
2011-03-28 14:21:28 +00:00
FROM torrents AS t
LEFT JOIN torrents_bad_tags AS tbt ON tbt . TorrentID = t . ID
LEFT JOIN torrents_bad_folders AS tbf on tbf . TorrentID = t . ID
LEFT JOIN torrents_bad_files AS tfi on tfi . TorrentID = t . ID
2011-08-09 21:03:28 +00:00
LEFT JOIN torrents_cassette_approved AS ca on ca . TorrentID = t . ID
LEFT JOIN torrents_lossymaster_approved AS lma on lma . TorrentID = t . ID
2012-05-31 08:00:14 +00:00
LEFT JOIN torrents_lossyweb_approved AS lwa on lwa . TorrentID = t . ID
2011-08-09 21:03:28 +00:00
LEFT JOIN torrents_logs_new AS tln ON tln . TorrentID = t . ID
2011-03-28 14:21:28 +00:00
WHERE t . GroupID = '".db_string($GroupID)."'
GROUP BY t . ID
2011-09-04 08:00:07 +00:00
ORDER BY t . Remastered ASC , ( t . RemasterYear <> 0 ) DESC , t . RemasterYear ASC , t . RemasterTitle ASC , t . RemasterRecordLabel ASC , t . RemasterCatalogueNumber ASC , t . Media ASC , t . Format , t . Encoding , t . ID " );
2011-03-28 14:21:28 +00:00
$TorrentList = $DB -> to_array ();
if ( count ( $TorrentList ) == 0 ) {
2012-07-17 08:00:18 +00:00
error ( 404 );
2011-03-28 14:21:28 +00:00
}
if ( in_array ( 0 , $DB -> collect ( 'Seeders' ))) {
$CacheTime = 600 ;
} else {
$CacheTime = 3600 ;
}
// Store it all in cache
if ( ! $RevisionID ) {
$Cache -> cache_value ( 'torrents_details_' . $GroupID , array ( $TorrentDetails , $TorrentList ), $CacheTime );
}
} else { // If we're reading from cache
$TorrentDetails = $TorrentCache [ 0 ];
$TorrentList = $TorrentCache [ 1 ];
}
if ( $Return ) {
return array ( $TorrentDetails , $TorrentList );
}
}
//Check if a givin string can be validated as a torrenthash
function is_valid_torrenthash ( $Str ) {
//6C19FF4C 6C1DD265 3B25832C 0F6228B2 52D743D5
$Str = str_replace ( ' ' , '' , $Str );
if ( preg_match ( '/^[0-9a-fA-F]{40}$/' , $Str ))
return $Str ;
return false ;
}
//After adjusting / deleting logs, recalculate the score for the torrent.
function set_torrent_logscore ( $TorrentID ) {
global $DB ;
$DB -> query ( " UPDATE torrents SET LogScore = (SELECT FLOOR(AVG(Score)) FROM torrents_logs_new WHERE TorrentID = " . $TorrentID . " ) WHERE ID = " . $TorrentID );
}
2012-02-03 08:00:22 +00:00
function get_group_requests ( $GroupID ) {
global $DB , $Cache ;
$Requests = $Cache -> get_value ( 'requests_group_' . $GroupID );
if ( $Requests === FALSE ) {
2012-02-05 08:00:20 +00:00
$DB -> query ( " SELECT ID FROM requests WHERE GroupID = $GroupID AND TimeFilled = '0000-00-00 00:00:00' " );
2012-02-03 08:00:22 +00:00
$Requests = $DB -> collect ( 'ID' );
$Cache -> cache_value ( 'requests_group_' . $GroupID , $Requests , 0 );
}
$Requests = get_requests ( $Requests );
return $Requests [ 'matches' ];
2012-05-31 08:00:14 +00:00
}