get_value($CacheKey); if ($Data) { list($K, list($Name, $Description,, $Subscribers, $CommentList, $Deleted, $CollageCategoryID, $CreatorID, $Locked, $MaxGroups, $MaxGroupsPerUser, $Updated)) = each($Data); } else { $DB->query(" SELECT Name, Description, UserID, Deleted, CategoryID, Locked, MaxGroups, MaxGroupsPerUser, Subscribers FROM collages WHERE ID = '$CollageID'"); if (!$DB->has_results()) { json_die("failure"); } list($Name, $Description, $CreatorID, $Deleted, $CollageCategoryID, $Locked, $MaxGroups, $MaxGroupsPerUser, $Subscribers) = $DB->next_record(); } // Populate data that wasn't included in the cache if (is_null($TorrentGroups) || is_number($TorrentGroups)) { $DB->query(" SELECT GroupID FROM collages_torrents WHERE CollageID = $CollageID"); $TorrentGroups = $DB->collect('GroupID'); } if (is_null($Subscribers)) { $DB->query(" SELECT Subscribers FROM collages WHERE ID = $CollageID"); list($Subscribers) = $DB->next_record(); } $JSON = array( 'id' => (int)$CollageID, 'name' => $Name, 'description' => $Text->full_format($Description), 'creatorID' => (int)$CreatorID, 'deleted' => (bool)$Deleted, 'collageCategoryID' => (int)$CollageCategoryID, 'collageCategoryName' => $CollageCats[(int)$CollageCategoryID], 'locked' => (bool)$Locked, 'maxGroups' => (int)$MaxGroups, 'maxGroupsPerUser' => (int)$MaxGroupsPerUser, 'hasBookmarked' => Bookmarks::has_bookmarked('collage', $CollageID), 'subscriberCount' => (int)$Subscribers, 'torrentGroupIDList' => $TorrentGroups ); if ($CollageCategoryID != array_search(ARTIST_COLLAGE, $CollageCats)) { // torrent collage $TorrentGroups = array(); $DB->query(" SELECT ct.GroupID FROM collages_torrents AS ct JOIN torrents_group AS tg ON tg.ID = ct.GroupID WHERE ct.CollageID = '$CollageID' ORDER BY ct.Sort"); $GroupIDs = $DB->collect('GroupID'); $GroupList = Torrents::get_groups($GroupIDs); foreach ($GroupIDs as $GroupID) { if (!empty($GroupList[$GroupID])) { $GroupDetails = Torrents::array_group($GroupList[$GroupID]); if ($GroupDetails['GroupCategoryID'] > 0 && $Categories[$GroupDetails['GroupCategoryID'] - 1] == 'Music') { $ArtistForm = $GroupDetails['ExtendedArtists']; $JsonMusicInfo = array( 'composers' => isset($ArtistForm[4]) ? pullmediainfo($ArtistForm[4]) : array(), 'dj' => isset($ArtistForm[6]) ? pullmediainfo($ArtistForm[6]) : array(), 'artists' => isset($ArtistForm[1]) ? pullmediainfo($ArtistForm[1]) : array(), 'with' => isset($ArtistForm[2]) ? pullmediainfo($ArtistForm[2]) : array(), 'conductor' => isset($ArtistForm[5]) ? pullmediainfo($ArtistForm[5]) : array(), 'remixedBy' => isset($ArtistForm[3]) ? pullmediainfo($ArtistForm[3]) : array(), 'producer' => isset($ArtistForm[7]) ? pullmediainfo($ArtistForm[7]) : array() ); } else { $JsonMusicInfo = null; } $TorrentList = array(); foreach ($GroupDetails['Torrents'] as $Torrent) { $TorrentList[] = array( 'torrentid' => (int)$Torrent['ID'], 'media' => $Torrent['Media'], 'format' => $Torrent['Format'], 'encoding' => $Torrent['Encoding'], 'remastered' => ($Torrent['Remastered'] == 1), 'remasterYear' => (int)$Torrent['RemasterYear'], 'remasterTitle' => $Torrent['RemasterTitle'], 'remasterRecordLabel' => $Torrent['RemasterRecordLabel'], 'remasterCatalogueNumber' => $Torrent['RemasterCatalogueNumber'], 'scene' => ($Torrent['Scene'] == 1), 'hasLog' => ($Torrent['HasLog'] == 1), 'hasCue' => ($Torrent['HasCue'] == 1), 'logScore' => (int)$Torrent['LogScore'], 'fileCount' => (int)$Torrent['FileCount'], 'size' => (int)$Torrent['Size'], 'seeders' => (int)$Torrent['Seeders'], 'leechers' => (int)$Torrent['Leechers'], 'snatched' => (int)$Torrent['Snatched'], 'freeTorrent' => ($Torrent['FreeTorrent'] == 1), 'reported' => (count(Torrents::get_reports((int)$Torrent['ID'])) > 0), 'time' => $Torrent['Time'] ); } $TorrentGroups[] = array( 'id' => $GroupDetails['GroupID'], 'name' => $GroupDetails['GroupName'], 'year' => $GroupDetails['GroupYear'], 'categoryId' => $GroupDetails['GroupCategoryID'], 'recordLabel' => $GroupDetails['GroupRecordLabel'], 'catalogueNumber' => $GroupDetails['GroupCatalogueNumber'], 'vanityHouse' => $GroupDetails['GroupVanityHouse'], 'tagList' => $GroupDetails['TagList'], 'releaseType' => $GroupDetails['ReleaseType'], 'wikiImage' => $GroupDetails['WikiImage'], 'musicInfo' => $JsonMusicInfo, 'torrents' => $TorrentList ); } } $JSON['torrentgroups'] = $TorrentGroups; } else { // artist collage $DB->query(" SELECT ca.ArtistID, ag.Name, aw.Image FROM collages_artists AS ca JOIN artists_group AS ag ON ag.ArtistID=ca.ArtistID LEFT JOIN wiki_artists AS aw ON aw.RevisionID = ag.RevisionID WHERE ca.CollageID='$CollageID' ORDER BY ca.Sort"); $Artists = array(); while (list($ArtistID, $ArtistName, $ArtistImage) = $DB->next_record()) { $Artists[] = array( 'id' => (int)$ArtistID, 'name' => $ArtistName, 'image' => $ArtistImage ); } $JSON['artists'] = $Artists; } $Cache->cache_value($CacheKey, array(array($Name, $Description, null, $Subscribers, $CommentList, $Deleted, $CollageCategoryID, $CreatorID, $Locked, $MaxGroups, $MaxGroupsPerUser)), 3600); json_die("success", $JSON);