1
0
Fork 0
mirror of https://github.com/Yetangitu/ampache synced 2025-10-04 18:29:40 +02:00
ampache/lib/mpd.php
2006-01-02 01:06:06 +00:00

142 lines
4.3 KiB
PHP

<?php
/*
Copyright (c) 2001 - 2006 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
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
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.
*/
/*!
@function addToPlaylist()
@discussion adds a bunch of songs to the mpd playlist
this takes a mpd object, and an array of songs
*/
function addToPlaylist( $myMpd, $song_ids=array()) {
foreach( $song_ids as $song_id ) {
/* There are two ways to do this, filename or URL */
if (conf('mpd_method') == 'url') {
// We just need to generate a standard stream URL and pass that
$song = new Song($song_id);
$sess_id = session_id();
if ($song->type == ".flac") { $song->type = ".ogg"; }
if ($GLOBALS['user']->prefs['play_type'] == 'downsample') {
$ds = $GLOBALS['user']->prefs['sample_rate'];
}
$song_url = conf('web_path') . "/play/index.php?song=$song_id&uid=" . $_SESSION['userdata']['username'] . "&sid=$sess_id&ds=$ds&name=." . $song->type;
if (is_null( $myMpd->PlAdd($song_url) ) ) {
$log_line = _("Error") . ": " . _("Could not add") . ": " . $song_url . " : " . $myMpd->errStr;
echo "<font class=\"error\">$log_line</font><br />\n";
if (conf('debug')) { log_event($GLOBALS['user']->username,'add',$log_line); }
} // if it's null
} // if we want urls
else {
$song = new Song( $song_id );
$song_filename = $song->get_rel_path();
if( is_null( $myMpd->PLAdd( $song_filename ) ) ) {
$log_line = _("Error") . ": " . _("Could not add") . ": " . $song_filename . " : " . $myMpd->errStr;
echo "<font class=\"error\">$log_line</font><br />\n";
if (conf('debug')) { log_event($_SESSION['userdata']['username'],'add',$log_line); }
} // end if it's null
// We still need to count if they use the file method
else {
$GLOBALS['user']->update_stats( $song_id );
} // end else
} // end else not url method
} // end foreach
} // addToPlaylist
/*!
@function show_mpd_control
@discussion shows the mpd controls
*/
function show_mpd_control() {
$_REQUEST['action'] = 'show_control';
require (conf('prefix').'/amp-mpd.php');
} // show_mpd_control
/**
* show_mpd_pl
* Shows the MPD playlist
* @package Local Play
* @catagory MPD
*/
function show_mpd_pl() {
$myMpd = init_mpd();
require (conf('prefix').'/templates/show_mpdpl.inc');
} // show_mpd_pl
/**
* mpd_redirect
* Redriect mojo
* @package Local Play
* @catagory MPD
* @param $page is the URL after conf('web_path') . '/'
*/
function mpd_redirect( $page = 'mpd.php' ) {
if (conf('localplay_menu')) {
header ("Location: " . conf('web_path') . '/' . $page);
}
else {
header ("Location: " . conf('web_path'));
}
} // mpd_redirect
/**
* Init MPD - This is originally from /amp-mpd.php
* This initializes MPD if it is the playback method.
* It checks to see if a global variable called myMpd is an object
* if it's not then it attempt to create one and return it
* @package Local Play
* @catagory MPD
*/
function init_mpd() {
static $myMpd;
if (!conf('allow_mpd_playback')) { return false; }
if (!is_object($myMpd)) {
$myMpd = new mpd(conf('mpd_host'),conf('mpd_port'));
}
if (!$myMpd->connected AND is_object($myMpd)) {
// Attempt to reconnect
$myMpd->Connect();
}
if (!$myMpd->connected) {
if (conf('debug')) {
log_event ($_SESSION['userdata']['username'],' connection_failed ',"Error: unable to connect to ". conf('mpd_host') . " on port " . conf('mpd_port') . " ".$myMpd->errStr);
}
return false;
}
return $myMpd;
} // function init_mpd()
?>