connect(); $function = scrub_in($_GET['cmd']); $value = scrub_in($_GET['value']); $return = scrub_in($_GET['return']); $localplay->$function($value); /* Return information based on function */ switch($function) { case 'skip': ob_start(); require_once(conf('prefix') . '/templates/show_localplay_playlist.inc.php'); $results['lp_playlist'] = ob_get_contents(); ob_end_clean(); case 'volume_up': case 'volume_down': case 'volume_mute': $status = $localplay->status(); $results['lp_volume'] = $status['volume']; break; case 'next': case 'stop': case 'prev': case 'pause': case 'play': if ($return) { $results['lp_playing'] = $localplay->get_user_playing(); } default: $results['3514'] = '0x1'; break; } // end switch on cmd $xml_doc = xml_from_array($results); echo $xml_doc; break; // Handle the users basketcases... case 'basket': switch ($_REQUEST['type']) { case 'album': $album = new Album($_REQUEST['id']); $songs = $album->get_songs(); foreach ($songs as $song_id) { $GLOBALS['user']->playlist->add_object($song_id); } // end foreach break; case 'album_random': $album = new Album($_REQUEST['id']); $songs = $album->get_random_songs(); foreach ($songs as $song_id) { $GLOBALS['user']->playlist->add_object($song_id); } break; case 'clear_all': $GLOBALS['user']->playlist->clear(); break; default: case 'song': $GLOBALS['user']->playlist->add_object($_REQUEST['id']); break; } // end switch ob_start(); require_once Config::get('prefix') . '/templates/show_playlist_bar.inc.php'; $results['topbar-playlist'] = ob_get_contents(); ob_end_clean(); echo xml_from_array($results); break; /* For changing the current play type FIXME:: need to allow select of any type */ case 'change_play_type': $pref_id = get_preference_id('play_type'); $GLOBALS['user']->update_preference($pref_id,$_GET['type']); /* Uses a drop down, no need to replace text */ $results['play_type'] = ''; $xml_doc = xml_from_array($results); echo $xml_doc; break; /* reloading the now playing information */ case 'reloadnp': ob_start(); show_now_playing(); $results['np_data'] = ob_get_contents(); ob_clean(); $data = get_recently_played(); if (count($data)) { require_once(conf('prefix') . '/templates/show_recently_played.inc.php'); } $results['recently_played'] = ob_get_contents(); ob_end_clean(); $xml_doc = xml_from_array($results); echo $xml_doc; break; /* Reloading of the TV Now Playing, formated differently */ case 'reload_np_tv': /* Update the Now Playing */ ob_start(); require_once(conf('prefix') . '/templates/show_tv_nowplaying.inc.php'); $results = array(); $results['tv_np'] = ob_get_contents(); ob_end_clean(); /* Update the Playlist */ ob_start(); $tmp_playlist = get_democratic_playlist(-1); $songs = $tmp_playlist->get_items(); require_once(conf('prefix') . '/templates/show_tv_playlist.inc.php'); $results['tv_playlist'] = ob_get_contents(); ob_end_clean(); $xml_doc = xml_from_array($results); echo $xml_doc; break; /* Setting ratings */ case 'set_rating': ob_start(); $rating = new Rating($_REQUEST['object_id'],$_REQUEST['rating_type']); $rating->set_rating($_REQUEST['rating']); show_rating($_REQUEST['object_id'],$_REQUEST['rating_type']); $key = "rating_" . $_REQUEST['object_id'] . "_" . $_REQUEST['rating_type']; $results[$key] = ob_get_contents(); ob_end_clean(); $xml_doc = xml_from_array($results); echo $xml_doc; break; /* Activate the Democratic Instance */ case 'tv_activate': if (!$GLOBALS['user']->has_access(100)) { break; } $tmp_playlist = new tmpPlaylist(); /* Pull in the info we need */ $base_id = scrub_in($_REQUEST['playlist_id']); /* create the playlist */ $playlist_id = $tmp_playlist->create('0','vote','song',$base_id); $playlist = new tmpPlaylist($playlist_id); ob_start(); require_once(conf('prefix') . '/templates/show_tv_adminctl.inc.php'); $results['tv_control'] = ob_get_contents(); ob_end_clean(); $xml_doc = xml_from_array($results); echo $xml_doc; break; /* Admin Actions on the tv page */ case 'tv_admin': if (!$GLOBALS['user']->has_access(100) || !conf('allow_democratic_playback')) { break; } /* Get the playlist */ $tmp_playlist = get_democratic_playlist(-1); ob_start(); /* Switch on the command we need to run */ switch ($_REQUEST['cmd']) { case 'delete': $tmp_playlist->delete_track($_REQUEST['track_id']); $songs = $tmp_playlist->get_items(); require_once(conf('prefix') . '/templates/show_tv_playlist.inc.php'); $results['tv_playlist'] = ob_get_contents(); break; default: // Rien a faire break; } // end switch ob_end_clean(); $xml_doc = xml_from_array($results); echo $xml_doc; break; /* This can be a positve (1) or negative (-1) vote */ case 'vote': if (!$GLOBALS['user']->has_access(25) || !conf('allow_democratic_playback')) { break; } /* Get the playlist */ $tmp_playlist = get_democratic_playlist(-1); if ($_REQUEST['vote'] == '1') { $tmp_playlist->vote(array($_REQUEST['object_id'])); } else { $tmp_playlist->remove_vote($_REQUEST['object_id']); } ob_start(); $songs = $tmp_playlist->get_items(); require_once(conf('prefix') . '/templates/show_tv_playlist.inc.php'); $results['tv_playlist'] = ob_get_contents(); ob_end_clean(); $xml_doc = xml_from_array($results); echo $xml_doc; break; // Used to change filter/settings on browse case 'browse': if ($_REQUEST['key'] && $_REQUEST['value']) { // Set any new filters we've just added Browse::set_filter($_REQUEST['key'],$_REQUEST['value']); } if ($_REQUEST['sort']) { // Set the new sort value Browse::set_sort($_REQUEST['sort']); } // Refresh the browse div with our new filter options $object_ids = Browse::get_objects(); ob_start(); Browse::show_objects($object_ids); $results['browse_content'] = ob_get_contents(); ob_end_clean(); $xml_doc = xml_from_array($results); echo $xml_doc; break; case 'sidebar': switch ($_REQUEST['button']) { case 'home': case 'browse': case 'search': case 'player': case 'preferences': $button = $_REQUEST['button']; break; case 'admin': if ($GLOBALS['user']->has_access(100)) { $button = $_REQUEST['button']; } else { exit; } break; default: exit; break; } // end switch on button ob_start(); $_SESSION['state']['sidebar_tab'] = $button; require_once Config::get('prefix') . '/templates/sidebar.inc.php'; $results['sidebar'] = ob_get_contents(); ob_end_clean(); echo xml_from_array($results); break; case 'catalog': switch ($_REQUEST['type']) { case 'add_files': $sql = "SELECT * FROM `update_info` WHERE `key` LIKE 'catalog_add_%'"; $template = '/templates/show_run_add_catalog.inc.php'; break; case 'update_files': case 'clean_files': default: break; } // end switch on type $db_results = Dba::query($sql); while ($data = Dba::fetch_assoc($db_results)) { ${$data['key']} = $data['value']; } ob_start(); require_once Config::get('prefix') . $template; $results['catalog_update'] = ob_get_contents(); ob_end_clean(); echo xml_from_array($results); break; default: $results['3514'] = '0x1'; echo xml_from_array($results); break; } // end switch action ?>