summaryrefslogtreecommitdiffstats
path: root/lib/class/album.class.php
diff options
context:
space:
mode:
authorKarl 'vollmerk' Vollmer <vollmer@ampache.org>2008-08-31 15:57:33 +0000
committerKarl 'vollmerk' Vollmer <vollmer@ampache.org>2008-08-31 15:57:33 +0000
commitc2e9b311e92f4b1e952f752c5177a92c5704c345 (patch)
treeae697620203e077aec8c182829e529e2f0d809f7 /lib/class/album.class.php
parent4b309a5f02490bb1a62ebcd61aed8935671d1cd8 (diff)
downloadampache-c2e9b311e92f4b1e952f752c5177a92c5704c345.tar.gz
ampache-c2e9b311e92f4b1e952f752c5177a92c5704c345.tar.bz2
ampache-c2e9b311e92f4b1e952f752c5177a92c5704c345.zip
remove lib/album.lib.php and move its two functions into album class, corrected some old php4 ish code in localplay controllers, removed redundent link from sidebar (modules)
Diffstat (limited to 'lib/class/album.class.php')
-rw-r--r--lib/class/album.class.php99
1 files changed, 99 insertions, 0 deletions
diff --git a/lib/class/album.class.php b/lib/class/album.class.php
index 6180b6c7..049331ff 100644
--- a/lib/class/album.class.php
+++ b/lib/class/album.class.php
@@ -822,6 +822,105 @@ class Album extends database_object {
} // save_resized_art
+ /**
+ * get_random_albums
+ * This returns a random number of albums from the catalogs
+ * this is used by the index to return some 'potential' albums to play
+ */
+ public static function get_random_albums($count=6) {
+
+ $sql = 'SELECT `id` FROM `album` ORDER BY RAND() LIMIT ' . ($count*2);
+ $db_results = Dba::query($sql);
+
+ $in_sql = '`album_id` IN (';
+
+ while ($row = Dba::fetch_assoc($db_results)) {
+ $in_sql .= "'" . $row['id'] . "',";
+ $total++;
+ }
+
+ if ($total < $count) { return false; }
+
+ $in_sql = rtrim($in_sql,',') . ')';
+
+ $sql = "SELECT `album_id`,ISNULL(`art`) AS `no_art` FROM `album_data` WHERE $in_sql";
+ $db_results = Dba::query($sql);
+ $results = array();
+
+ while ($row = Dba::fetch_assoc($db_results)) {
+ $results[$row['album_id']] = $row['no_art'];
+ } // end for
+
+ asort($results);
+ $albums = array_keys($results);
+ $results = array_slice($albums,0,$count);
+
+ return $results;
+
+ } // get_random_albums
+
+ /**
+ * get_image_from_source
+ * This gets an image for the album art from a source as
+ * defined in the passed array. Because we don't know where
+ * its comming from we are a passed an array that can look like
+ * ['url'] = URL *** OPTIONAL ***
+ * ['file'] = FILENAME *** OPTIONAL ***
+ * ['raw'] = Actual Image data, already captured
+ */
+ public static function get_image_from_source($data) {
+
+ // Already have the data, this often comes from id3tags
+ if (isset($data['raw'])) {
+ return $data['raw'];
+ }
+
+ // If it came from the database
+ if (isset($data['db'])) {
+ // Repull it
+ $album_id = Dba::escape($data['db']);
+ $sql = "SELECT * FROM `album_data` WHERE `album_id`='$album_id'";
+ $db_results = Dba::query($sql);
+ $row = Dba::fetch_assoc($db_results);
+ return $row['art'];
+ } // came from the db
+
+ // Check to see if it's a URL
+ if (isset($data['url'])) {
+ $snoopy = new Snoopy();
+ $snoopy->fetch($data['url']);
+ return $snoopy->results;
+ }
+
+ // Check to see if it's a FILE
+ if (isset($data['file'])) {
+ $handle = fopen($data['file'],'rb');
+ $image_data = fread($handle,filesize($data['file']));
+ fclose($handle);
+ return $image_data;
+ }
+
+ // Check to see if it is embedded in id3 of a song
+ if (isset($data['song'])) {
+ // If we find a good one, stop looking
+ $getID3 = new getID3();
+ $id3 = $getID3->analyze($data['song']);
+
+ if ($id3['format_name'] == "WMA") {
+ return $id3['asf']['extended_content_description_object']['content_descriptors']['13']['data'];
+ }
+ elseif (isset($id3['id3v2']['APIC'])) {
+ // Foreach incase they have more then one
+ foreach ($id3['id3v2']['APIC'] as $image) {
+ return $image['data'];
+ }
+ }
+ } // if data song
+
+ return false;
+
+ } // get_image_from_source
+
} //end of album class
?>