2011-03-28 14:21:28 +00:00
< ?
//~~~~~~~~~~~ Main artist page ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//For sorting tags
2013-04-17 08:00:58 +00:00
function compare ( $X , $Y ) {
2011-03-28 14:21:28 +00:00
return ( $Y [ 'count' ] - $X [ 'count' ]);
}
2013-05-27 08:00:58 +00:00
include ( SERVER_ROOT . '/classes/text.class.php' ); // Text formatting class
2011-03-28 14:21:28 +00:00
$Text = new TEXT ;
// Similar artist map
2013-05-27 08:00:58 +00:00
include ( SERVER_ROOT . '/classes/artists_similar.class.php' );
2011-03-28 14:21:28 +00:00
2012-11-02 08:00:18 +00:00
$UserVotes = Votes :: get_user_votes ( $LoggedUser [ 'ID' ]);
2011-03-28 14:21:28 +00:00
$ArtistID = $_GET [ 'id' ];
2013-04-17 08:00:58 +00:00
if ( ! is_number ( $ArtistID )) {
error ( 0 );
}
2011-03-28 14:21:28 +00:00
2013-04-17 08:00:58 +00:00
if ( ! empty ( $_GET [ 'revisionid' ])) { // if they're viewing an old revision
2011-03-28 14:21:28 +00:00
$RevisionID = $_GET [ 'revisionid' ];
2013-04-17 08:00:58 +00:00
if ( ! is_number ( $RevisionID )) {
2012-10-28 08:00:19 +00:00
error ( 0 );
}
$Data = $Cache -> get_value ( " artist_ $ArtistID " . " _revision_ $RevisionID " , true );
2011-03-28 14:21:28 +00:00
} else { // viewing the live version
2012-10-28 08:00:19 +00:00
$Data = $Cache -> get_value ( 'artist_' . $ArtistID , true );
2011-03-28 14:21:28 +00:00
$RevisionID = false ;
}
2012-10-11 08:00:15 +00:00
2013-04-17 08:00:58 +00:00
if ( $Data ) {
2012-11-01 08:00:21 +00:00
list ( $K , list ( $Name , $Image , $Body , $NumSimilar , $SimilarArray , , , $VanityHouseArtist )) = each ( $Data );
2011-03-28 14:21:28 +00:00
} else {
if ( $RevisionID ) {
2013-05-04 08:00:48 +00:00
$sql = "
SELECT
a . Name ,
wiki . Image ,
wiki . body ,
a . VanityHouse
FROM wiki_artists AS wiki
LEFT JOIN artists_group AS a ON wiki . RevisionID = a . RevisionID
WHERE wiki . RevisionID = '$RevisionID' " ;
2011-03-28 14:21:28 +00:00
} else {
2013-05-04 08:00:48 +00:00
$sql = "
SELECT
a . Name ,
wiki . Image ,
wiki . body ,
a . VanityHouse
FROM artists_group AS a
LEFT JOIN wiki_artists AS wiki ON wiki . RevisionID = a . RevisionID
WHERE a . ArtistID = '$ArtistID' " ;
2011-03-28 14:21:28 +00:00
}
$sql .= " GROUP BY a.ArtistID " ;
$DB -> query ( $sql );
2012-10-11 08:00:15 +00:00
2013-04-17 08:00:58 +00:00
if ( $DB -> record_count () == 0 ) {
error ( 404 );
}
2012-10-11 08:00:15 +00:00
2011-08-09 21:03:28 +00:00
list ( $Name , $Image , $Body , $VanityHouseArtist ) = $DB -> next_record ( MYSQLI_NUM , array ( 0 ));
2011-03-28 14:21:28 +00:00
}
2012-10-27 08:00:09 +00:00
2011-03-28 14:21:28 +00:00
//----------------- Build list and get stats
ob_start ();
// Requests
2013-05-07 08:00:23 +00:00
$Requests = array ();
if ( empty ( $LoggedUser [ 'DisableRequests' ])) {
$Requests = $Cache -> get_value ( 'artists_requests_' . $ArtistID );
if ( ! is_array ( $Requests )) {
$DB -> query ( "
SELECT
r . ID ,
r . CategoryID ,
r . Title ,
r . Year ,
r . TimeAdded ,
COUNT ( rv . UserID ) AS Votes ,
SUM ( rv . Bounty ) AS Bounty
FROM requests AS r
LEFT JOIN requests_votes AS rv ON rv . RequestID = r . ID
LEFT JOIN requests_artists AS ra ON r . ID = ra . RequestID
WHERE ra . ArtistID = " . $ArtistID . "
AND r . TorrentID = 0
GROUP BY r . ID
ORDER BY Votes DESC " );
if ( $DB -> record_count () > 0 ) {
$Requests = $DB -> to_array ();
} else {
$Requests = array ();
}
$Cache -> cache_value ( 'artists_requests_' . $ArtistID , $Requests );
2011-03-28 14:21:28 +00:00
}
}
$NumRequests = count ( $Requests );
2012-10-28 08:00:19 +00:00
2012-11-20 08:00:19 +00:00
if (( $Importances = $Cache -> get_value ( 'artist_groups_' . $ArtistID )) === false ) {
2013-05-04 08:00:48 +00:00
$DB -> query ( "
SELECT
DISTINCTROW ta . GroupID , ta . Importance , tg . VanityHouse , tg . Year
FROM torrents_artists AS ta
JOIN torrents_group AS tg ON tg . ID = ta . GroupID
WHERE ta . ArtistID = '$ArtistID'
ORDER BY tg . Year DESC , tg . Name DESC " );
2012-11-20 08:00:19 +00:00
$GroupIDs = $DB -> collect ( 'GroupID' );
$Importances = $DB -> to_array ( false , MYSQLI_BOTH , false );
$Cache -> cache_value ( 'artist_groups_' . $ArtistID , $Importances , 0 );
} else {
$GroupIDs = array ();
foreach ( $Importances as $Group ) {
$GroupIDs [] = $Group [ 'GroupID' ];
}
}
if ( count ( $GroupIDs ) > 0 ) {
2013-02-25 21:16:55 +00:00
$TorrentList = Torrents :: get_groups ( $GroupIDs , true , true );
2012-10-28 08:00:19 +00:00
$TorrentList = $TorrentList [ 'matches' ];
} else {
$TorrentList = array ();
2011-03-28 14:21:28 +00:00
}
$NumGroups = count ( $TorrentList );
2012-11-20 08:00:19 +00:00
if ( ! empty ( $TorrentList )) {
2011-03-28 14:21:28 +00:00
?>
< div id = " discog_table " >
< ?
}
//Get list of used release types
$UsedReleases = array ();
2012-11-20 08:00:19 +00:00
foreach ( $Importances as $ID => $Group ) {
2012-02-23 08:00:18 +00:00
switch ( $Importances [ $ID ][ 'Importance' ]) {
case '2' :
$Importances [ $ID ][ 'ReleaseType' ] = 1024 ;
//$TorrentList[$GroupID]['ReleaseType'] = 1024;
$GuestAlbums = true ;
break ;
2012-10-11 08:00:15 +00:00
2012-02-23 08:00:18 +00:00
case '3' :
$Importances [ $ID ][ 'ReleaseType' ] = 1023 ;
//$TorrentList[$GroupID]['ReleaseType'] = 1023;
$RemixerAlbums = true ;
break ;
2012-10-11 08:00:15 +00:00
2012-02-23 08:00:18 +00:00
case '4' :
$Importances [ $ID ][ 'ReleaseType' ] = 1022 ;
//$TorrentList[$GroupID]['ReleaseType'] = 1022;
$ComposerAlbums = true ;
break ;
2012-10-11 08:00:15 +00:00
2012-02-23 08:00:18 +00:00
case '7' :
$Importances [ $ID ][ 'ReleaseType' ] = 1021 ;
//$TorrentList[$GroupID]['ReleaseType'] = 1021;
$ProducerAlbums = true ;
break ;
2012-10-11 08:00:15 +00:00
2012-02-23 08:00:18 +00:00
default :
$Importances [ $ID ][ 'ReleaseType' ] = $TorrentList [ $Group [ 'GroupID' ]][ 'ReleaseType' ];
2011-03-28 14:21:28 +00:00
}
2012-10-11 08:00:15 +00:00
2012-11-20 08:00:19 +00:00
if ( ! isset ( $UsedReleases [ $Importances [ $ID ][ 'ReleaseType' ]])) {
$UsedReleases [ $Importances [ $ID ][ 'ReleaseType' ]] = true ;
2012-10-11 08:00:15 +00:00
}
2012-11-20 08:00:19 +00:00
$Importances [ $ID ][ 'Sort' ] = $ID ;
2011-03-28 14:21:28 +00:00
}
2012-11-20 08:00:19 +00:00
if ( ! empty ( $GuestAlbums )) {
2011-03-28 14:21:28 +00:00
$ReleaseTypes [ 1024 ] = " Guest Appearance " ;
}
2012-11-20 08:00:19 +00:00
if ( ! empty ( $RemixerAlbums )) {
2011-03-28 14:21:28 +00:00
$ReleaseTypes [ 1023 ] = " Remixed By " ;
}
2012-11-20 08:00:19 +00:00
if ( ! empty ( $ComposerAlbums )) {
2011-11-20 08:00:18 +00:00
$ReleaseTypes [ 1022 ] = " Composition " ;
}
2012-11-20 08:00:19 +00:00
if ( ! empty ( $ProducerAlbums )) {
2012-02-19 08:00:19 +00:00
$ReleaseTypes [ 1021 ] = " Produced By " ;
}
2012-11-20 08:00:19 +00:00
2012-10-27 08:00:09 +00:00
//Custom sorting for releases
2012-11-20 08:00:19 +00:00
if ( ! empty ( $LoggedUser [ 'SortHide' ])) {
$SortOrder = array_flip ( array_keys ( $LoggedUser [ 'SortHide' ]));
} else {
$SortOrder = $ReleaseTypes ;
}
// If the $SortOrder array doesn't have all release types, put the missing ones at the end
if ( count ( $SortOrder ) != count ( $ReleaseTypes )) {
$MaxOrder = max ( $SortOrder );
foreach ( array_keys ( array_diff_key ( $ReleaseTypes , $SortOrder )) as $Missing ) {
$SortOrder [ $Missing ] = ++ $MaxOrder ;
}
2012-10-27 08:00:09 +00:00
}
2012-11-20 08:00:19 +00:00
uasort ( $Importances , function ( $A , $B ) use ( $SortOrder ) {
if ( $SortOrder [ $A [ 'ReleaseType' ]] == $SortOrder [ $B [ 'ReleaseType' ]]) {
return $A [ 'Sort' ] < $B [ 'Sort' ] ? - 1 : 1 ;
}
return $SortOrder [ $A [ 'ReleaseType' ]] < $SortOrder [ $B [ 'ReleaseType' ]] ? - 1 : 1 ;
});
// Sort the anchors at the top of the page the same way as release types
$UsedReleases = array_flip ( array_intersect_key ( $SortOrder , $UsedReleases ));
2011-03-28 14:21:28 +00:00
reset ( $TorrentList );
2012-11-20 08:00:19 +00:00
if ( ! empty ( $UsedReleases )) { ?>
2011-03-28 14:21:28 +00:00
< div class = " box center " >
< ?
2013-04-17 08:00:58 +00:00
foreach ( $UsedReleases as $ReleaseID ) {
2013-05-01 08:00:16 +00:00
switch ( $ReleaseTypes [ $ReleaseID ]) {
2011-03-28 14:21:28 +00:00
case " Remix " :
$DisplayName = " Remixes " ;
break ;
case " Anthology " :
$DisplayName = " Anthologies " ;
break ;
2011-11-20 08:00:18 +00:00
case " DJ Mix " :
$DisplayName = " DJ Mixes " ;
break ;
2011-03-28 14:21:28 +00:00
default :
$DisplayName = $ReleaseTypes [ $ReleaseID ] . " s " ;
break ;
}
2013-02-10 08:00:29 +00:00
2012-10-27 08:00:09 +00:00
if ( ! empty ( $LoggedUser [ 'DiscogView' ]) || ( isset ( $LoggedUser [ 'SortHide' ]) && array_key_exists ( $ReleaseType , $LoggedUser [ 'SortHide' ]) && $LoggedUser [ 'SortHide' ][ $ReleaseType ] == 1 )) {
2012-09-09 08:00:26 +00:00
$ToggleStr = " onclick= \" $ ('.releases_ $ReleaseID ').show(); return true; \" " ;
2011-12-15 08:00:20 +00:00
} else {
$ToggleStr = '' ;
}
2011-03-28 14:21:28 +00:00
?>
2013-02-09 08:01:01 +00:00
< a href = " #torrents_<?=str_replace( " " , " _ " , strtolower( $ReleaseTypes[$ReleaseID] ))?> " class = " brackets " < ? = $ToggleStr ?> ><?=$DisplayName?></a>
2011-03-28 14:21:28 +00:00
< ?
}
if ( $NumRequests > 0 ) {
?>
2013-02-09 08:01:01 +00:00
< a href = " #requests " class = " brackets " > Requests </ a >
2011-03-28 14:21:28 +00:00
< ? } ?>
</ div >
< ? }
$NumTorrents = 0 ;
$NumSeeders = 0 ;
$NumLeechers = 0 ;
$NumSnatches = 0 ;
2012-02-27 08:00:22 +00:00
foreach ( $TorrentList as $GroupID => $Group ) {
2013-02-25 21:16:55 +00:00
// $Tags array is for the sidebar on the right.
// Skip compilations and soundtracks.
2013-03-21 08:00:33 +00:00
$Merge = $Group [ 'ReleaseType' ] != 7 && $Group [ 'ReleaseType' ] != 3 ;
2012-02-27 08:00:22 +00:00
2013-03-21 08:00:33 +00:00
$TorrentTags = new Tags ( $Group [ 'TagList' ], $Merge );
2012-10-11 08:00:15 +00:00
2012-02-27 08:00:22 +00:00
foreach ( $Group [ 'Torrents' ] as $TorrentID => $Torrent ) {
$NumTorrents ++ ;
2012-10-11 08:00:15 +00:00
2012-02-27 08:00:22 +00:00
$Torrent [ 'Seeders' ] = ( int ) $Torrent [ 'Seeders' ];
$Torrent [ 'Leechers' ] = ( int ) $Torrent [ 'Leechers' ];
$Torrent [ 'Snatched' ] = ( int ) $Torrent [ 'Snatched' ];
2012-10-11 08:00:15 +00:00
2012-02-27 08:00:22 +00:00
$NumSeeders += $Torrent [ 'Seeders' ];
$NumLeechers += $Torrent [ 'Leechers' ];
$NumSnatches += $Torrent [ 'Snatched' ];
}
}
2011-03-28 14:21:28 +00:00
$OpenTable = false ;
2011-10-18 08:00:10 +00:00
$ShowGroups = ! isset ( $LoggedUser [ 'TorrentGrouping' ]) || $LoggedUser [ 'TorrentGrouping' ] == 0 ;
$HideTorrents = ( $ShowGroups ? '' : ' hidden' );
2012-02-23 08:00:18 +00:00
$OldGroupID = 0 ;
2012-11-20 08:00:19 +00:00
$LastReleaseType = 0 ;
2011-10-18 08:00:10 +00:00
2012-02-23 08:00:18 +00:00
foreach ( $Importances as $Group ) {
2013-02-28 08:00:29 +00:00
extract ( Torrents :: array_group ( $TorrentList [ $Group [ 'GroupID' ]]), EXTR_OVERWRITE );
$ReleaseType = $Group [ 'ReleaseType' ];
2012-10-11 08:00:15 +00:00
2012-02-23 08:00:18 +00:00
if ( $GroupID == $OldGroupID && $ReleaseType == $OldReleaseType ) {
continue ;
} else {
$OldGroupID = $GroupID ;
$OldReleaseType = $ReleaseType ;
}
2012-10-11 08:00:15 +00:00
2012-10-27 08:00:09 +00:00
/* if ( ! empty ( $LoggedUser [ 'DiscogView' ]) || ( isset ( $LoggedUser [ 'HideTypes' ]) && in_array ( $ReleaseType , $LoggedUser [ 'HideTypes' ]))) {
$HideDiscog = ' hidden' ;
} else {
$HideDiscog = '' ;
} */
if ( ! empty ( $LoggedUser [ 'DiscogView' ]) || ( isset ( $LoggedUser [ 'SortHide' ]) && array_key_exists ( $ReleaseType , $LoggedUser [ 'SortHide' ]) && $LoggedUser [ 'SortHide' ][ $ReleaseType ] == 1 )) {
2012-02-27 08:00:22 +00:00
$HideDiscog = ' hidden' ;
} else {
$HideDiscog = '' ;
}
2012-10-11 08:00:15 +00:00
2013-03-21 08:00:33 +00:00
$TorrentTags = new Tags ( $TagList , false );
2012-10-11 08:00:15 +00:00
2013-04-17 08:00:58 +00:00
if ( $ReleaseType != $LastReleaseType ) {
2013-05-01 08:00:16 +00:00
switch ( $ReleaseTypes [ $ReleaseType ]) {
2011-03-28 14:21:28 +00:00
case " Remix " :
$DisplayName = " Remixes " ;
break ;
case " Anthology " :
$DisplayName = " Anthologies " ;
break ;
2011-11-20 08:00:18 +00:00
case " DJ Mix " :
$DisplayName = " DJ Mixes " ;
break ;
2011-03-28 14:21:28 +00:00
default :
$DisplayName = $ReleaseTypes [ $ReleaseType ] . " s " ;
break ;
}
$ReleaseTypeLabel = strtolower ( str_replace ( ' ' , '_' , $ReleaseTypes [ $ReleaseType ]));
2013-04-17 08:00:58 +00:00
if ( $OpenTable ) { ?>
2011-03-28 14:21:28 +00:00
</ table >
< ? } ?>
2012-09-01 08:00:24 +00:00
< table class = " torrent_table grouped release_table " id = " torrents_<?= $ReleaseTypeLabel ?> " >
2011-03-28 14:21:28 +00:00
< tr class = " colhead_dark " >
2011-09-05 08:00:07 +00:00
< td class = " small " ><!-- expand / collapse --></ td >
2011-10-18 08:00:10 +00:00
< td width = " 70% " >< a href = " # " >& uarr ; </ a >& nbsp ; < strong >< ? = $DisplayName ?> </strong> (<a href="#" onclick="$('.releases_<?=$ReleaseType?>').toggle(true);return false;">View</a>)</td>
2011-03-28 14:21:28 +00:00
< td > Size </ td >
< td class = " sign " >< img src = " static/styles/<?= $LoggedUser['StyleName'] ?>/images/snatched.png " alt = " Snatches " title = " Snatches " /></ td >
< td class = " sign " >< img src = " static/styles/<?= $LoggedUser['StyleName'] ?>/images/seeders.png " alt = " Seeders " title = " Seeders " /></ td >
< td class = " sign " >< img src = " static/styles/<?= $LoggedUser['StyleName'] ?>/images/leechers.png " alt = " Leechers " title = " Leechers " /></ td >
</ tr >
< ? $OpenTable = true ;
$LastReleaseType = $ReleaseType ;
}
2012-10-11 08:00:15 +00:00
2011-03-28 14:21:28 +00:00
$DisplayName = '<a href="torrents.php?id=' . $GroupID . '" title="View Torrent">' . $GroupName . '</a>' ;
2013-04-17 08:00:58 +00:00
if ( check_perms ( 'users_mod' ) || check_perms ( 'torrents_fix_ghosts' )) {
2013-02-09 08:01:01 +00:00
$DisplayName .= ' <a href="torrents.php?action=fix_group&groupid=' . $GroupID . '&artistid=' . $ArtistID . '&auth=' . $LoggedUser [ 'AuthKey' ] . '" class="brackets" title="Fix ghost DB entry">Fix</a>' ;
2011-03-28 14:21:28 +00:00
}
2012-10-11 08:00:15 +00:00
2013-05-04 08:00:48 +00:00
switch ( $ReleaseType ) {
2012-02-19 08:00:19 +00:00
case 1023 : // Remixes, DJ Mixes, Guest artists, and Producers need the artist name
2011-11-21 08:00:23 +00:00
case 1024 :
2012-02-19 08:00:19 +00:00
case 1021 :
2011-11-21 08:00:23 +00:00
case 8 :
2011-12-01 08:00:22 +00:00
if ( ! empty ( $ExtendedArtists [ 1 ]) || ! empty ( $ExtendedArtists [ 4 ]) || ! empty ( $ExtendedArtists [ 5 ]) || ! empty ( $ExtendedArtists [ 6 ])) {
2011-11-21 08:00:23 +00:00
unset ( $ExtendedArtists [ 2 ]);
unset ( $ExtendedArtists [ 3 ]);
2012-10-11 08:00:15 +00:00
$DisplayName = Artists :: display_artists ( $ExtendedArtists ) . $DisplayName ;
2013-04-17 08:00:58 +00:00
} elseif ( count ( $GroupArtists ) > 0 ) {
2012-10-11 08:00:15 +00:00
$DisplayName = Artists :: display_artists ( array ( 1 => $Artists ), true , true ) . $DisplayName ;
2011-11-21 08:00:23 +00:00
}
break ;
2013-04-17 08:00:58 +00:00
case 1022 : // Show performers on composer pages
2011-11-21 08:00:23 +00:00
if ( ! empty ( $ExtendedArtists [ 1 ]) || ! empty ( $ExtendedArtists [ 4 ]) || ! empty ( $ExtendedArtists [ 5 ])) {
unset ( $ExtendedArtists [ 4 ]);
unset ( $ExtendedArtists [ 3 ]);
unset ( $ExtendedArtists [ 6 ]);
2012-10-11 08:00:15 +00:00
$DisplayName = Artists :: display_artists ( $ExtendedArtists ) . $DisplayName ;
2013-04-17 08:00:58 +00:00
} elseif ( count ( $GroupArtists ) > 0 ) {
2012-10-11 08:00:15 +00:00
$DisplayName = Artists :: display_artists ( array ( 1 => $Artists ), true , true ) . $DisplayName ;
2011-11-21 08:00:23 +00:00
}
break ;
default : // Show composers otherwise
if ( ! empty ( $ExtendedArtists [ 4 ])) {
2012-10-11 08:00:15 +00:00
$DisplayName = Artists :: display_artists ( array ( 4 => $ExtendedArtists [ 4 ]), true , true ) . $DisplayName ;
2011-11-21 08:00:23 +00:00
}
2011-03-28 14:21:28 +00:00
}
2013-04-17 08:00:58 +00:00
if ( $GroupYear > 0 ) {
$DisplayName = $GroupYear . ' - ' . $DisplayName ;
}
2011-03-28 14:21:28 +00:00
2013-04-17 08:00:58 +00:00
if ( $GroupVanityHouse ) {
$DisplayName .= ' [<abbr title="This is a Vanity House release">VH</abbr>]' ;
}
2011-08-09 21:03:28 +00:00
2012-12-06 08:00:17 +00:00
$SnatchedGroupClass = $GroupFlags [ 'IsSnatched' ] ? ' snatched_group' : '' ;
2011-03-28 14:21:28 +00:00
?>
2012-12-06 08:00:17 +00:00
< tr class = " releases_<?= $ReleaseType ?> group discog<?= $SnatchedGroupClass . $HideDiscog ?> " >
2011-09-04 08:00:07 +00:00
< td class = " center " >
< div title = " View " id = " showimg_<?= $GroupID ?> " class = " <?=( $ShowGroups ? 'hide' : 'show')?>_torrents " >
2012-10-05 08:00:20 +00:00
< a href = " # " class = " show_torrents_link " onclick = " toggle_group(<?= $GroupID ?>, this, event) " title = " Collapse this group. Hold "Ctrl" while clicking to collapse all groups in this release type. " ></ a >
2011-09-04 08:00:07 +00:00
</ div >
</ td >
2013-02-25 21:16:55 +00:00
< td colspan = " 5 " class = " big_info " >
< ? if ( $LoggedUser [ 'CoverArt' ]) : ?>
< div class = " group_image float_left clear " >
2013-04-30 18:18:07 +00:00
< ? ImageTools :: cover_thumb ( $WikiImage , $GroupCategoryID ) ?>
2013-02-25 21:16:55 +00:00
</ div >
< ? endif ; ?>
< div class = " group_info clear " >
2013-03-29 08:00:08 +00:00
< strong >< ? = $DisplayName ?> </strong>
< ? if ( Bookmarks :: has_bookmarked ( 'torrent' , $GroupID )) {
echo " <a style = \" float: right; \" href= \" # \" id= \" bookmarklink_torrent_ $GroupID\ " class = \ " remove_bookmark brackets \" title= \" Unbookmark \" onclick= \" Unbookmark('torrent', $GroupID ,'Bookmark');return false; \" >Unbookmark</a> " ;
} else {
echo " <a style = \" float: right; \" href= \" # \" id= \" bookmarklink_torrent_ $GroupID\ " class = \ " add_bookmark brackets \" title= \" Bookmark \" onclick= \" Bookmark('torrent', $GroupID ,'Unbookmark');return false; \" >Bookmark</a> " ;
} ?>
< ? Votes :: vote_link ( $GroupID , $UserVotes [ $GroupID ][ 'Type' ]); ?>
2013-05-21 08:01:09 +00:00
< div class = " tags " >< ? = $TorrentTags -> format ( 'torrents.php?taglist=' , $Name ) ?> </div>
2013-02-25 21:16:55 +00:00
</ div >
2011-03-28 14:21:28 +00:00
</ td >
</ tr >
< ?
$LastRemasterYear = '-' ;
$LastRemasterTitle = '' ;
$LastRemasterRecordLabel = '' ;
$LastRemasterCatalogueNumber = '' ;
2011-09-04 08:00:07 +00:00
$LastMedia = '' ;
$EditionID = 0 ;
2011-09-05 08:00:07 +00:00
unset ( $FirstUnknown );
2012-10-11 08:00:15 +00:00
2011-03-28 14:21:28 +00:00
foreach ( $Torrents as $TorrentID => $Torrent ) {
2011-09-05 08:00:07 +00:00
if ( $Torrent [ 'Remastered' ] && ! $Torrent [ 'RemasterYear' ]) {
$FirstUnknown = ! isset ( $FirstUnknown );
}
2012-12-06 08:00:17 +00:00
$SnatchedTorrentClass = $Torrent [ 'IsSnatched' ] ? ' snatched_torrent' : '' ;
2012-10-11 08:00:15 +00:00
2013-04-17 08:00:58 +00:00
if ( $Torrent [ 'RemasterTitle' ] != $LastRemasterTitle || $Torrent [ 'RemasterYear' ] != $LastRemasterYear ||
$Torrent [ 'RemasterRecordLabel' ] != $LastRemasterRecordLabel || $Torrent [ 'RemasterCatalogueNumber' ] !=
$LastRemasterCatalogueNumber || $FirstUnknown || $Torrent [ 'Media' ] != $LastMedia ) {
2012-10-11 08:00:15 +00:00
2011-09-04 08:00:07 +00:00
$EditionID ++ ;
2011-03-28 14:21:28 +00:00
?>
2013-02-23 08:00:22 +00:00
< tr class = " releases_<?= $ReleaseType ?> groupid_<?= $GroupID ?> edition group_torrent discog<?= $SnatchedGroupClass . $HideDiscog . $HideTorrents ?> " >
2013-03-17 08:00:17 +00:00
< td colspan = " 6 " class = " edition_info " >< strong >< a href = " # " onclick = " toggle_edition(<?= $GroupID ?>, <?= $EditionID ?>, this, event) " title = " Collapse this edition. Hold "Ctrl" while clicking to collapse all editions in this torrent group. " >& minus ; </ a > < ? = Torrents :: edition_string ( $Torrent , $TorrentList [ $Group [ 'GroupID' ]]) ?> </strong></td>
2011-03-28 14:21:28 +00:00
</ tr >
< ?
}
$LastRemasterTitle = $Torrent [ 'RemasterTitle' ];
$LastRemasterYear = $Torrent [ 'RemasterYear' ];
$LastRemasterRecordLabel = $Torrent [ 'RemasterRecordLabel' ];
$LastRemasterCatalogueNumber = $Torrent [ 'RemasterCatalogueNumber' ];
2011-09-04 08:00:07 +00:00
$LastMedia = $Torrent [ 'Media' ];
2011-03-28 14:21:28 +00:00
?>
2012-12-06 08:00:17 +00:00
< tr class = " releases_<?= $ReleaseType ?> torrent_row groupid_<?= $GroupID ?> edition_<?= $EditionID ?> group_torrent discog<?= $SnatchedTorrentClass . $SnatchedGroupClass . $HideDiscog . $HideTorrents ?> " >
2011-09-04 08:00:07 +00:00
< td colspan = " 2 " >
2011-03-28 14:21:28 +00:00
< span >
2011-10-29 08:00:15 +00:00
[ < a href = " torrents.php?action=download&id=<?= $TorrentID ?>&authkey=<?= $LoggedUser['AuthKey'] ?>&torrent_pass=<?= $LoggedUser['torrent_pass'] ?> " title = " Download " >< ? = $Torrent [ 'HasFile' ] ? 'DL' : 'Missing' ?> </a>
2012-10-28 08:00:19 +00:00
< ? if ( Torrents :: can_use_token ( $Torrent )) { ?>
2012-09-09 08:00:26 +00:00
| < a href = " torrents.php?action=download&id=<?= $TorrentID ?>&authkey=<?= $LoggedUser['AuthKey'] ?>&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 >
2011-10-29 08:00:15 +00:00
< ? } ?> ]
2012-10-28 08:00:19 +00:00
</ span >
& nbsp ; & nbsp ; & raquo ; & nbsp ; < a href = " torrents.php?id=<?= $GroupID ?>&torrentid=<?= $TorrentID ?> " >< ? = Torrents :: torrent_info ( $Torrent ) ?> </a>
2011-03-28 14:21:28 +00:00
</ td >
2012-10-11 08:00:15 +00:00
< td class = " nobr " >< ? = Format :: get_size ( $Torrent [ 'Size' ]) ?> </td>
2011-03-28 14:21:28 +00:00
< td >< ? = number_format ( $Torrent [ 'Snatched' ]) ?> </td>
2013-05-15 08:00:54 +00:00
< td < ? = (( $Torrent [ 'Seeders' ] == 0 ) ? ' class="r00"' : '' ) ?> ><?=number_format($Torrent['Seeders'])?></td>
2011-03-28 14:21:28 +00:00
< td >< ? = number_format ( $Torrent [ 'Leechers' ]) ?> </td>
</ tr >
< ?
}
}
2013-04-17 08:00:58 +00:00
if ( ! empty ( $TorrentList )) { ?>
2011-03-28 14:21:28 +00:00
</ table >
</ div >
2013-05-15 08:00:54 +00:00
< ? }
2012-10-11 08:00:15 +00:00
2011-03-28 14:21:28 +00:00
$TorrentDisplayList = ob_get_clean ();
//----------------- End building list and getting stats
2013-03-05 08:00:26 +00:00
View :: show_header ( $Name , 'browse,requests,bbcode,comments,voting,jquery,recommend' );
2011-03-28 14:21:28 +00:00
?>
< div class = " thin " >
2012-08-19 08:00:19 +00:00
< div class = " header " >
< h2 >< ? = display_str ( $Name ) ?> <? if ($RevisionID) { ?> (Revision #<?=$RevisionID?>)<? } if ($VanityHouseArtist) { ?> [Vanity House] <? } ?></h2>
< div class = " linkbox " >
2011-03-28 14:21:28 +00:00
< ? if ( check_perms ( 'site_submit_requests' )) { ?>
2013-01-24 08:00:24 +00:00
< a href = " requests.php?action=new&artistid=<?= $ArtistID ?> " class = " brackets " > Add request </ a >
2011-03-28 14:21:28 +00:00
< ? }
if ( check_perms ( 'site_torrents_notify' )) {
2011-04-17 11:05:01 +00:00
if (( $Notify = $Cache -> get_value ( 'notify_artists_' . $LoggedUser [ 'ID' ])) === false ) {
2011-03-28 14:21:28 +00:00
$DB -> query ( " SELECT ID, Artists FROM users_notify_filters WHERE UserID=' $LoggedUser[ID] ' AND Label='Artist notifications' LIMIT 1 " );
2011-04-17 11:05:01 +00:00
$Notify = $DB -> next_record ( MYSQLI_ASSOC , false );
2011-03-28 14:21:28 +00:00
$Cache -> cache_value ( 'notify_artists_' . $LoggedUser [ 'ID' ], $Notify , 0 );
}
2011-04-17 11:05:01 +00:00
if ( stripos ( $Notify [ 'Artists' ], '|' . $Name . '|' ) === false ) {
2011-03-28 14:21:28 +00:00
?>
2013-01-24 08:00:24 +00:00
< a href = " artist.php?action=notify&artistid=<?= $ArtistID ?>&auth=<?= $LoggedUser['AuthKey'] ?> " class = " brackets " > Notify of new uploads </ a >
2011-03-28 14:21:28 +00:00
< ?
} else {
?>
2013-01-24 08:00:24 +00:00
< a href = " artist.php?action=notifyremove&artistid=<?= $ArtistID ?>&auth=<?= $LoggedUser['AuthKey'] ?> " class = " brackets " > Do not notify of new uploads </ a >
2011-03-28 14:21:28 +00:00
< ?
}
}
2013-04-17 08:00:58 +00:00
if ( Bookmarks :: has_bookmarked ( 'artist' , $ArtistID )) {
2011-08-09 21:03:28 +00:00
?>
2013-01-24 08:00:24 +00:00
< a href = " # " id = " bookmarklink_artist_<?= $ArtistID ?> " onclick = " Unbookmark('artist', <?= $ArtistID ?>,'Bookmark');return false; " class = " brackets " > Remove bookmark </ a >
2011-08-09 21:03:28 +00:00
< ?
2012-10-11 08:00:15 +00:00
} else {
2011-08-09 21:03:28 +00:00
?>
2013-01-24 08:00:24 +00:00
< a href = " # " id = " bookmarklink_artist_<?= $ArtistID ?> " onclick = " Bookmark('artist', <?= $ArtistID ?>,'Remove bookmark');return false; " class = " brackets " > Bookmark </ a >
2011-08-09 21:03:28 +00:00
< ?
2013-04-17 08:00:58 +00:00
}
2013-03-05 08:00:26 +00:00
?>
2013-04-19 08:00:55 +00:00
<!-- < a href = " # " id = " recommend " class = " brackets " > Recommend </ a > -->
2013-03-05 08:00:26 +00:00
< ?
2013-04-17 08:00:58 +00:00
if ( check_perms ( 'site_edit_wiki' )) {
2011-03-28 14:21:28 +00:00
?>
2013-01-24 08:00:24 +00:00
< a href = " artist.php?action=edit&artistid=<?= $ArtistID ?> " class = " brackets " > Edit </ a >
2013-04-17 08:00:58 +00:00
< ? } ?>
2013-01-24 08:00:24 +00:00
< a href = " artist.php?action=history&artistid=<?= $ArtistID ?> " class = " brackets " > View history </ a >
< a href = " artist.php?id=<?= $ArtistID ?>#info " class = " brackets " > Info </ a >
2013-06-13 08:01:05 +00:00
< ? if ( defined ( 'LASTFM_API_KEY' )) { ?>
2013-01-24 08:00:24 +00:00
< a href = " artist.php?id=<?= $ArtistID ?>#concerts " class = " brackets " > Concerts </ a >
2013-06-12 08:00:46 +00:00
< ? } ?>
2013-01-24 08:00:24 +00:00
< a href = " artist.php?id=<?= $ArtistID ?>#artistcomments " class = " brackets " > Comments </ a >
2013-04-17 08:00:58 +00:00
< ? if ( check_perms ( 'site_delete_artist' ) && check_perms ( 'torrents_delete' )) { ?>
2013-01-24 08:00:24 +00:00
< a href = " artist.php?action=delete&artistid=<?= $ArtistID ?>&auth=<?= $LoggedUser['AuthKey'] ?> " class = " brackets " > Delete </ a >
2013-04-17 08:00:58 +00:00
< ? }
2011-03-28 14:21:28 +00:00
2013-04-17 08:00:58 +00:00
if ( $RevisionID && check_perms ( 'site_edit_wiki' )) {
2011-03-28 14:21:28 +00:00
?>
2013-05-06 08:00:32 +00:00
< a href = " artist.php?action=revert&artistid=<?= $ArtistID ?>&revisionid=<?= $RevisionID ?>&auth=<?= $LoggedUser['AuthKey'] ?> " class = " brackets " > Revert to this revision </ a >
2013-04-17 08:00:58 +00:00
< ? } ?>
2012-08-19 08:00:19 +00:00
</ div >
2013-04-17 08:00:58 +00:00
</ div >
2013-03-06 08:00:23 +00:00
< ? /* Misc::display_recommend($ArtistID, "artist"); */ ?>
2013-04-17 08:00:58 +00:00
< div class = " sidebar " >
2013-04-30 18:18:07 +00:00
< ? if ( $Image ) { ?>
2012-08-17 08:00:13 +00:00
< div class = " box box_image " >
2011-03-28 14:21:28 +00:00
< div class = " head " >< strong >< ? = $Name ?> </strong></div>
2013-04-17 08:00:58 +00:00
< div style = " text-align: center; padding: 10px 0px; " >
2013-04-30 18:18:07 +00:00
< img style = " max-width: 220px; " src = " <?=ImageTools::process( $Image , true)?> " alt = " <?= $Name ?> " onclick = " lightbox.init('<?=ImageTools::process( $Image )?>',220); " />
2011-03-28 14:21:28 +00:00
</ div >
</ div >
2012-06-21 08:00:14 +00:00
< ? } ?>
2012-08-17 08:00:13 +00:00
< div class = " box box_search " >
2013-01-16 08:00:31 +00:00
< div class = " head " >< strong > Search file lists </ strong ></ div >
2012-10-29 08:00:20 +00:00
< ul class = " nobullet " >
< li >
< form class = " search_form " name = " filelists " action = " torrents.php " >
< input type = " hidden " name = " artistname " value = " <?= $Name ?> " />
< input type = " hidden " name = " action " value = " advanced " />
< input type = " text " autocomplete = " off " id = " filelist " name = " filelist " size = " 20 " />
< input type = " submit " value = " > " />
</ form >
</ li >
</ ul >
</ div >
2012-06-21 08:00:14 +00:00
< ?
2013-04-17 08:00:58 +00:00
if ( check_perms ( 'zip_downloader' )) {
if ( isset ( $LoggedUser [ 'Collector' ])) {
2011-03-28 14:21:28 +00:00
list ( $ZIPList , $ZIPPrefs ) = $LoggedUser [ 'Collector' ];
$ZIPList = explode ( ':' , $ZIPList );
} else {
$ZIPList = array ( '00' , '11' );
$ZIPPrefs = 1 ;
}
?>
2012-11-18 08:00:19 +00:00
< div class = " box box_zipdownload " >
2011-03-28 14:21:28 +00:00
< div class = " head colhead_dark " >< strong > Collector </ strong ></ div >
< div class = " pad " >
2012-09-15 08:00:25 +00:00
< form class = " download_form " name = " zip " action = " artist.php " method = " post " >
2011-03-28 14:21:28 +00:00
< input type = " hidden " name = " action " value = " download " />
< input type = " hidden " name = " auth " value = " <?= $LoggedUser['AuthKey'] ?> " />
2012-10-11 08:00:15 +00:00
< input type = " hidden " name = " artistid " value = " <?= $ArtistID ?> " />
2012-10-29 08:00:20 +00:00
< ul id = " list " class = " nobullet " >
2011-03-28 14:21:28 +00:00
< ? foreach ( $ZIPList as $ListItem ) { ?>
2012-10-29 08:00:20 +00:00
< li id = " list<?= $ListItem ?> " >
< input type = " hidden " name = " list[] " value = " <?= $ListItem ?> " />
2013-04-17 08:00:58 +00:00
< span style = " float: left; " >< ? = $ZIPOptions [ $ListItem ][ '2' ] ?> </span>
< span class = " remove remove_collector " >< a href = " # " onclick = " remove_selection('<?= $ListItem ?>');return false; " style = " float: right; " class = " brackets " title = " Remove format from the Collector " > X </ a ></ span >
< br style = " clear: all; " />
2012-10-29 08:00:20 +00:00
</ li >
2011-03-28 14:21:28 +00:00
< ? } ?>
2012-10-29 08:00:20 +00:00
</ ul >
2013-04-17 08:00:58 +00:00
< select id = " formats " style = " width: 180px; " >
2011-03-28 14:21:28 +00:00
< ?
$OpenGroup = false ;
2013-04-17 08:00:58 +00:00
$LastGroupID = - 1 ;
2011-03-28 14:21:28 +00:00
foreach ( $ZIPOptions as $Option ) {
list ( $GroupID , $OptionID , $OptName ) = $Option ;
2013-04-17 08:00:58 +00:00
if ( $GroupID != $LastGroupID ) {
$LastGroupID = $GroupID ;
if ( $OpenGroup ) { ?>
2012-10-29 08:00:20 +00:00
</ optgroup >
2011-03-28 14:21:28 +00:00
< ? } ?>
2012-10-29 08:00:20 +00:00
< optgroup label = " <?= $ZIPGroups[$GroupID] ?> " >
2011-03-28 14:21:28 +00:00
< ? $OpenGroup = true ;
}
?>
2013-05-15 08:00:54 +00:00
< option id = " opt<?= $GroupID . $OptionID ?> " value = " <?= $GroupID . $OptionID ?> " < ? if ( in_array ( $GroupID . $OptionID , $ZIPList )) { echo ' disabled="disabled"' ; } ?> ><?=$OptName?></option>
2011-03-28 14:21:28 +00:00
< ?
}
?>
2012-10-29 08:00:20 +00:00
</ optgroup >
</ select >
< button type = " button " onclick = " add_selection() " >+</ button >
2013-05-04 08:00:48 +00:00
< select name = " preference " style = " width: 210px; " >
< option value = " 0 " < ? if ( $ZIPPrefs == 0 ) { echo ' selected="selected"' ; } ?> >Prefer Original</option>
< option value = " 1 " < ? if ( $ZIPPrefs == 1 ) { echo ' selected="selected"' ; } ?> >Prefer Best Seeded</option>
< option value = " 2 " < ? if ( $ZIPPrefs == 2 ) { echo ' selected="selected"' ; } ?> >Prefer Bonus Tracks</option>
2012-10-29 08:00:20 +00:00
</ select >
2013-05-15 08:00:54 +00:00
< input type = " submit " style = " width: 210px; " value = " Download " />
2011-03-28 14:21:28 +00:00
</ form >
</ div >
</ div >
< ? } ?>
2012-08-17 08:00:13 +00:00
< div class = " box box_tags " >
2011-03-28 14:21:28 +00:00
< div class = " head " >< strong > Tags </ strong ></ div >
< ul class = " stats nobullet " >
< ?
2013-05-21 08:01:09 +00:00
Tags :: format_top ( 50 , " torrents.php?taglist= " , $Name );
2011-03-28 14:21:28 +00:00
?>
</ ul >
</ div >
< ?
// Stats
?>
2012-10-29 08:00:20 +00:00
< div class = " box box_info box_statistics_artist " >
2011-03-28 14:21:28 +00:00
< div class = " head " >< strong > Statistics </ strong ></ div >
< ul class = " stats nobullet " >
2012-10-06 08:00:19 +00:00
< li > Number of groups : < ? = number_format ( $NumGroups ) ?> </li>
< li > Number of torrents : < ? = number_format ( $NumTorrents ) ?> </li>
< li > Number of seeders : < ? = number_format ( $NumSeeders ) ?> </li>
< li > Number of leechers : < ? = number_format ( $NumLeechers ) ?> </li>
< li > Number of snatches : < ? = number_format ( $NumSnatches ) ?> </li>
2011-03-28 14:21:28 +00:00
</ ul >
</ div >
< ?
2013-04-17 08:00:58 +00:00
if ( empty ( $SimilarArray )) {
2011-03-28 14:21:28 +00:00
$DB -> query ( "
SELECT
2013-04-17 08:00:58 +00:00
s2 . ArtistID ,
a . Name ,
ass . Score ,
ass . SimilarID
2011-03-28 14:21:28 +00:00
FROM artists_similar AS s1
2013-04-17 08:00:58 +00:00
JOIN artists_similar AS s2 ON s1 . SimilarID = s2 . SimilarID AND s1 . ArtistID != s2 . ArtistID
JOIN artists_similar_scores AS ass ON ass . SimilarID = s1 . SimilarID
JOIN artists_group AS a ON a . ArtistID = s2 . ArtistID
2011-03-28 14:21:28 +00:00
WHERE s1 . ArtistID = '$ArtistID'
ORDER BY ass . Score DESC
LIMIT 30
" );
$SimilarArray = $DB -> to_array ();
$NumSimilar = count ( $SimilarArray );
}
?>
2012-08-17 08:00:13 +00:00
< div class = " box box_artists " >
2011-03-28 14:21:28 +00:00
< div class = " head " >< strong > Similar artists </ strong ></ div >
< ul class = " stats nobullet " >
< ?
2013-04-17 08:00:58 +00:00
if ( $NumSimilar == 0 ) { ?>
2012-10-11 08:00:15 +00:00
< li >< span style = " font-style: italic; " > None found </ span ></ li >
2011-03-28 14:21:28 +00:00
< ? }
$First = true ;
2012-10-11 08:00:15 +00:00
foreach ( $SimilarArray as $SimilarArtist ) {
2011-03-28 14:21:28 +00:00
list ( $Artist2ID , $Artist2Name , $Score , $SimilarID ) = $SimilarArtist ;
2013-04-17 08:00:58 +00:00
$Score = $Score / 100 ;
if ( $First ) {
2012-09-23 08:00:25 +00:00
$Max = $Score + 1 ;
2011-03-28 14:21:28 +00:00
$First = false ;
}
2012-09-23 08:00:25 +00:00
2013-05-15 08:00:54 +00:00
$FontSize = ( ceil ((((( $Score - 2 ) / $Max - 2 ) * 4 )))) + 8 ;
2012-09-23 08:00:25 +00:00
2011-03-28 14:21:28 +00:00
?>
< li >
2013-04-17 08:00:58 +00:00
< span title = " <?= $Score ?> " >< a href = " artist.php?id=<?= $Artist2ID ?> " style = " float: left; display: block; " >< ? = $Artist2Name ?> </a></span>
< div style = " float: right; display: block; letter-spacing: -1px; " >
2013-02-18 08:00:22 +00:00
< a href = " artist.php?action=vote_similar&artistid=<?= $ArtistID ?>&similarid=<?= $SimilarID ?>&way=down " style = " font-family: monospace; " title = " Vote down this similar artist. Use this when you feel that the two artists are not all that similar. " class = " brackets " >& minus ; </ a >
2013-02-09 08:01:01 +00:00
< a href = " artist.php?action=vote_similar&artistid=<?= $ArtistID ?>&similarid=<?= $SimilarID ?>&way=up " style = " font-family: monospace; " title = " Vote up this similar artist. Use this when you feel that the two artists are quite similar. " class = " brackets " >+</ a >
2013-04-17 08:00:58 +00:00
< ? if ( check_perms ( 'site_delete_tag' )) { ?>
2013-02-09 08:01:01 +00:00
< span class = " remove remove_artist " >< a href = " artist.php?action=delete_similar&similarid=<?= $SimilarID ?>&auth=<?= $LoggedUser['AuthKey'] ?> " title = " Remove this similar artist " class = " brackets " > X </ a ></ span >
2012-09-23 08:00:25 +00:00
< ? } ?>
2011-03-28 14:21:28 +00:00
</ div >
2013-05-04 08:00:48 +00:00
< br style = " clear: both; " />
2011-03-28 14:21:28 +00:00
</ li >
< ? } ?>
</ ul >
</ div >
2012-09-15 08:00:25 +00:00
< div class = " box box_addartists box_addartists_similar " >
2011-03-28 14:21:28 +00:00
< div class = " head " >< strong > Add similar artist </ strong ></ div >
< ul class = " nobullet " >
< li >
2012-09-15 08:00:25 +00:00
< form class = " add_form " name = " similar_artists " action = " artist.php " method = " post " >
2011-03-28 14:21:28 +00:00
< input type = " hidden " name = " action " value = " add_similar " />
< input type = " hidden " name = " auth " value = " <?= $LoggedUser['AuthKey'] ?> " />
< input type = " hidden " name = " artistid " value = " <?= $ArtistID ?> " />
< input type = " text " autocomplete = " off " id = " artistsimilar " name = " artistname " size = " 20 " />
< input type = " submit " value = " + " />
</ form >
</ li >
</ ul >
</ div >
</ div >
< div class = " main_column " >
< ?
echo $TorrentDisplayList ;
2013-05-25 08:01:03 +00:00
$Collages = $Cache -> get_value ( 'artists_collages_' . $ArtistID );
if ( ! is_array ( $Collages )) {
2013-05-26 08:00:59 +00:00
$DB -> query ( "
SELECT c . Name , c . NumTorrents , c . ID
FROM collages AS c
JOIN collages_artists AS ca ON ca . CollageID = c . ID
WHERE ca . ArtistID = '$ArtistID'
AND Deleted = '0'
AND CategoryID = '7' " );
2013-05-25 08:01:03 +00:00
$Collages = $DB -> to_array ();
$Cache -> cache_value ( 'artists_collages_' . $ArtistID , $Collages , 3600 * 6 );
}
if ( count ( $Collages ) > 0 ) {
if ( count ( $Collages ) > MAX_COLLAGES ) {
// Pick some at random
$Range = range ( 0 , count ( $Collages ) - 1 );
shuffle ( $Range );
$Indices = array_slice ( $Range , 0 , MAX_COLLAGES );
$SeeAll = ' <a href="#" onclick="$(\'.collage_rows\').toggle(); return false;">(See all)</a>' ;
} else {
$Indices = range ( 0 , count ( $Collages ) - 1 );
$SeeAll = '' ;
}
?>
< table class = " collage_table " id = " collages " >
< tr class = " colhead " >
2013-05-26 08:00:59 +00:00
< td width = " 85% " >< a href = " # " >& uarr ; </ a >& nbsp ; This artists is in < ? = number_format ( count ( $Collages )) ?> collage<?=((count($Collages) > 1) ? 's' : '')?><?=$SeeAll?></td>
2013-05-25 08:01:03 +00:00
< td > # artists</td>
</ tr >
< ? foreach ( $Indices as $i ) {
list ( $CollageName , $CollageArtists , $CollageID ) = $Collages [ $i ];
unset ( $Collages [ $i ]);
?>
< tr >
< td >< a href = " collages.php?id=<?= $CollageID ?> " >< ? = $CollageName ?> </a></td>
< td >< ? = number_format ( $CollageArtists ) ?> </td>
</ tr >
< ? }
foreach ( $Collages as $Collage ) {
list ( $CollageName , $CollageArtists , $CollageID ) = $Collage ;
?>
< tr class = " collage_rows hidden " >
< td >< a href = " collages.php?id=<?= $CollageID ?> " >< ? = $CollageName ?> </a></td>
< td >< ? = number_format ( $CollageArtists ) ?> </td>
</ tr >
< ? } ?>
</ table >
< ?
}
2013-04-17 08:00:58 +00:00
if ( $NumRequests > 0 ) {
2012-09-23 08:00:25 +00:00
2011-03-28 14:21:28 +00:00
?>
2012-09-01 08:00:24 +00:00
< table cellpadding = " 6 " cellspacing = " 1 " border = " 0 " class = " request_table border " width = " 100% " id = " requests " >
2011-03-28 14:21:28 +00:00
< tr class = " colhead_dark " >
2013-05-04 08:00:48 +00:00
< td style = " width: 48%; " >
2011-03-28 14:21:28 +00:00
< a href = " # " >& uarr ; </ a >& nbsp ;
2013-01-16 08:00:31 +00:00
< strong > Request name </ strong >
2011-03-28 14:21:28 +00:00
</ td >
< td >
< strong > Vote </ strong >
</ td >
< td >
< strong > Bounty </ strong >
</ td >
< td >
< strong > Added </ strong >
</ td >
</ tr >
< ?
2013-04-17 08:00:58 +00:00
foreach ( $Requests as $Request ) {
2011-03-28 14:21:28 +00:00
list ( $RequestID , $CategoryID , $Title , $Year , $TimeAdded , $Votes , $Bounty ) = $Request ;
2012-09-23 08:00:25 +00:00
2011-03-28 14:21:28 +00:00
$CategoryName = $Categories [ $CategoryID - 1 ];
2012-09-23 08:00:25 +00:00
2013-05-04 08:00:48 +00:00
if ( $CategoryName == 'Music' ) {
2013-05-13 08:00:33 +00:00
$ArtistForm = Requests :: get_artists ( $RequestID );
2012-10-11 08:00:15 +00:00
$ArtistLink = Artists :: display_artists ( $ArtistForm , true , true );
2013-05-04 08:00:48 +00:00
$FullName = $ArtistLink . " <a href= \" requests.php?action=view&id= " . $RequestID . " \" > $Title [ $Year ]</a> " ;
} elseif ( $CategoryName == 'Audiobooks' || $CategoryName == 'Comedy' ) {
$FullName = " <a href= \" requests.php?action=view&id= " . $RequestID . " \" > $Title [ $Year ]</a> " ;
2011-03-28 14:21:28 +00:00
} else {
2013-05-04 08:00:48 +00:00
$FullName = " <a href= \" requests.php?action=view&id= " . $RequestID . " \" > $Title </a> " ;
2011-03-28 14:21:28 +00:00
}
2012-09-23 08:00:25 +00:00
2011-03-28 14:21:28 +00:00
$Row = ( $Row == 'a' ) ? 'b' : 'a' ;
2012-09-23 08:00:25 +00:00
2013-05-13 08:00:33 +00:00
$Tags = Requests :: get_tags ( $RequestID );
2013-02-26 08:00:42 +00:00
$ReqTagList = array ();
2013-04-17 08:00:58 +00:00
foreach ( $Tags as $TagID => $TagName ) {
2013-05-14 08:00:34 +00:00
$ReqTagList [] = " <a href= \" requests.php?tags= " . $TagName . '">' . display_str ( $TagName ) . '</a>' ;
2013-02-26 08:00:42 +00:00
}
$ReqTagList = implode ( ', ' , $ReqTagList );
2011-03-28 14:21:28 +00:00
?>
< tr class = " row<?= $Row ?> " >
< td >
< ? = $FullName ?>
2013-02-26 08:00:42 +00:00
< div class = " tags " >< ? = $ReqTagList ?> </div>
2011-03-28 14:21:28 +00:00
</ td >
< td >
2011-06-27 08:00:06 +00:00
< span id = " vote_count_<?= $RequestID ?> " >< ? = $Votes ?> </span>
2013-05-30 08:00:30 +00:00
< ? if ( check_perms ( 'site_vote' )) { ?>
2011-03-28 14:21:28 +00:00
< input type = " hidden " id = " auth " name = " auth " value = " <?= $LoggedUser['AuthKey'] ?> " />
2013-02-09 08:01:01 +00:00
& nbsp ; & nbsp ; < a href = " javascript:Vote(0, <?= $RequestID ?>) " class = " brackets " >< strong >+</ strong ></ a >
2012-09-23 08:00:25 +00:00
< ? } ?>
2011-03-28 14:21:28 +00:00
</ td >
< td >
2012-10-11 08:00:15 +00:00
< span id = " bounty_<?= $RequestID ?> " >< ? = Format :: get_size ( $Bounty ) ?> </span>
2011-03-28 14:21:28 +00:00
</ td >
< td >
< ? = time_diff ( $TimeAdded ) ?>
</ td >
</ tr >
< ? } ?>
</ table >
< ?
}
// Similar artist map
2013-04-17 08:00:58 +00:00
if ( $NumSimilar > 0 ) {
if ( $SimilarData = $Cache -> get_value ( 'similar_positions_' . $ArtistID )) {
2011-03-28 14:21:28 +00:00
$Similar = new ARTISTS_SIMILAR ( $ArtistID , $Name );
$Similar -> load_data ( $SimilarData );
2013-04-17 08:00:58 +00:00
if ( ! ( current ( $Similar -> Artists ) -> NameLength )) {
2011-03-28 14:21:28 +00:00
unset ( $Similar );
}
}
2013-04-17 08:00:58 +00:00
if ( empty ( $Similar ) || empty ( $Similar -> Artists )) {
2013-05-27 08:00:58 +00:00
include ( SERVER_ROOT . '/classes/image.class.php' );
2011-03-28 14:21:28 +00:00
$Img = new IMAGE ;
$Img -> create ( WIDTH , HEIGHT );
2013-05-25 08:01:03 +00:00
$Img -> color ( 255 , 255 , 255 , 127 );
2012-09-23 08:00:25 +00:00
2011-03-28 14:21:28 +00:00
$Similar = new ARTISTS_SIMILAR ( $ArtistID , $Name );
$Similar -> set_up ();
$Similar -> set_positions ();
$Similar -> background_image ();
2012-09-23 08:00:25 +00:00
2011-03-28 14:21:28 +00:00
$SimilarData = $Similar -> dump_data ();
2012-09-23 08:00:25 +00:00
2013-05-04 08:00:48 +00:00
$Cache -> cache_value ( 'similar_positions_' . $ArtistID , $SimilarData , 3600 * 24 );
2011-03-28 14:21:28 +00:00
}
?>
< div id = " similar_artist_map " class = " box " >
2012-06-28 08:00:13 +00:00
< div id = " flipper_head " class = " head " >
2012-12-23 08:00:46 +00:00
< a href = " # " >& uarr ; </ a >& nbsp ;
2013-02-09 08:01:01 +00:00
< strong id = " flipper_title " > Similar artist map </ strong >
< a id = " flip_to " class = " brackets " href = " #null " onclick = " flipView(); " > Switch to cloud </ a >
2012-10-29 08:00:20 +00:00
</ div >
2013-05-25 08:01:03 +00:00
< div id = " flip_view_1 " style = " display: block; width: <?=(WIDTH)?>px; height: <?=(HEIGHT)?>px; position: relative; background-image: url(static/similar/<?=( $ArtistID )?>.png?t=<?=(time())?>); " >
2011-03-28 14:21:28 +00:00
< ?
$Similar -> write_artists ();
?>
2012-10-29 08:00:20 +00:00
</ div >
2013-05-04 08:00:48 +00:00
< div id = " flip_view_2 " style = " display: none; width: <?=WIDTH?>px; height: <?=HEIGHT?>px; " >
< canvas width = " <?=(WIDTH)?>px " height = " <?=(HEIGHT - 20)?>px " id = " similarArtistsCanvas " ></ canvas >
< div id = " artistTags " style = " display: none; " >
2012-12-27 08:00:27 +00:00
< ul >< li ></ li ></ ul >
2012-10-29 08:00:20 +00:00
</ div >
2013-05-04 08:00:48 +00:00
< strong style = " margin-left: 10px; " >< a id = " currentArtist " href = " #null " > Loading ...</ a ></ strong >
2012-10-29 08:00:20 +00:00
</ div >
2012-11-06 08:00:20 +00:00
</ div >
2012-06-28 08:00:13 +00:00
2013-02-10 08:00:29 +00:00
< script type = " text/javascript " >//<! [ CDATA [
2012-06-28 08:00:13 +00:00
var cloudLoaded = false ;
function flipView () {
2013-02-10 08:00:29 +00:00
var state = document . getElementById ( 'flip_view_1' ) . style . display == 'block' ;
2013-04-17 08:00:58 +00:00
if ( state ) {
2013-02-10 08:00:29 +00:00
document . getElementById ( 'flip_view_1' ) . style . display = 'none' ;
document . getElementById ( 'flip_view_2' ) . style . display = 'block' ;
document . getElementById ( 'flipper_title' ) . innerHTML = 'Similar artist cloud' ;
document . getElementById ( 'flip_to' ) . innerHTML = 'Switch to map' ;
2013-04-17 08:00:58 +00:00
if ( ! cloudLoaded ) {
2013-02-10 08:00:29 +00:00
require ( " static/functions/jquery.js " , function () {
require ( " static/functions/tagcanvas.js " , function () {
require ( " static/functions/artist_cloud.js " , function () {
});
});
2012-06-28 08:00:13 +00:00
});
2013-02-10 08:00:29 +00:00
cloudLoaded = true ;
}
}
else {
document . getElementById ( 'flip_view_1' ) . style . display = 'block' ;
document . getElementById ( 'flip_view_2' ) . style . display = 'none' ;
document . getElementById ( 'flipper_title' ) . innerHTML = 'Similar artist map' ;
document . getElementById ( 'flip_to' ) . innerHTML = 'Switch to cloud' ;
}
2012-06-28 08:00:13 +00:00
}
//TODO move this to global, perhaps it will be used elsewhere in the future
//http://stackoverflow.com/questions/7293344/load-javascript-dynamically
function require ( file , callback ) {
2013-02-10 08:00:29 +00:00
var script = document . getElementsByTagName ( 'script' )[ 0 ],
newjs = document . createElement ( 'script' );
// IE
newjs . onreadystatechange = function () {
if ( newjs . readyState === 'loaded' || newjs . readyState === 'complete' ) {
newjs . onreadystatechange = null ;
callback ();
}
};
// others
newjs . onload = function () {
callback ();
};
newjs . src = file ;
script . parentNode . insertBefore ( newjs , script );
2012-06-28 08:00:13 +00:00
}
2012-12-27 08:00:27 +00:00
//]]>
2012-06-28 08:00:13 +00:00
</ script >
2013-05-04 08:00:48 +00:00
< ? } // if $NumSimilar > 0 ?>
2011-03-28 14:21:28 +00:00
< div class = " box " >
2012-10-30 08:00:18 +00:00
< div id = " info " class = " head " >
2012-12-23 08:00:46 +00:00
< a href = " # " >& uarr ; </ a >& nbsp ;
2012-10-30 08:00:18 +00:00
< strong > Artist info </ strong >
2013-02-09 08:01:01 +00:00
< a href = " # " class = " brackets " onclick = " $ ('#body').toggle(); return false; " > Toggle </ a >
2012-10-30 08:00:18 +00:00
</ div >
< div id = " body " class = " body " >< ? = $Text -> full_format ( $Body ) ?> </div>
2011-03-28 14:21:28 +00:00
</ div >
2013-06-13 08:01:05 +00:00
< ? if ( defined ( 'LASTFM_API_KEY' )) {
2013-06-12 08:00:46 +00:00
include ( SERVER_ROOT . '/sections/artist/concerts.php' );
} ?>
2012-10-27 08:00:09 +00:00
< ? php
// --- Comments ---
// gets the amount of comments for this group
$Results = $Cache -> get_value ( 'artist_comments_' . $ArtistID );
2013-04-17 08:00:58 +00:00
if ( $Results === false ) {
2013-05-04 08:00:48 +00:00
$DB -> query ( "
SELECT
2012-10-27 08:00:09 +00:00
COUNT ( c . ID )
2013-05-04 08:00:48 +00:00
FROM artist_comments as c
WHERE c . ArtistID = '$ArtistID' " );
2012-10-27 08:00:09 +00:00
list ( $Results ) = $DB -> next_record ();
$Cache -> cache_value ( 'artist_comments_' . $ArtistID , $Results , 0 );
}
2013-04-17 08:00:58 +00:00
if ( isset ( $_GET [ 'postid' ]) && is_number ( $_GET [ 'postid' ]) && $Results > TORRENT_COMMENTS_PER_PAGE ) {
2013-05-04 08:00:48 +00:00
$DB -> query ( "
SELECT COUNT ( ID )
FROM artist_comments
WHERE ArtistID = $ArtistID
AND ID <= $_GET [ postid ] " );
2012-10-27 08:00:09 +00:00
list ( $PostNum ) = $DB -> next_record ();
2013-05-16 16:15:57 +00:00
list ( $Page , $Limit ) = Format :: page_limit ( TORRENT_COMMENTS_PER_PAGE , $PostNum );
2012-10-27 08:00:09 +00:00
} else {
2013-05-16 16:15:57 +00:00
list ( $Page , $Limit ) = Format :: page_limit ( TORRENT_COMMENTS_PER_PAGE , $Results );
2012-10-27 08:00:09 +00:00
}
//Get the cache catalogue
2013-05-04 08:00:48 +00:00
$CatalogueID = floor (( TORRENT_COMMENTS_PER_PAGE * $Page - TORRENT_COMMENTS_PER_PAGE ) / THREAD_CATALOGUE );
$CatalogueLimit = $CatalogueID * THREAD_CATALOGUE . ', ' . THREAD_CATALOGUE ;
2012-10-27 08:00:09 +00:00
//---------- Get some data to start processing
// Cache catalogue from which the page is selected, allows block caches and future ability to specify posts per page
$Catalogue = $Cache -> get_value ( 'artist_comments_' . $ArtistID . '_catalogue_' . $CatalogueID );
2013-04-17 08:00:58 +00:00
if ( $Catalogue === false ) {
2013-05-04 08:00:48 +00:00
$DB -> query ( "
SELECT
2012-10-27 08:00:09 +00:00
c . ID ,
c . AuthorID ,
c . AddedTime ,
c . Body ,
c . EditedUserID ,
c . EditedTime ,
u . Username
2013-05-04 08:00:48 +00:00
FROM artist_comments as c
2012-10-27 08:00:09 +00:00
LEFT JOIN users_main AS u ON u . ID = c . EditedUserID
2013-05-04 08:00:48 +00:00
WHERE c . ArtistID = '$ArtistID'
ORDER BY c . ID
LIMIT $CatalogueLimit " );
2013-05-16 16:15:57 +00:00
$Catalogue = $DB -> to_array ( false , MYSQLI_ASSOC );
2012-10-27 08:00:09 +00:00
$Cache -> cache_value ( 'artist_comments_' . $ArtistID . '_catalogue_' . $CatalogueID , $Catalogue , 0 );
}
//This is a hybrid to reduce the catalogue down to the page elements: We use the page limit % catalogue
2013-05-16 16:15:57 +00:00
$Thread = array_slice ( $Catalogue , (( TORRENT_COMMENTS_PER_PAGE * $Page - TORRENT_COMMENTS_PER_PAGE ) % THREAD_CATALOGUE ), TORRENT_COMMENTS_PER_PAGE , true );
2012-10-27 08:00:09 +00:00
?>
2012-10-30 08:00:18 +00:00
< div id = " artistcomments " class = " linkbox " >
2012-10-29 08:00:20 +00:00
< a name = " comments " ></ a >
2012-10-27 08:00:09 +00:00
< ?
2013-05-15 08:00:54 +00:00
$Pages = Format :: get_pages ( $Page , $Results , TORRENT_COMMENTS_PER_PAGE , 9 , '#comments' );
2012-10-27 08:00:09 +00:00
echo $Pages ;
?>
</ div >
< ?
//---------- Begin printing
2013-04-17 08:00:58 +00:00
foreach ( $Thread as $Key => $Post ) {
2012-10-28 08:00:19 +00:00
list ( $PostID , $AuthorID , $AddedTime , $CommentBody , $EditedUserID , $EditedTime , $EditedUsername ) = array_values ( $Post );
2012-10-27 08:00:09 +00:00
list ( $AuthorID , $Username , $PermissionID , $Paranoia , $Artist , $Donor , $Warned , $Avatar , $Enabled , $UserTitle ) = array_values ( Users :: user_info ( $AuthorID ));
?>
2013-05-04 08:00:48 +00:00
< table class = " forum_post box vertical_margin<?=(!Users::has_avatars_enabled() ? ' noavatar' : '')?> " id = " post<?= $PostID ?> " >
2012-10-29 08:00:20 +00:00
< colgroup >
2012-11-01 08:00:21 +00:00
< ? if ( Users :: has_avatars_enabled ()) { ?>
2012-10-29 08:00:20 +00:00
< col class = " col_avatar " />
< ? } ?>
< col class = " col_post_body " />
</ colgroup >
2012-10-27 08:00:09 +00:00
< tr class = " colhead_dark " >
2013-05-04 08:00:48 +00:00
< td colspan = " <?=(Users::has_avatars_enabled() ? 2 : 1)?> " >
2013-05-21 08:01:09 +00:00
< div style = " float: left; " >< a class = " post_id " href = " artist.php?id=<?= $ArtistID ?>&postid=<?= $PostID ?>#post<?= $PostID ?> " > #<?=$PostID?></a>
2012-10-29 08:00:20 +00:00
< strong >< ? = Users :: format_username ( $AuthorID , true , true , true , true ) ?> </strong> <?=time_diff($AddedTime)?>
2013-02-09 08:01:01 +00:00
- < a href = " #quickpost " onclick = " Quote('<?= $PostID ?>','<?= $Username ?>'); " class = " brackets " > Quote </ a >
2012-10-29 08:00:20 +00:00
< ? if ( $AuthorID == $LoggedUser [ 'ID' ] || check_perms ( 'site_moderate_forums' )) { ?>
2013-02-09 08:01:01 +00:00
- < a href = " #post<?= $PostID ?> " onclick = " Edit_Form('<?= $PostID ?>','<?= $Key ?>'); " class = " brackets " > Edit </ a >
2012-10-29 08:00:20 +00:00
< ? }
if ( check_perms ( 'site_moderate_forums' )) { ?>
2013-02-09 08:01:01 +00:00
- < a href = " #post<?= $PostID ?> " onclick = " Delete('<?= $PostID ?>'); " class = " brackets " > Delete </ a >
2012-10-29 08:00:20 +00:00
< ? } ?>
</ div >
2013-05-15 08:00:54 +00:00
< div id = " bar<?= $PostID ?> " style = " float: right; " >
2013-02-09 08:01:01 +00:00
< a href = " reports.php?action=report&type=artist_comment&id=<?= $PostID ?> " class = " brackets " > Report </ a >
2012-10-29 08:00:20 +00:00
< ? if ( check_perms ( 'users_warn' ) && $AuthorID != $LoggedUser [ 'ID' ]) {
$AuthorInfo = Users :: user_info ( $AuthorID );
if ( $LoggedUser [ 'Class' ] >= $AuthorInfo [ 'Class' ]) {
?>
< form class = " manage_form hidden " name = " user " id = " warn<?= $PostID ?> " action = " " method = " post " >
< input type = " hidden " name = " action " value = " warn " />
< input type = " hidden " name = " artistid " value = " <?= $ArtistID ?> " />
< input type = " hidden " name = " postid " value = " <?= $PostID ?> " />
< input type = " hidden " name = " userid " value = " <?= $AuthorID ?> " />
< input type = " hidden " name = " key " value = " <?= $Key ?> " />
</ form >
2013-02-09 08:01:01 +00:00
- < a href = " # " onclick = " $ ('#warn<?= $PostID ?>').raw().submit(); return false; " class = " brackets " > Warn </ a >
2012-10-29 08:00:20 +00:00
< ? }
}
?>
& nbsp ;
2012-10-27 08:00:09 +00:00
< a href = " # " >& uarr ; </ a >
2012-10-29 08:00:20 +00:00
</ div >
2012-10-27 08:00:09 +00:00
</ td >
</ tr >
< tr >
2012-11-01 08:00:21 +00:00
< ? if ( Users :: has_avatars_enabled ()) { ?>
2012-10-27 08:00:09 +00:00
< td class = " avatar " valign = " top " >
2012-11-01 08:00:21 +00:00
< ? = Users :: show_avatar ( $Avatar , $Username , $HeavyInfo [ 'DisableAvatars' ]) ?>
2012-10-27 08:00:09 +00:00
</ td >
2012-10-29 08:00:20 +00:00
< ? } ?>
2012-10-27 08:00:09 +00:00
< td class = " body " valign = " top " >
< div id = " content<?= $PostID ?> " >
2012-10-28 08:00:19 +00:00
< ? = $Text -> full_format ( $CommentBody ) ?>
2012-10-29 08:00:20 +00:00
< ? if ( $EditedUserID ) { ?>
2012-10-27 08:00:09 +00:00
< br />
< br />
2012-10-29 08:00:20 +00:00
< ? if ( check_perms ( 'site_admin_forums' )) { ?>
2013-02-10 08:00:29 +00:00
< a href = " #content<?= $PostID ?> " onclick = " LoadEdit('artist', <?= $PostID ?>, 1); return false; " >& laquo ; </ a >
2012-10-29 08:00:20 +00:00
< ? } ?>
2012-10-27 08:00:09 +00:00
Last edited by
< ? = Users :: format_username ( $EditedUserID , false , false , false ) ?> <?=time_diff($EditedTime,2,true,true)?>
2012-10-29 08:00:20 +00:00
< ? } ?>
2012-10-27 08:00:09 +00:00
</ div >
</ td >
</ tr >
</ table >
2012-10-29 08:00:20 +00:00
< ? } ?>
2012-10-27 08:00:09 +00:00
< div class = " linkbox " >
2013-05-04 08:00:48 +00:00
< ? = ( $Pages ) ?>
2012-10-27 08:00:09 +00:00
</ div >
2013-01-23 08:00:38 +00:00
< ?
View :: parse ( 'generic/reply/quickreply.php' , array (
'InputName' => 'artistid' ,
'InputID' => $ArtistID ));
?>
2011-03-28 14:21:28 +00:00
</ div >
</ div >
< ?
2012-10-11 08:00:15 +00:00
View :: show_footer ();
2011-03-28 14:21:28 +00:00
// Cache page for later use
2012-10-29 08:00:20 +00:00
if ( $RevisionID ) {
2013-05-04 08:00:48 +00:00
$Key = " artist_ $ArtistID " . " _revision_ $RevisionID " ;
2012-10-11 08:00:15 +00:00
} else {
2013-05-04 08:00:48 +00:00
$Key = 'artist_' . $ArtistID ;
2011-03-28 14:21:28 +00:00
}
2012-10-28 08:00:19 +00:00
$Data = array ( array ( $Name , $Image , $Body , $NumSimilar , $SimilarArray , array (), array (), $VanityHouseArtist ));
2011-03-28 14:21:28 +00:00
$Cache -> cache_value ( $Key , $Data , 3600 );
?>