summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/class/album.class.php36
-rw-r--r--lib/class/random.class.php15
-rw-r--r--server/index.ajax.php2
-rw-r--r--server/random.ajax.php2
4 files changed, 21 insertions, 34 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
*/
diff --git a/server/index.ajax.php b/server/index.ajax.php
index 2dc4b399..bf4a2279 100644
--- a/server/index.ajax.php
+++ b/server/index.ajax.php
@@ -27,7 +27,7 @@ if (!defined('AJAX_INCLUDE')) { exit; }
switch ($_REQUEST['action']) {
case 'random_albums':
- $albums = Album::get_random_albums('6');
+ $albums = Album::get_random(6, true);
if (count($albums) AND is_array($albums)) {
ob_start();
require_once Config::get('prefix') . '/templates/show_random_albums.inc.php';
diff --git a/server/random.ajax.php b/server/random.ajax.php
index dbcd43b5..a366f90a 100644
--- a/server/random.ajax.php
+++ b/server/random.ajax.php
@@ -27,7 +27,7 @@ if (!defined('AJAX_INCLUDE')) { exit; }
switch ($_REQUEST['action']) {
case 'album':
- $album_id = Random::album();
+ $album_id = Album::get_random();
// If we don't get anything stop
if (!$album_id) { $results['rfc3514'] = '0x1'; break; }