'; if (Access::check('interface', '100')) { $catalogs = Catalog::get_catalogs(); if (count($catalogs) == 0) { $results['random_selection'] = sprintf(T_('No catalog configured yet. To start streaming your media, you now need to %s add a catalog %s'), '', '.

'); } } } break; case 'random_videos': $videos = Video::get_random(6); if (count($videos) AND is_array($videos)) { ob_start(); require_once AmpConfig::get('prefix') . UI::find_template('show_random_videos.inc.php'); $results['random_video_selection'] = ob_get_clean(); } else { $results['random_video_selection'] = ''; } break; case 'artist_info': if (AmpConfig::get('lastfm_api_key') && (isset($_REQUEST['artist']) || isset($_REQUEST['fullname']))) { if ($_REQUEST['artist']) { $artist = new Artist($_REQUEST['artist']); $artist->format(); $biography = Recommendation::get_artist_info($artist->id); } else { $biography = Recommendation::get_artist_info(null, rawurldecode($_REQUEST['fullname'])); } ob_start(); require_once AmpConfig::get('prefix') . UI::find_template('show_artist_info.inc.php'); $results['artist_biography'] = ob_get_clean(); } break; case 'similar_artist': if (AmpConfig::get('show_similar') && isset($_REQUEST['artist'])) { $artist = new Artist($_REQUEST['artist']); $artist->format(); $object_ids = array(); $missing_objects = array(); if ($similars = Recommendation::get_artists_like($artist->id, 10, !AmpConfig::get('wanted'))) { foreach ($similars as $similar) { if ($similar['id']) { $object_ids[] = $similar['id']; } else { $missing_objects[] = $similar; } } } ob_start(); require_once AmpConfig::get('prefix') . UI::find_template('show_recommended_artists.inc.php'); $results['similar_artist'] = ob_get_clean(); } break; case 'similar_now_playing': $media_id = $_REQUEST['media_id']; if (AmpConfig::get('show_similar') && isset($media_id) && isset($_REQUEST['media_artist'])) { $artists = Recommendation::get_artists_like($_REQUEST['media_artist'], 3, false); $songs = Recommendation::get_songs_like($media_id, 3); ob_start(); require_once AmpConfig::get('prefix') . UI::find_template('show_now_playing_similar.inc.php'); $results['similar_items_' . $media_id] = ob_get_clean(); } break; case 'concerts': if (AmpConfig::get('show_concerts') && isset($_REQUEST['artist'])) { $artist = new Artist($_REQUEST['artist']); $artist->format(); if ($artist->id) { $up_concerts = Artist_Event::get_upcoming_events($artist); $past_concerts = Artist_Event::get_past_events($artist); $coming_concerts = array(); $concerts = array(); if ($up_concerts) { foreach ($up_concerts->children() as $item) { if ($item->getName() == 'event') { $coming_concerts[] = $item; } } } if ($past_concerts) { foreach ($past_concerts->children() as $item) { if ($item->getName() == 'event') { $concerts[] = $item; } } } } ob_start(); require_once AmpConfig::get('prefix') . UI::find_template('show_concerts.inc.php'); $results['concerts'] = ob_get_clean(); } break; case 'labels': if (AmpConfig::get('label') && isset($_REQUEST['artist'])) { $labels = Label::get_labels($_REQUEST['artist']); $object_ids = array(); if (count($labels) > 0) { foreach ($labels as $id => $label) { $object_ids[] = $id; } } $browse = new Browse(); $browse->set_type('label'); $browse->set_simple_browse(false); $browse->save_objects($object_ids); $browse->store(); ob_start(); require_once AmpConfig::get('prefix') . UI::find_template('show_labels.inc.php'); $results['labels'] = ob_get_clean(); } break; case 'wanted_missing_albums': if (AmpConfig::get('wanted') && (isset($_REQUEST['artist']) || isset($_REQUEST['artist_mbid']))) { if (isset($_REQUEST['artist'])) { $artist = new Artist($_REQUEST['artist']); $artist->format(); if ($artist->mbid) { $walbums = Wanted::get_missing_albums($artist); } else { debug_event('wanted', 'Cannot get missing albums: MusicBrainz ID required.', '5'); } } else { $walbums = Wanted::get_missing_albums(null, $_REQUEST['artist_mbid']); } ob_start(); require_once AmpConfig::get('prefix') . UI::find_template('show_missing_albums.inc.php'); $results['missing_albums'] = ob_get_clean(); } break; case 'add_wanted': if (AmpConfig::get('wanted') && isset($_REQUEST['mbid'])) { $mbid = $_REQUEST['mbid']; if (empty($_REQUEST['artist'])) { $artist_mbid = $_REQUEST['artist_mbid']; $artist = null; } else { $artist = $_REQUEST['artist']; $aobj = new Artist($artist); $artist_mbid = $aobj->mbid; } $name = $_REQUEST['name']; $year = $_REQUEST['year']; if (!Wanted::has_wanted($mbid)) { Wanted::add_wanted($mbid, $artist, $artist_mbid, $name, $year); ob_start(); $walbum = new Wanted(Wanted::get_wanted($mbid)); $walbum->show_action_buttons(); $results['wanted_action_' . $mbid] = ob_get_clean(); } else { debug_event('wanted', 'Already wanted, skipped.', '5'); } } break; case 'remove_wanted': if (AmpConfig::get('wanted') && isset($_REQUEST['mbid'])) { $mbid = $_REQUEST['mbid']; $walbum = new Wanted(Wanted::get_wanted($mbid)); Wanted::delete_wanted($mbid); ob_start(); $walbum->accepted = false; $walbum->id = 0; $walbum->show_action_buttons(); $results['wanted_action_' . $mbid] = ob_get_clean(); } break; case 'accept_wanted': if (AmpConfig::get('wanted') && isset($_REQUEST['mbid'])) { $mbid = $_REQUEST['mbid']; $walbum = new Wanted(Wanted::get_wanted($mbid)); $walbum->accept(); ob_start(); $walbum->show_action_buttons(); $results['wanted_action_' . $mbid] = ob_get_clean(); } break; case 'reloadnp': ob_start(); show_now_playing(); $results['now_playing'] = ob_get_clean(); ob_start(); $data = Song::get_recently_played(); Song::build_cache(array_keys($data)); require_once AmpConfig::get('prefix') . UI::find_template('show_recently_played.inc.php'); $results['recently_played'] = ob_get_clean(); break; case 'sidebar': switch ($_REQUEST['button']) { case 'home': case 'modules': case 'localplay': case 'player': case 'preferences': $button = $_REQUEST['button']; break; case 'admin': if (Access::check('interface','100')) { $button = $_REQUEST['button']; } else { exit; } break; default: exit; } // end switch on button Ajax::set_include_override(true); ob_start(); $_SESSION['state']['sidebar_tab'] = $button; require_once AmpConfig::get('prefix') . UI::find_template('sidebar.inc.php'); $results['sidebar-content'] = ob_get_contents(); ob_end_clean(); break; case 'start_channel': if (Access::check('interface','75')) { ob_start(); $channel = new Channel($_REQUEST['id']); if ($channel->id) { if ($channel->check_channel()) { $channel->stop_channel(); } $channel->start_channel(); sleep(1); echo $channel->get_channel_state(); } $results['channel_state_' . $_REQUEST['id']] = ob_get_clean(); } break; case 'stop_channel': if (Access::check('interface','75')) { ob_start(); $channel = new Channel($_REQUEST['id']); if ($channel->id) { $channel->stop_channel(); sleep(1); echo $channel->get_channel_state(); } $results['channel_state_' . $_REQUEST['id']] = ob_get_clean(); } break; case 'slideshow': ob_start(); $images = Slideshow::get_current_slideshow(); if (count($images) > 0) { $fsname = 'fslider_' . time(); echo "
"; foreach ($images as $image) { echo ""; } echo "
"; $results['fslider'] = ob_get_clean(); ob_start(); echo ""; } $results['fslider_script'] = ob_get_clean(); break; case 'songs': $label_id = intval($_REQUEST['label']); ob_start(); if ($label_id > 0) { $label = new Label($label_id); $object_ids = $label->get_songs(); $browse = new Browse(); $browse->set_type('song'); $browse->set_simple_browse(false); $browse->save_objects($object_ids); $browse->store(); UI::show_box_top(T_('Songs'), 'info-box'); require_once AmpConfig::get('prefix') . UI::find_template('show_songs.inc.php'); UI::show_box_bottom(); } $results['songs'] = ob_get_contents(); ob_end_clean(); break; default: $results['rfc3514'] = '0x1'; break; } // switch on action; // We always do this echo xoutput_from_array($results);