diff options
Diffstat (limited to 'lib/class/localplay_controller.abstract.php')
-rw-r--r-- | lib/class/localplay_controller.abstract.php | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/lib/class/localplay_controller.abstract.php b/lib/class/localplay_controller.abstract.php new file mode 100644 index 00000000..5e9d8b3c --- /dev/null +++ b/lib/class/localplay_controller.abstract.php @@ -0,0 +1,121 @@ +<?php +/* vim:set tabstop=8 softtabstop=8 shiftwidth=8 noexpandtab: */ +/** + * localplay_controller Class + * + * + * LICENSE: GNU General Public License, version 2 (GPLv2) + * Copyright (c) 2001 - 2011 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. + * + * @package Ampache + * @copyright 2001 - 2011 Ampache.org + * @license http://opensource.org/licenses/gpl-2.0 GPLv2 + * @link http://www.ampache.org/ + */ + +/* + * localplay_controller Class + * + * This is the abstract class for any localplay controller + * + * @package Ampache + * @copyright 2001 - 2011 Ampache.org + * @license http://opensource.org/licenses/gpl-2.0 GPLv2 + * @link http://www.ampache.org/ + * @abstract + */ +abstract class localplay_controller { + + // Required Functions + abstract public function add($objects); // Takes an array of song_ids + abstract public function delete_track($object_id); // Takes a single object_id and removes it from the playlist + abstract public function play(); + abstract public function stop(); + abstract public function get(); + abstract public function connect(); + abstract public function status(); + abstract public function get_version(); // Returns the version of this plugin + abstract public function get_description(); // Returns the description + abstract public function is_installed(); // Returns an boolean t/f + abstract public function install(); + abstract public function uninstall(); + + // For display we need the following 'instance' functions + abstract public function add_instance($data); + abstract public function delete_instance($id); + abstract public function update_instance($id,$post); + abstract public function get_instances(); + abstract public function instance_fields(); + abstract public function set_active_instance($uid); + abstract public function get_active_instance(); + + /** + * get_url + * This returns the URL for the passed object + */ + public function get_url($object) { + + // This might not be an object! + if (!is_object($object)) { + // Stupiidly we'll just blindly add it for now + return $object; + } + + $class = get_class($object); + + $url = call_user_func(array($class,'play_url'),$object->id); + + return $url; + + } // get_url + + /** + * get_file + * This returns the Filename for the passed object, not + * always possible + */ + public function get_file($object) { + + + } // get_file + + /** + * parse_url + * This takes an Ampache URL and then returns the 'primary' part of it + * So that it's easier for localplay modules to return valid song information + */ + public function parse_url($url) { + + // Define possible 'primary' keys + $primary_array = array('oid','demo_id','random'); + $data = array(); + + $variables = parse_url($url,PHP_URL_QUERY); + parse_str($variables,$data); + + foreach ($primary_array as $pkey) { + if ($data[$pkey]) { + $data['primary_key'] = $pkey; + return $data; + } + + } // end foreach + + return $data; + + } // parse_url + +} // end localplay_controller interface |