* GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ /** * Sub-Ajax page, requires AJAX_INCLUDE */ if (!defined('AJAX_INCLUDE')) { exit; } $results = array(); switch ($_REQUEST['action']) { case 'song': $songs = Random::get_default(); if (!count($songs)) { $results['rfc3514'] = '0x1'; break; } foreach ($songs as $song_id) { $GLOBALS['user']->playlist->add_object($song_id, 'song'); } $results['rightbar'] = UI::ajax_include('rightbar.inc.php'); break; case 'album': $album_id = Album::get_random(); if (!$album_id) { $results['rfc3514'] = '0x1'; break; }
/** * getRandomSongs * Get random songs matching the given criteria. * Takes the optional size, genre, fromYear, toYear and music folder id in parameters. */ public static function getrandomsongs($input) { self::check_version($input, "1.2.0"); $size = $input['size']; if (!$size) { $size = 10; } $genre = $input['genre']; $fromYear = $input['fromYear']; $toYear = $input['toYear']; $musicFolderId = $input['musicFolderId']; $search = array(); $search['limit'] = $size; $search['random'] = $size; $search['type'] = "song"; $i = 0; if ($genre) { $search['rule_' . $i . '_input'] = $genre; $search['rule_' . $i . '_operator'] = 0; $search['rule_' . $i . ''] = "tag"; ++$i; } if ($fromYear) { $search['rule_' . $i . '_input'] = $fromYear; $search['rule_' . $i . '_operator'] = 0; $search['rule_' . $i . ''] = "year"; ++$i; } if ($toYear) { $search['rule_' . $i . '_input'] = $toYear; $search['rule_' . $i . '_operator'] = 1; $search['rule_' . $i . ''] = "year"; ++$i; } if ($musicFolderId) { if (Subsonic_XML_Data::isArtist($musicFolderId)) { $artist = new Artist(Subsonic_XML_Data::getAmpacheId($musicFolderId)); $finput = $artist->name; $operator = 4; $ftype = "artist"; } else { if (Subsonic_XML_Data::isAlbum($musicFolderId)) { $album = new Album(Subsonic_XML_Data::getAmpacheId($musicFolderId)); $finput = $album->name; $operator = 4; $ftype = "artist"; } else { $finput = intval($musicFolderId); $operator = 0; $ftype = "catalog"; } } $search['rule_' . $i . '_input'] = $finput; $search['rule_' . $i . '_operator'] = $operator; $search['rule_' . $i . ''] = $ftype; ++$i; } if ($i > 0) { $songs = Random::advanced("song", $search); } else { $songs = Random::get_default($size); } $r = Subsonic_XML_Data::createSuccessResponse(); Subsonic_XML_Data::addRandomSongs($r, $songs); self::apiOutput($input, $r); }