summaryrefslogtreecommitdiffstats
path: root/modules/localplay/mpd.controller.php
diff options
context:
space:
mode:
authorPaul Arthur <paul.arthur@flowerysong.com>2013-01-26 03:00:32 -0500
committerPaul Arthur <paul.arthur@flowerysong.com>2013-01-26 03:38:46 -0500
commitef4d3660605efc7f1328d4533b0f4bfb6c1107e2 (patch)
treee4377fb129a899e65aaaf421f8c97098aecaedd5 /modules/localplay/mpd.controller.php
parent8a750c3e875d590d351c3042570a134fcdf03e5d (diff)
downloadampache-ef4d3660605efc7f1328d4533b0f4bfb6c1107e2.tar.gz
ampache-ef4d3660605efc7f1328d4533b0f4bfb6c1107e2.tar.bz2
ampache-ef4d3660605efc7f1328d4533b0f4bfb6c1107e2.zip
Cosmetics: death to tabs
The refactoring I've been doing has reminded me of my strong preference for spaces, and I feel inclined to impose my will on the tree.
Diffstat (limited to 'modules/localplay/mpd.controller.php')
-rw-r--r--modules/localplay/mpd.controller.php848
1 files changed, 424 insertions, 424 deletions
diff --git a/modules/localplay/mpd.controller.php b/modules/localplay/mpd.controller.php
index 0fcacc60..3949697d 100644
--- a/modules/localplay/mpd.controller.php
+++ b/modules/localplay/mpd.controller.php
@@ -1,5 +1,5 @@
<?php
-/* vim:set tabstop=8 softtabstop=8 shiftwidth=8 noexpandtab: */
+/* vim:set softtabstop=4 shiftwidth=4 expandtab: */
/**
*
* LICENSE: GNU General Public License, version 2 (GPLv2)
@@ -29,65 +29,65 @@
*/
class AmpacheMpd extends localplay_controller {
- /* Variables */
- private $version = '000003';
- private $description = 'Controls an instance of MPD';
-
- private $_add_count = 0;
+ /* Variables */
+ private $version = '000003';
+ private $description = 'Controls an instance of MPD';
+
+ private $_add_count = 0;
- /* Constructed variables */
- private $_mpd;
+ /* Constructed variables */
+ private $_mpd;
- /**
- * Constructor
- * This returns the array map for the localplay object
- * REQUIRED for Localplay
- */
- public function __construct() {
+ /**
+ * Constructor
+ * This returns the array map for the localplay object
+ * REQUIRED for Localplay
+ */
+ public function __construct() {
- /* Do a Require Once On the needed Libraries */
- require_once Config::get('prefix') . '/modules/mpd/mpd.class.php';
+ /* Do a Require Once On the needed Libraries */
+ require_once Config::get('prefix') . '/modules/mpd/mpd.class.php';
- } // AmpacheMpd
+ } // AmpacheMpd
- /**
- * get_description
- * Returns the description
- */
- public function get_description() {
+ /**
+ * get_description
+ * Returns the description
+ */
+ public function get_description() {
- return $this->description;
+ return $this->description;
- } // get_description
+ } // get_description
- /**
- * get_version
- * This returns the version information
- */
- public function get_version() {
+ /**
+ * get_version
+ * This returns the version information
+ */
+ public function get_version() {
- return $this->version;
+ return $this->version;
- } // get_version
+ } // get_version
- /**
- * is_installed
- * This returns true or false if MPD controller is installed
- */
- public function is_installed() {
+ /**
+ * is_installed
+ * This returns true or false if MPD controller is installed
+ */
+ public function is_installed() {
$sql = "DESCRIBE `localplay_mpd`";
$db_results = Dba::read($sql);
return Dba::num_rows($db_results);
- } // is_installed
+ } // is_installed
- /**
- * install
- * This function installs the MPD localplay controller
- */
- public function install() {
+ /**
+ * install
+ * This function installs the MPD localplay controller
+ */
+ public function install() {
/* We need to create the MPD table */
$sql = "CREATE TABLE `localplay_mpd` ( `id` INT( 11 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , " .
@@ -100,312 +100,312 @@ class AmpacheMpd extends localplay_controller {
") ENGINE = MYISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
$db_results = Dba::write($sql);
- // Add an internal preference for the users current active instance
- Preference::insert('mpd_active','MPD Active Instance','0','25','integer','internal');
- User::rebuild_all_preferences();
+ // Add an internal preference for the users current active instance
+ Preference::insert('mpd_active','MPD Active Instance','0','25','integer','internal');
+ User::rebuild_all_preferences();
return true;
- } // install
+ } // install
- /**
- * uninstall
- * This removes the localplay controller
- */
- public function uninstall() {
+ /**
+ * uninstall
+ * This removes the localplay controller
+ */
+ public function uninstall() {
$sql = "DROP TABLE `localplay_mpd`";
$db_results = Dba::write($sql);
- Preference::delete('mpd_active');
+ Preference::delete('mpd_active');
return true;
- } // uninstall
+ } // uninstall
- /**
- * add_instance
- * This takes key'd data and inserts a new MPD instance
- */
- public function add_instance($data) {
+ /**
+ * add_instance
+ * This takes key'd data and inserts a new MPD instance
+ */
+ public function add_instance($data) {
- foreach ($data as $key=>$value) {
- switch ($key) {
- case 'name':
- case 'host':
- case 'port':
- case 'password':
- ${$key} = Dba::escape($value);
- break;
- default:
+ foreach ($data as $key=>$value) {
+ switch ($key) {
+ case 'name':
+ case 'host':
+ case 'port':
+ case 'password':
+ ${$key} = Dba::escape($value);
+ break;
+ default:
- break;
- } // end switch
- } // end foreach
+ break;
+ } // end switch
+ } // end foreach
- $user_id = Dba::escape($GLOBALS['user']->id);
+ $user_id = Dba::escape($GLOBALS['user']->id);
- $sql = "INSERT INTO `localplay_mpd` (`name`,`host`,`port`,`password`,`owner`) " .
- "VALUES ('$name','$host','$port','$password','$user_id')";
- $db_results = Dba::write($sql);
+ $sql = "INSERT INTO `localplay_mpd` (`name`,`host`,`port`,`password`,`owner`) " .
+ "VALUES ('$name','$host','$port','$password','$user_id')";
+ $db_results = Dba::write($sql);
- return $db_results;
+ return $db_results;
- } // add_instance
+ } // add_instance
- /**
- * delete_instance
- * This takes a UID and deletes the instance in question
- */
- public function delete_instance($uid) {
+ /**
+ * delete_instance
+ * This takes a UID and deletes the instance in question
+ */
+ public function delete_instance($uid) {
- $uid = Dba::escape($uid);
+ $uid = Dba::escape($uid);
- // Go ahead and delete this mofo!
- $sql = "DELETE FROM `localplay_mpd` WHERE `id`='$uid'";
- $db_results = Dba::write($sql);
+ // Go ahead and delete this mofo!
+ $sql = "DELETE FROM `localplay_mpd` WHERE `id`='$uid'";
+ $db_results = Dba::write($sql);
- return true;
+ return true;
- } // delete_instance
+ } // delete_instance
- /**
- * get_instances
- * This returns a key'd array of the instance information with
- * [UID]=>[NAME]
- */
- public function get_instances() {
+ /**
+ * get_instances
+ * This returns a key'd array of the instance information with
+ * [UID]=>[NAME]
+ */
+ public function get_instances() {
- $sql = "SELECT * FROM `localplay_mpd` ORDER BY `name`";
- $db_results = Dba::read($sql);
+ $sql = "SELECT * FROM `localplay_mpd` ORDER BY `name`";
+ $db_results = Dba::read($sql);
- $results = array();
+ $results = array();
- while ($row = Dba::fetch_assoc($db_results)) {
- $results[$row['id']] = $row['name'];
- }
+ while ($row = Dba::fetch_assoc($db_results)) {
+ $results[$row['id']] = $row['name'];
+ }
- return $results;
+ return $results;
- } // get_instances
+ } // get_instances
- /**
- * get_instance
- * This returns the specified instance and all it's pretty variables
- * If no instance is passed current is used
- */
- public function get_instance($instance='') {
+ /**
+ * get_instance
+ * This returns the specified instance and all it's pretty variables
+ * If no instance is passed current is used
+ */
+ public function get_instance($instance='') {
- $instance = $instance ? $instance : Config::get('mpd_active');
- $instance = Dba::escape($instance);
+ $instance = $instance ? $instance : Config::get('mpd_active');
+ $instance = Dba::escape($instance);
- $sql = "SELECT * FROM `localplay_mpd` WHERE `id`='$instance'";
- $db_results = Dba::read($sql);
+ $sql = "SELECT * FROM `localplay_mpd` WHERE `id`='$instance'";
+ $db_results = Dba::read($sql);
- $row = Dba::fetch_assoc($db_results);
+ $row = Dba::fetch_assoc($db_results);
- return $row;
+ return $row;
- } // get_instance
+ } // get_instance
- /**
- * update_instance
- * This takes an ID and an array of data and updates the instance specified
- */
- public function update_instance($uid,$data) {
+ /**
+ * update_instance
+ * This takes an ID and an array of data and updates the instance specified
+ */
+ public function update_instance($uid,$data) {
- $uid = Dba::escape($uid);
- $host = $data['host'] ? Dba::escape($data['host']) : '127.0.0.1';
- $port = $data['port'] ? Dba::escape($data['port']) : '6600';
- $name = Dba::escape($data['name']);
- $pass = Dba::escape($data['password']);
-
- $sql = "UPDATE `localplay_mpd` SET `host`='$host', `port`='$port', `name`='$name', `password`='$pass' WHERE `id`='$uid'";
- $db_results = Dba::write($sql);
-
- return true;
-
- } // update_instance
-
- /**
- * instance_fields
- * This returns a key'd array of [NAME]=>array([DESCRIPTION]=>VALUE,[TYPE]=>VALUE) for the
- * fields so that we can on-the-fly generate a form
- */
- public function instance_fields() {
-
- $fields['name'] = array('description' => T_('Instance Name'),'type'=>'textbox');
- $fields['host'] = array('description' => T_('Hostname'),'type'=>'textbox');
- $fields['port'] = array('description' => T_('Port'),'type'=>'textbox');
- $fields['password'] = array('description' => T_('Password'),'type'=>'textbox');
-
- return $fields;
-
- } // instance_fields
-
- /**
- * set_active_instance
- * This sets the specified instance as the 'active' one
- */
- public function set_active_instance($uid,$user_id='') {
-
- // Not an admin? bubkiss!
- if (!$GLOBALS['user']->has_access('100')) {
- $user_id = $GLOBALS['user']->id;
- }
-
- $user_id = $user_id ? $user_id : $GLOBALS['user']->id;
-
- Preference::update('mpd_active',$user_id,intval($uid));
- Config::set('mpd_active', intval($uid), true);
-
- return true;
-
- } // set_active_instance
-
- /**
- * get_active_instance
- * This returns the UID of the current active instance
- * false if none are active
- */
- public function get_active_instance() {
-
-
- } // get_active_instance
-
- /**
- * add_url
- * This is the new hotness
- */
- public function add_url(Stream_URL $url) {
- // If we haven't added anything then maybe we should clear the
- // playlist.
- if ($this->_add_count < 1) {
- $this->_mpd->RefreshInfo();
- if ($this->_mpd->status['state'] == mpd::STATE_STOPPED) {
- $this->clear_playlist();
- }
- }
-
- if (!$this->_mpd->PlAdd($url->url)) {
- debug_event('mpd', 'add_url failed to add: ' . json_encode($url), 1);
- return false;
- }
-
- $this->_add_count++;
- return true;
- }
-
- /**
- * delete_track
- * This must take a single ID (as returned by the get function)
- * and delete it from the current playlist
- */
- public function delete_track($object_id) {
- return $this->_mpd->PLRemove($object_id);
- } // delete_track
-
- /**
- * clear_playlist
- * This deletes the entire MPD playlist... nuff said
- */
- public function clear_playlist() {
- return $this->_mpd->PLClear();
- } // clear_playlist
-
- /**
- * play
- * This just tells MPD to start playing, it does not
- * take any arguments
- */
- public function play() {
- return $this->_mpd->Play();
- } // play
-
- /**
- * stop
- * This just tells MPD to stop playing, it does not take
- * any arguments
- */
- public function stop() {
- return $this->_mpd->Stop();
- } // stop
-
- /**
- * skip
- * This tells MPD to skip to the specified song
- */
- public function skip($song) {
-
- if (!$this->_mpd->SkipTo($song)) { return false; }
- sleep(2);
- $this->stop();
- sleep(2);
- $this->play();
- return true;
-
- } // skip
-
- /**
- * This tells MPD to increase the volume by 5
- */
- public function volume_up() {
- return $this->_mpd->AdjustVolume('5');
- } // volume_up
-
- /**
- * This tells MPD to decrease the volume by 5
- */
- public function volume_down() {
- return $this->_mpd->AdjustVolume('-5');
- } // volume_down
-
- /**
- * next
- * This just tells MPD to skip to the next song
- */
- public function next() {
- return $this->_mpd->Next();
- } // next
-
- /**
- * prev
- * This just tells MPD to skip to the prev song
- */
- public function prev() {
- return $this->_mpd->Previous();
- } // prev
-
- /**
- * pause
- * This tells MPD to pause the current song
- */
- public function pause() {
- return $this->_mpd->Pause();
- } // pause
+ $uid = Dba::escape($uid);
+ $host = $data['host'] ? Dba::escape($data['host']) : '127.0.0.1';
+ $port = $data['port'] ? Dba::escape($data['port']) : '6600';
+ $name = Dba::escape($data['name']);
+ $pass = Dba::escape($data['password']);
+
+ $sql = "UPDATE `localplay_mpd` SET `host`='$host', `port`='$port', `name`='$name', `password`='$pass' WHERE `id`='$uid'";
+ $db_results = Dba::write($sql);
+
+ return true;
+
+ } // update_instance
+
+ /**
+ * instance_fields
+ * This returns a key'd array of [NAME]=>array([DESCRIPTION]=>VALUE,[TYPE]=>VALUE) for the
+ * fields so that we can on-the-fly generate a form
+ */
+ public function instance_fields() {
+
+ $fields['name'] = array('description' => T_('Instance Name'),'type'=>'textbox');
+ $fields['host'] = array('description' => T_('Hostname'),'type'=>'textbox');
+ $fields['port'] = array('description' => T_('Port'),'type'=>'textbox');
+ $fields['password'] = array('description' => T_('Password'),'type'=>'textbox');
+
+ return $fields;
+
+ } // instance_fields
+
+ /**
+ * set_active_instance
+ * This sets the specified instance as the 'active' one
+ */
+ public function set_active_instance($uid,$user_id='') {
+
+ // Not an admin? bubkiss!
+ if (!$GLOBALS['user']->has_access('100')) {
+ $user_id = $GLOBALS['user']->id;
+ }
+
+ $user_id = $user_id ? $user_id : $GLOBALS['user']->id;
+
+ Preference::update('mpd_active',$user_id,intval($uid));
+ Config::set('mpd_active', intval($uid), true);
+
+ return true;
+
+ } // set_active_instance
+
+ /**
+ * get_active_instance
+ * This returns the UID of the current active instance
+ * false if none are active
+ */
+ public function get_active_instance() {
+
+
+ } // get_active_instance
+
+ /**
+ * add_url
+ * This is the new hotness
+ */
+ public function add_url(Stream_URL $url) {
+ // If we haven't added anything then maybe we should clear the
+ // playlist.
+ if ($this->_add_count < 1) {
+ $this->_mpd->RefreshInfo();
+ if ($this->_mpd->status['state'] == mpd::STATE_STOPPED) {
+ $this->clear_playlist();
+ }
+ }
+
+ if (!$this->_mpd->PlAdd($url->url)) {
+ debug_event('mpd', 'add_url failed to add: ' . json_encode($url), 1);
+ return false;
+ }
+
+ $this->_add_count++;
+ return true;
+ }
+
+ /**
+ * delete_track
+ * This must take a single ID (as returned by the get function)
+ * and delete it from the current playlist
+ */
+ public function delete_track($object_id) {
+ return $this->_mpd->PLRemove($object_id);
+ } // delete_track
+
+ /**
+ * clear_playlist
+ * This deletes the entire MPD playlist... nuff said
+ */
+ public function clear_playlist() {
+ return $this->_mpd->PLClear();
+ } // clear_playlist
+
+ /**
+ * play
+ * This just tells MPD to start playing, it does not
+ * take any arguments
+ */
+ public function play() {
+ return $this->_mpd->Play();
+ } // play
+
+ /**
+ * stop
+ * This just tells MPD to stop playing, it does not take
+ * any arguments
+ */
+ public function stop() {
+ return $this->_mpd->Stop();
+ } // stop
+
+ /**
+ * skip
+ * This tells MPD to skip to the specified song
+ */
+ public function skip($song) {
+
+ if (!$this->_mpd->SkipTo($song)) { return false; }
+ sleep(2);
+ $this->stop();
+ sleep(2);
+ $this->play();
+ return true;
+
+ } // skip
+
+ /**
+ * This tells MPD to increase the volume by 5
+ */
+ public function volume_up() {
+ return $this->_mpd->AdjustVolume('5');
+ } // volume_up
+
+ /**
+ * This tells MPD to decrease the volume by 5
+ */
+ public function volume_down() {
+ return $this->_mpd->AdjustVolume('-5');
+ } // volume_down
+
+ /**
+ * next
+ * This just tells MPD to skip to the next song
+ */
+ public function next() {
+ return $this->_mpd->Next();
+ } // next
+
+ /**
+ * prev
+ * This just tells MPD to skip to the prev song
+ */
+ public function prev() {
+ return $this->_mpd->Previous();
+ } // prev
+
+ /**
+ * pause
+ * This tells MPD to pause the current song
+ */
+ public function pause() {
+ return $this->_mpd->Pause();
+ } // pause
/**
* volume
* This tells MPD to set the volume to the parameter
*/
- public function volume($volume) {
+ public function volume($volume) {
return $this->_mpd->SetVolume($volume);
} // volume
/**
* repeat
* This tells MPD to set the repeating the playlist (i.e. loop) to either
- * on or off.
+ * on or off.
*/
- public function repeat($state) {
- return $this->_mpd->SetRepeat($state);
+ public function repeat($state) {
+ return $this->_mpd->SetRepeat($state);
} // repeat
/**
* random
* This tells MPD to turn on or off the playing of songs from the
- * playlist in random order.
+ * playlist in random order.
*/
public function random($onoff) {
return $this->_mpd->SetRandom($onoff);
@@ -416,137 +416,137 @@ class AmpacheMpd extends localplay_controller {
* This tells MPD to move a song
*/
public function move($source, $destination) {
- return $this->_mpd->PLMoveTrack($source, $destination);
- } // move
-
- /**
- * get_songs
- * This functions returns an array containing information about
- * the songs that MPD currently has in its playlist. This must be
- * done in a standardized fashion
- */
- public function get() {
- // If we don't have the playlist yet, pull it
- if (!isset($this->_mpd->playlist)) {
- $this->_mpd->RefreshInfo();
- }
-
- /* Get the Current Playlist */
- $playlist = $this->_mpd->playlist;
-
- foreach ($playlist as $entry) {
- $data = array();
-
- /* Required Elements */
- $data['id'] = $entry['Pos'];
- $data['raw'] = $entry['file'];
-
- $url_data = $this->parse_url($entry['file']);
-
- switch ($url_data['primary_key']) {
- case 'oid':
- $song = new Song($url_data['oid']);
- $song->format();
- $data['name'] = $song->f_title . ' - ' . $song->f_album . ' - ' . $song->f_artist;
- $data['link'] = $song->f_link;
- break;
- case 'demo_id':
- $democratic = new Democratic($url_data['demo_id']);
- $data['name'] = T_('Democratic') . ' - ' . $democratic->name;
- $data['link'] = '';
- break;
- case 'random':
- $data['name'] = T_('Random') . ' - ' . scrub_out(ucfirst($url_data['type']));
- $data['link'] = '';
- break;
- default:
-
- /* If we don't know it, look up by filename */
- $filename = Dba::escape($entry['file']);
- $sql = "SELECT `id`,'song' AS `type` FROM `song` WHERE `file` LIKE '%$filename' " .
- "UNION ALL " .
- "SELECT `id`,'radio' AS `type` FROM `live_stream` WHERE `url`='$filename' ";
-
- $db_results = Dba::read($sql);
- if ($row = Dba::fetch_assoc($db_results)) {
- $media = new $row['type']($row['id']);
- $media->format();
- switch ($row['type']) {
- case 'song':
- $data['name'] = $media->f_title . ' - ' . $media->f_album . ' - ' . $media->f_artist;
- $data['link'] = $media->f_link;
- break;
- case 'radio':
- $frequency = $media->frequency ? '[' . $media->frequency . ']' : '';
- $site_url = $media->site_url ? '(' . $media->site_url . ')' : '';
- $data['name'] = "$media->name $frequency $site_url";
- $data['link'] = $media->site_url;
- break;
- } // end switch on type
- } // end if results
-
- else {
- $data['name'] = T_('Unknown');
- $data['link'] = '';
- }
-
- break;
- } // end switch on primary key type
-
- /* Optional Elements */
- $data['track'] = $entry['Pos']+1;
-
- $results[] = $data;
-
- } // foreach playlist items
-
- return $results;
-
- } // get
-
- /**
- * get_status
- * This returns bool/int values for features, loop, repeat and any other
- * features that this localplay method supports.
- */
- public function status() {
-
- $track = $this->_mpd->status['song'];
-
- /* Construct the Array */
- $array['state'] = $this->_mpd->status['state'];
- $array['volume'] = $this->_mpd->status['volume'];
- $array['repeat'] = $this->_mpd->status['repeat'];
- $array['random'] = $this->_mpd->status['random'];
- $array['track'] = $track+1;
-
- $url_data = $this->parse_url($this->_mpd->playlist[$track]['file']);
- $song = new Song($url_data['oid']);
- $array['track_title'] = $song->title;
- $array['track_artist'] = $song->get_artist_name();
- $array['track_album'] = $song->get_album_name();
-
- return $array;
-
- } // get_status
-
- /**
- * connect
- * This functions creates the connection to MPD and returns
- * a boolean value for the status, to save time this handle
- * is stored in this class
- */
- public function connect() {
-
- // Look at the current instance and pull the options for said instance
- $options = self::get_instance();
- $this->_mpd = new mpd($options['host'], $options['port'], $options['password'], 'debug_event');
-
- if ($this->_mpd->connected) { return true; }
-
- return false;
-
- } // connect
+ return $this->_mpd->PLMoveTrack($source, $destination);
+ } // move
+
+ /**
+ * get_songs
+ * This functions returns an array containing information about
+ * the songs that MPD currently has in its playlist. This must be
+ * done in a standardized fashion
+ */
+ public function get() {
+ // If we don't have the playlist yet, pull it
+ if (!isset($this->_mpd->playlist)) {
+ $this->_mpd->RefreshInfo();
+ }
+
+ /* Get the Current Playlist */
+ $playlist = $this->_mpd->playlist;
+
+ foreach ($playlist as $entry) {
+ $data = array();
+
+ /* Required Elements */
+ $data['id'] = $entry['Pos'];
+ $data['raw'] = $entry['file'];
+
+ $url_data = $this->parse_url($entry['file']);
+
+ switch ($url_data['primary_key']) {
+ case 'oid':
+ $song = new Song($url_data['oid']);
+ $song->format();
+ $data['name'] = $song->f_title . ' - ' . $song->f_album . ' - ' . $song->f_artist;
+ $data['link'] = $song->f_link;
+ break;
+ case 'demo_id':
+ $democratic = new Democratic($url_data['demo_id']);
+ $data['name'] = T_('Democratic') . ' - ' . $democratic->name;
+ $data['link'] = '';
+ break;
+ case 'random':
+ $data['name'] = T_('Random') . ' - ' . scrub_out(ucfirst($url_data['type']));
+ $data['link'] = '';
+ break;
+ default:
+
+ /* If we don't know it, look up by filename */
+ $filename = Dba::escape($entry['file']);
+ $sql = "SELECT `id`,'song' AS `type` FROM `song` WHERE `file` LIKE '%$filename' " .
+ "UNION ALL " .
+ "SELECT `id`,'radio' AS `type` FROM `live_stream` WHERE `url`='$filename' ";
+
+ $db_results = Dba::read($sql);
+ if ($row = Dba::fetch_assoc($db_results)) {
+ $media = new $row['type']($row['id']);
+ $media->format();
+ switch ($row['type']) {
+ case 'song':
+ $data['name'] = $media->f_title . ' - ' . $media->f_album . ' - ' . $media->f_artist;
+ $data['link'] = $media->f_link;
+ break;
+ case 'radio':
+ $frequency = $media->frequency ? '[' . $media->frequency . ']' : '';
+ $site_url = $media->site_url ? '(' . $media->site_url . ')' : '';
+ $data['name'] = "$media->name $frequency $site_url";
+ $data['link'] = $media->site_url;
+ break;
+ } // end switch on type
+ } // end if results
+
+ else {
+ $data['name'] = T_('Unknown');
+ $data['link'] = '';
+ }
+
+ break;
+ } // end switch on primary key type
+
+ /* Optional Elements */
+ $data['track'] = $entry['Pos']+1;
+
+ $results[] = $data;
+
+ } // foreach playlist items
+
+ return $results;
+
+ } // get
+
+ /**
+ * get_status
+ * This returns bool/int values for features, loop, repeat and any other
+ * features that this localplay method supports.
+ */
+ public function status() {
+
+ $track = $this->_mpd->status['song'];
+
+ /* Construct the Array */
+ $array['state'] = $this->_mpd->status['state'];
+ $array['volume'] = $this->_mpd->status['volume'];
+ $array['repeat'] = $this->_mpd->status['repeat'];
+ $array['random'] = $this->_mpd->status['random'];
+ $array['track'] = $track+1;
+
+ $url_data = $this->parse_url($this->_mpd->playlist[$track]['file']);
+ $song = new Song($url_data['oid']);
+ $array['track_title'] = $song->title;
+ $array['track_artist'] = $song->get_artist_name();
+ $array['track_album'] = $song->get_album_name();
+
+ return $array;
+
+ } // get_status
+
+ /**
+ * connect
+ * This functions creates the connection to MPD and returns
+ * a boolean value for the status, to save time this handle
+ * is stored in this class
+ */
+ public function connect() {
+
+ // Look at the current instance and pull the options for said instance
+ $options = self::get_instance();
+ $this->_mpd = new mpd($options['host'], $options['port'], $options['password'], 'debug_event');
+
+ if ($this->_mpd->connected) { return true; }
+
+ return false;
+
+ } // connect
} //end of AmpacheMpd