\n";
while ( $r = mysql_fetch_row($db_result) ) {
// $r[0] = id, $r[1] = name
if ( $album == $r[0] ) {
echo "\t \n";
}
else {
echo "\t \n";
}
}//while
echo "\n\n";
} // show_album_pulldown()
/*
* delete_user_stats()
*
* just delete stats for specific users or all of them
*
*/
function delete_user_stats ($user) {
$dbh = dbh();
if ( $user == 'all' ) {
$sql = "DELETE FROM object_count";
}
else {
$sql = "DELETE FROM object_count WHERE userid = '$user'";
}
$db_result = mysql_query($sql, $dbh);
} // delete_user_stats()
/*********************************************************/
/* Functions for getting songs given artist, album or id */
/*********************************************************/
// TODO : albums should be always gruoped by
// id, like 'greatest hits' album is below, never by name.
// Other catalog functions should take care of assigning all
// songs with same name album to the same album id. It should
// not be done here.
// I'm commenting all this out to always sort by ID, to
// see how bad it is. -Rubin
function get_songs_from_album ($album) {
global $settings;
$dbh = dbh();
$songs = array();
$query = "SELECT track, id as song FROM song" .
" WHERE album = '$album'" .
" ORDER BY track, title";
$db_result = mysql_query($query, $dbh);
while ( $r = mysql_fetch_array($db_result) ) {
$songs[] = $r;
}
return $songs;
}
function get_song_ids_from_album ($album) {
$dbh = dbh();
$song_ids = array();
$query = "SELECT id FROM song" .
" WHERE album = '$album'" .
" ORDER BY track, title";
$db_result = mysql_query($query, $dbh);
while ( $r = mysql_fetch_object($db_result) ) {
$song_ids[] = $r->id;
}
return $song_ids;
}
/*
* get_song_ids_from_artist_and_album();
*
* Get all of the songs that are from this album and artist
*
*/
function get_song_ids_from_artist_and_album ($artist, $album) {
global $settings;
$dbh = dbh();
$sql = "SELECT id FROM song" .
" WHERE artist = '$artist'" .
" AND album = '$album'" .
" ORDER BY track, title";
$db_result = mysql_query($sql, $dbh);
$song_ids = array();
while ( $r = mysql_fetch_object($db_result) ) {
$song_ids[] = $r->id;
}
return $song_ids;
}
// Used by playlist functions when you have an array of something of type
// and you want to extract the songs from it whether type is artists or albums
function get_songs_from_type ($type, $results, $artist_id = 0) {
$dbh = dbh();
$count = 0;
$song = array();
foreach ($results as $value) {
// special case from the album view where we don't want every orphan
if ($type == 'album' && ($value == 'orphans' || $artist_id != 0)) {
$sql = "SELECT id FROM song WHERE $type = '$value' AND artist = '$artist_id'";
$db_result = mysql_query($sql, $dbh);
}
else {
$sql = "SELECT id FROM song WHERE $type = '$value'";
$db_result = mysql_query($sql, $dbh);
}
while ( $r = mysql_fetch_row($db_result) ) {
$song[$count] = $r[0];
$count++;
}
}
return $song;
}
function show_playlist_form () {
print << No Albums Found
Playlist:
ECHO;
show_playlist_dropdown();
print <<
ECHO;
}
function get_artist_name ($artist, $dbh=0) {
global $settings;
if (!is_resource($dbh)) {
$dbh = dbh();
}
$query = "SELECT name FROM artist WHERE id = '$artist'";
$db_result = mysql_query($query, $dbh);
if ($r = mysql_fetch_object($db_result)) {
return $r->name;
}
else {
return FALSE;
}
}
function get_artist_info ($artist_id) {
$dbh = dbh();
$sql = "SELECT * FROM artist WHERE id = '$artist_id'";
$db_result = mysql_query($sql, $dbh);
if ($info = mysql_fetch_array($db_result)) {
$sql = "SELECT COUNT(song.album) FROM song " .
" WHERE song.artist = '$artist_id'" .
" GROUP BY song.album";
$db_result = mysql_query($sql, $dbh);
$albums = 0;
$songs = 0;
while(list($song) = mysql_fetch_row($db_result)) {
$songs += $song;
$albums++;
}
$info['songs'] = $songs;
$info['albums'] = $albums;
//FIXME: Lame place to put this
//if ($songs < conf('min_artist_songs') || $albums < conf('min_artist_albums')) {
// return FALSE;
//}
return $info;
}
else {
return FALSE;
}
}
function get_artist_from_album ($album_id) {
global $settings;
$dbh = dbh();
$query = "SELECT DISTINCT artist.id, artist.name FROM artist,song" .
" WHERE song.album = '$album_id' AND song.artist = artist.id";
$db_result = mysql_query($query, $dbh);
$r = mysql_fetch_object($db_result);
return $r;
}
function get_artist_name_from_song ($song_id) {
$dbh = dbh();
$sql = "SELECT artist.name AS name FROM artist, song" .
" WHERE artist.id = song.artist" .
" AND song.id = '$song_id'";
$db_result = mysql_query($sql, $dbh);
if ($r = mysql_fetch_object($db_result)) {
return $r->name;
}
else {
return FALSE;
}
}
function get_album_name ($album, $dbh = 0) {
$album = new Album($album);
return $album->name;
} // get_album_name
function get_genre_info($genre_id) {
global $settings;
$dbh = dbh();
$sql = "SELECT name FROM genre WHERE id = '$genre_id'";
$db_result = mysql_query($sql, $dbh);
// if its -1 then we're doing all songs
if ( $genre_id < 0 ) {
$sql = "SELECT count(*) FROM song";
}
else {
$sql = "SELECT count(*) FROM song WHERE genre = '$genre_id'";
}
$genre_result = mysql_query($sql, $dbh);
$genre_count = mysql_fetch_row($genre_result);
$r = mysql_fetch_row($db_result);
// Crude hack for non-standard genre types
if ($genre_id == -1) {
return array('All', $genre_count[0]);
}
elseif ($genre_id == 0) {
return array('N/A', $genre_count[0]);
}
else {
return array($r[0], $genre_count[0]);
}
}
function get_genre($id) {
global $settings;
$dbh = dbh();
$query = "SELECT * FROM genre WHERE id = '$id'";
$db_result = mysql_query($query, $dbh);
$r = mysql_fetch_object($db_result);
return $r;
}
// Utility function to help move things along
function get_song_info ($song, $dbh = 0) {
$song = new Song($song);
return $song;
} // get_song_info
/*!
@function show_albums
@discussion show many albums, uses view class
*/
function show_albums ($albums,$view=0) {
$dbh = libglue_param(libglue_param('dbh_name'));
if (!$view) {
$view = new View($_SESSION['view_base_sql'], $_SESSION['script'], $total_items,$_SESSION['view_offset_limit']);
}
if ($albums) {
require (conf('prefix') . "/templates/show_albums.inc");
}
else {
echo "
ECHO;
}
/**
* show_playlist_dropdown
* Hacking this for now... will fix tomorrow evening
* Hmm Vollmer Lies... it's been a lot longer then said tomorrow evening...
*/
function show_playlist_dropdown ($playlist_id=0,$no_new=false) {
global $settings;
$dbh = dbh();
$userid = scrub_in($_SESSION['userdata']['username']);
$sql = "SELECT * FROM playlist" .
" WHERE user = '$userid'" .
" AND name <> 'Temporary'" .
" ORDER BY name";
$db_result = @mysql_query($sql, $dbh);
echo "\n";
}
// Used to show when we have an access error for a playlist
function show_playlist_access_error ($playlist, $username) {
$plname = $playlist->name;
$pluser = new User($playlist->user);
$plowner = $pluser->username;
print <<
ECHO;
print _("Create a new playlist");
print <<
Name:
Type:
$username doesn't have access to update the '$plname' playlist, it is owned by $plowner.
ECHO; } // Used to show a form with confirm action button on it (for deleting playlists, users, etc) /*! @function show_confirm_action @discussion shows a confirmation of an action, gives a YES/NO choice */ function show_confirm_action ($text, $script, $arg) { $web_path = conf('web_path'); require (conf('prefix') . "/templates/show_confirm_action.inc.php"); } // show_confirm_action function unhtmlentities ($string) { $trans_tbl = get_html_translation_table (HTML_ENTITIES); $trans_tbl = array_flip ($trans_tbl); $ret = strtr ($string, $trans_tbl); return preg_replace('/(\d+);/me', "chr('\\1')",$ret); } ?>