diff options
author | Paul Arthur <paul.arthur@flowerysong.com> | 2013-07-22 16:35:27 -0400 |
---|---|---|
committer | Paul Arthur <paul.arthur@flowerysong.com> | 2013-07-22 16:54:47 -0400 |
commit | c952ca6fa369d68d18b4ba55cdc9ad3f17ed7c13 (patch) | |
tree | b4ecf99b98d037cc2843637c58149e78f1af72bf /lib | |
parent | 591a0b17c3eab399d7c33b83ef924ff07cbbe635 (diff) | |
download | ampache-c952ca6fa369d68d18b4ba55cdc9ad3f17ed7c13.tar.gz ampache-c952ca6fa369d68d18b4ba55cdc9ad3f17ed7c13.tar.bz2 ampache-c952ca6fa369d68d18b4ba55cdc9ad3f17ed7c13.zip |
Be smarter about getting random albums with art
Just ask the database for what we want instead of asking for more
results, sifting through them, and hoping that we get enough
qualifying results to fulfill the request.
Also drop Random::album(), since it's duplicate code and it makes more
sense for this to live in Album.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/class/album.class.php | 36 | ||||
-rw-r--r-- | lib/class/random.class.php | 15 |
2 files changed, 19 insertions, 32 deletions
diff --git a/lib/class/album.class.php b/lib/class/album.class.php index 4f6e1ff2..a7e888e9 100644 --- a/lib/class/album.class.php +++ b/lib/class/album.class.php @@ -418,30 +418,32 @@ class Album extends database_object { } // update /** - * 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 + * get_random + * + * This returns a number of random albums. */ - public static function get_random_albums($count=6) { - - $sql = 'SELECT `id` FROM `album` ORDER BY RAND() LIMIT ' . ($count*2); + public static function get_random($count = 1, $with_art = false) { + $results = false; + + if ($with_art) { + $sql = 'SELECT `album`.`id` FROM `album` LEFT JOIN `image` ' . + "ON (`image`.`object_type` = 'album' AND " . + '`image`.`object_id` = `album`.`id`) ' . + 'WHERE `image`.`id` IS NOT NULL '; + } + else { + $sql = 'SELECT `id` FROM `album` '; + } + + $sql .= 'ORDER BY RAND() LIMIT ' . intval($count); $db_results = Dba::read($sql); while ($row = Dba::fetch_assoc($db_results)) { - $art = new Art($row['id'], 'album'); - $art->get_db(); - if ($art->raw) { - $results[] = $row['id']; - } + $results[] = $row['id']; } - if (count($results) < $count) { return false; } - - $results = array_slice($results, 0, $count); - return $results; - - } // get_random_albums + } } //end of album class diff --git a/lib/class/random.class.php b/lib/class/random.class.php index a4756db9..7b525641 100644 --- a/lib/class/random.class.php +++ b/lib/class/random.class.php @@ -45,21 +45,6 @@ class Random implements media { } // constructor /** - * album - * This returns the ID of a random album, nothing special - */ - public static function album() { - - $sql = "SELECT `id` FROM `album` ORDER BY RAND() LIMIT 1"; - $db_results = Dba::read($sql); - - $results = Dba::fetch_assoc($db_results); - - return $results['id']; - - } // album - - /** * artist * This returns the ID of a random artist, nothing special here for now */ |