summaryrefslogtreecommitdiffstats
path: root/stream.php
diff options
context:
space:
mode:
Diffstat (limited to 'stream.php')
-rw-r--r--stream.php150
1 files changed, 150 insertions, 0 deletions
diff --git a/stream.php b/stream.php
new file mode 100644
index 00000000..98c78c8c
--- /dev/null
+++ b/stream.php
@@ -0,0 +1,150 @@
+<?php
+/*
+
+ Copyright (c) 2001 - 2007 ampache.org
+ All rights reserved.
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License v2
+ as published by the Free Software Foundation
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+*/
+
+require 'lib/init.php';
+
+/* If we are running a demo, quick while you still can! */
+if (Config::get('demo_mode') || !$GLOBALS['user']->has_access('25')) {
+ access_denied();
+ exit;
+}
+
+$song_ids = array();
+$web_path = Config::get('web_path');
+
+/* We need an action and a method */
+$action = scrub_in($_REQUEST['action']);
+$method = scrub_in($_REQUEST['method']);
+
+// Switch through the actions
+switch ($action) {
+ case 'play_selected':
+ $type = scrub_in($_REQUEST['type']);
+ if ($type == 'album') {
+ $song_ids = get_songs_from_type($type, $_POST['song'], $_REQUEST['artist_id']);
+ }
+ elseif ($_REQUEST['playlist_id']) {
+ $playlist = new Playlist($_REQUEST['playlist_id']);
+ $song_ids = $playlist->get_songs($_REQUEST['song']);
+ }
+ else {
+ $song_ids = $_POST['song'];
+ }
+ // Make sure they actually passed soemthing
+ if (!count($song_ids)) { header("Location:" . return_referer()); exit; }
+ break;
+ /* This is run if we need to gather info based on a tmp playlist */
+ case 'tmp_playlist':
+ $tmp_playlist = new tmpPlaylist($_REQUEST['tmpplaylist_id']);
+ $song_ids = $tmp_playlist->get_items();
+ break;
+ case 'single_song':
+ $song_ids[] = scrub_in($_REQUEST['song_id']);
+ break;
+ case 'your_popular_songs':
+ $song_ids = get_popular_songs($_REQUEST['limit'], 'your', $GLOBALS['user']->id);
+ break;
+ case 'popular_songs':
+ $song_ids = get_popular_songs($_REQUEST['limit'], 'global');
+ break;
+ case 'genre':
+ $genre = new Genre($_REQUEST['genre']);
+ $song_ids = $genre->get_songs();
+ break;
+ case 'artist':
+ $artist = new Artist($_REQUEST['artist_id']);
+ $song_ids = $artist->get_song_ids();
+ break;
+ case 'artist_random':
+ $artist = new Artist($_REQUEST['artist_id']);
+ $artist->get_count();
+ $song_ids = $artist->get_random_songs();
+ break;
+ case 'album_random':
+ $album = new Album($_REQUEST['album_id']);
+ $song_ids = $album->get_random_songs();
+ break;
+ case 'album':
+ $album = new Album($_REQUEST['album_id']);
+ $song_ids = $album->get_song_ids();
+ break;
+ case 'random_genre':
+ $genre = new Genre($_REQUEST['genre']);
+ $song_ids = $genre->get_random_songs();
+ break;
+ case 'playlist':
+ $playlist = new Playlist($_REQUEST['playlist_id']);
+ $song_ids = $playlist->get_songs($_REQUEST['song']);
+ break;
+ case 'playlist_random':
+ $playlist = new Playlist($_REQUEST['playlist_id']);
+ $song_ids = $playlist->get_random_songs();
+ break;
+ case 'random':
+ if($_REQUEST['genre'][0] != '-1') {
+ $matchlist['genre'] = $_REQUEST['genre'];
+ }
+ if($_REQUEST['catalog'] != '-1') {
+ $matchlist['catalog'] = $_REQUEST['catalog'];
+ }
+ /* Setup the options array */
+ $options = array('limit' => $_REQUEST['random'], 'random_type' => $_REQUEST['random_type'],'size_limit'=>$_REQUEST['size_limit']);
+ $song_ids = get_random_songs($options, $matchlist);
+ break;
+ default:
+ break;
+} // end action switch
+
+
+/* Now that we've gathered the song information we decide what
+ * we should do with it, this is a sensitive time for the song id's
+ * they don't know where they want to go.. let's help them out
+ */
+switch ($method) {
+ case 'download':
+ /* Make sure they are allowed to download */
+ if (!batch_ok()) { break; }
+ $name = "AmpacheZip-" . date("m-d-Y",time());
+ $song_files = get_song_files($song_ids);
+ set_memory_limit($song_files[1]+32);
+ send_zip($name,$song_files[0]);
+ break;
+ case 'stream':
+ default:
+ $stream_type = Config::get('playlist_type');
+
+ /* For non-stream/downsample methos we need to so something else */
+ switch ($GLOBALS['user']->prefs['play_type']) {
+ case 'stream':
+ case 'downsample':
+ // Rien a faire
+ break;
+ default:
+ $stream_type = $GLOBALS['user']->prefs['play_type'];
+ break;
+ }
+
+ /* Start the Stream */
+ $stream = new Stream($stream_type,$song_ids);
+ $stream->start();
+ break;
+} // end method switch
+?>