'; } 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') . '/templates/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(); if ($object_ids = Recommendation::get_artists_like($artist->id)) { $object_ids = array_map(create_function('$i', 'return $i[\'id\'];'), $object_ids); } ob_start(); require_once AmpConfig::get('prefix') . '/templates/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') . '/templates/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); $concerts = array(); if ($up_concerts) { if (is_array($up_concerts->event)) { $concerts = array_merge($concerts, $up_concerts->event); } else { $concerts[] = $up_concerts->event; } } if ($past_concerts) { if (is_array($past_concerts->event)) { $concerts = array_merge($concerts, $past_concerts->event); } else { $concerts[] = $past_concerts->event; } } } ob_start(); require_once AmpConfig::get('prefix') . '/templates/show_concerts.inc.php'; $results['concerts'] = 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') . '/templates/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']; } 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') . '/templates/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; break; } // end switch on button ob_start(); $_SESSION['state']['sidebar_tab'] = $button; require_once AmpConfig::get('prefix') . '/templates/sidebar.inc.php'; $results['sidebar'] = ob_get_contents(); ob_end_clean(); break; case 'shoutbox': ob_start(); $since = $_REQUEST['since']; if ($since) { $shouts = Shoutbox::get_shouts_since(intval($since / 1000)); echo ""; } $results['live_shoutbox'] = ob_get_clean(); break; default: $results['rfc3514'] = '0x1'; break; } // switch on action; // We always do this echo xoutput_from_array($results);