From a74d0b7163c8755e23598997c364bc75a18f943e Mon Sep 17 00:00:00 2001 From: Karl 'vollmerk' Vollmer Date: Tue, 24 Jul 2007 04:10:58 +0000 Subject: added dynamic playlist item support, default and genre currently work --- lib/class/random.class.php | 169 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 169 insertions(+) create mode 100644 lib/class/random.class.php (limited to 'lib/class/random.class.php') diff --git a/lib/class/random.class.php b/lib/class/random.class.php new file mode 100644 index 00000000..0a72fdf6 --- /dev/null +++ b/lib/class/random.class.php @@ -0,0 +1,169 @@ +id; + + $url = $web_path . "/play/index.php?random=1&type=$type&uid=$uid$session_string"; + + return $url; + + } // play_url + + /** + * get_single_song + * This returns a single song pulled based on the passed random method + */ + public static function get_single_song($type) { + + if (!$type = self::validate_type($type)) { + return false; + } + + $method_name = 'get_' . $type; + + if (method_exists('Random',$method_name)) { + $song_ids = self::$method_name(1); + $song_id = array_pop($song_ids); + } + + return $song_id; + + } // get_single_song + + /** + * get_default + * This just randomly picks a song at whim from all catalogs + * nothing special here... + */ + public static function get_default($limit) { + + $results = array(); + + $sql = "SELECT `id` FROM `song` ORDER BY RAND() LIMIT $limit"; + $db_results = Dba::query($sql); + + while ($row = Dba::fetch_assoc($db_results)) { + $results[] = $row['id']; + } + + return $results; + + } // get_default + + /** + * get_genre + * This looks at the last object played by the current user and + * then picks a song of the same genre at random... + */ + public static function get_genre($limit) { + + $results = array(); + + // Get the last genre played by us + $data = $GLOBALS['user']->get_recently_played('1','genre'); + if ($data['0']) { + $where_sql = " WHERE `genre`='" . $data['0'] . "' "; + } + + $sql = "SELECT `id` FROM `song` $where_sql ORDER BY RAND() LIMIT $limit"; + $db_results = Dba::query($sql); + + while ($row = Dba::fetch_assoc($db_results)) { + $results[] = $row['id']; + } + + return $results; + + } // get_genre + + /** + * validiate_type + * this validates the random type, this is a private function + */ + private static function validate_type($type) { + + switch ($type) { + case 'special': + $type = $GLOBALS['user']->prefs['random_method']; + break; + case 'genre': + case 'album': + case 'artist': + case 'rated': + break; + default: + return false; + break; + } // end switch + + return $type; + + } // validate_type + +} //end of random class + +?> -- cgit