diff options
Diffstat (limited to 'lib/class/ampache_rss.class.php')
-rw-r--r-- | lib/class/ampache_rss.class.php | 414 |
1 files changed, 207 insertions, 207 deletions
diff --git a/lib/class/ampache_rss.class.php b/lib/class/ampache_rss.class.php index 3056e9cf..8006d8be 100644 --- a/lib/class/ampache_rss.class.php +++ b/lib/class/ampache_rss.class.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) @@ -27,227 +27,227 @@ */ class Ampache_RSS { - private $type; - public $data; + private $type; + public $data; - /** - * Constructor - * This takes a flagged.id and then pulls in the information for said flag entry - */ - public function __construct($type) { + /** + * Constructor + * This takes a flagged.id and then pulls in the information for said flag entry + */ + public function __construct($type) { - $this->type = self::validate_type($type); + $this->type = self::validate_type($type); - } // constructor + } // constructor - /** - * get_xml - * This returns the xmldocument for the current rss type, it calls a sub function that gathers the data - * and then uses the xmlDATA class to build the document - */ - public function get_xml() { + /** + * get_xml + * This returns the xmldocument for the current rss type, it calls a sub function that gathers the data + * and then uses the xmlDATA class to build the document + */ + public function get_xml() { - // Function call name - $data_function = 'load_' . $this->type; - $pub_date_function = 'pubdate_' . $this->type; + // Function call name + $data_function = 'load_' . $this->type; + $pub_date_function = 'pubdate_' . $this->type; - $data = call_user_func(array('Ampache_RSS',$data_function)); - $pub_date = call_user_func(array('Ampache_RSS',$pub_date_function)); - - XML_Data::set_type('rss'); - $xml_document = XML_Data::rss_feed($data,$this->get_title(),$this->get_description(),$pub_date); - - return $xml_document; - - } // get_xml + $data = call_user_func(array('Ampache_RSS',$data_function)); + $pub_date = call_user_func(array('Ampache_RSS',$pub_date_function)); + + XML_Data::set_type('rss'); + $xml_document = XML_Data::rss_feed($data,$this->get_title(),$this->get_description(),$pub_date); + + return $xml_document; + + } // get_xml - /** - * get_title - * This returns the standardized title for the rss feed based on this->type - */ - public function get_title() { - - $titles = array('now_playing' => T_('Now Playing'), - 'recently_played' => T_('Recently Played'), - 'latest_album' => T_('Newest Albums'), - 'latest_artist' => T_('Newest Artists')); + /** + * get_title + * This returns the standardized title for the rss feed based on this->type + */ + public function get_title() { + + $titles = array('now_playing' => T_('Now Playing'), + 'recently_played' => T_('Recently Played'), + 'latest_album' => T_('Newest Albums'), + 'latest_artist' => T_('Newest Artists')); - return scrub_out(Config::get('site_title')) . ' - ' . $titles[$this->type]; + return scrub_out(Config::get('site_title')) . ' - ' . $titles[$this->type]; - } // get_title + } // get_title - /** - * get_description - * This returns the standardized description for the rss feed based on this->type - */ - public function get_description() { + /** + * get_description + * This returns the standardized description for the rss feed based on this->type + */ + public function get_description() { - //FIXME: For now don't do any kind of translating - return 'Ampache RSS Feeds'; + //FIXME: For now don't do any kind of translating + return 'Ampache RSS Feeds'; - } // get_description + } // get_description - /** - * validate_type - * this returns a valid type for an rss feed, if the specified type is invalid it returns a default value - */ - public static function validate_type($type) { + /** + * validate_type + * this returns a valid type for an rss feed, if the specified type is invalid it returns a default value + */ + public static function validate_type($type) { - $valid_types = array('now_playing','recently_played','latest_album','latest_artist','latest_song', - 'popular_song','popular_album','popular_artist'); + $valid_types = array('now_playing','recently_played','latest_album','latest_artist','latest_song', + 'popular_song','popular_album','popular_artist'); - if (!in_array($type,$valid_types)) { - return 'now_playing'; - } + if (!in_array($type,$valid_types)) { + return 'now_playing'; + } - return $type; - - } // validate_type - - /** - * get_display - * This dumps out some html and an icon for the type of rss that we specify - */ - public static function get_display($type='now_playing') { - - // Default to now playing - $type = self::validate_type($type); - - $string = '<a href="' . Config::get('web_path') . '/rss.php?type=' . $type . '">' . UI::get_icon('feed', T_('RSS Feed')) . '</a>'; - - return $string; - - } // get_display - - // type specific functions below, these are called semi-dynamically based on the current type // - - /** - * load_now_playing - * This loads in the now playing information. This is just the raw data with key=>value pairs that could be turned - * into an xml document if we so wished - */ - public static function load_now_playing() { - - $data = Stream::get_now_playing(); - - $results = array(); - $format = Config::get('rss_format') ?: '%t - %a - %A'; - $string_map = array( - '%t' => 'title', - '%a' => 'artist', - '%A' => 'album' - ); - foreach ($data as $element) { - $song = $element['media']; - $client = $element['user']; - $title = $format; - $description = $format; - foreach($string_map as $search => $replace) { - $trep = 'f_' . $replace; - $drep = 'f_' . $replace . '_full'; - $title = str_replace($search, $song->$trep, $title); - $description = str_replace($search, $song->$drep, $description); - } - $xml_array = array( - 'title' => $title, - 'link' => $song->link, - 'description' => $description, - 'comments' => $client->fullname . ' - ' . $element['agent'], - 'pubDate' => date('r', $element['expire']) - ); - $results[] = $xml_array; - } // end foreach - - return $results; - - } // load_now_playing - - /** - * pubdate_now_playing - * this is the pub date we should use for the now playing information, - * this is a little specific as it uses the 'newest' expire we can find - */ - public static function pubdate_now_playing() { - - // Little redundent, should be fixed by an improvement in the get_now_playing stuff - $data = Stream::get_now_playing(); - - $element = array_shift($data); - - return $element['expire']; - - } // pubdate_now_playing - - /** - * load_recently_played - * This loads in the recently played information and formats it up real nice like - */ - public static function load_recently_played() { - - //FIXME: The time stuff should be centralized, it's currently in two places, lame - - $time_unit = array('', T_('seconds ago'), T_('minutes ago'), T_('hours ago'), T_('days ago'), T_('weeks ago'), T_('months ago'), T_('years ago')); - $data = Song::get_recently_played(); - - $results = array(); - - foreach ($data as $item) { - $client = new User($item['user']); - $song = new Song($item['object_id']); - $song->format(); - $amount = intval(time() - $item['date']+2); - $time_place = '0'; - while ($amount >= 1) { - $final = $amount; - $time_place++; - if ($time_place <= 2) { - $amount = floor($amount/60); - } - if ($time_place == '3') { - $amount = floor($amount/24); - } - if ($time_place == '4') { - $amount = floor($amount/7); - } - if ($time_place == '5') { - $amount = floor($amount/4); - } - if ($time_place == '6') { - $amount = floor ($amount/12); - } - if ($time_place > '6') { - $final = $amount . '+'; - break; - } - } // end while - - $time_string = $final . ' ' . $time_unit[$time_place]; - - $xml_array = array('title'=>$song->f_title . ' - ' . $song->f_artist . ' - ' . $song->f_album, - 'link'=>str_replace('&', '&', $song->link), - 'description'=>$song->title . ' - ' . $song->f_artist_full . ' - ' . $song->f_album_full . ' - ' . $time_string, - 'comments'=>$client->username, - 'pubDate'=>date("r",$item['date'])); - $results[] = $xml_array; - - } // end foreach - - return $results; - - } // load_recently_played - - /** - * pubdate_recently_played - * This just returns the 'newest' recently played entry - */ - public static function pubdate_recently_played() { - - $data = Song::get_recently_played(); - - $element = array_shift($data); - - return $element['date']; - - } // pubdate_recently_played + return $type; + + } // validate_type + + /** + * get_display + * This dumps out some html and an icon for the type of rss that we specify + */ + public static function get_display($type='now_playing') { + + // Default to now playing + $type = self::validate_type($type); + + $string = '<a href="' . Config::get('web_path') . '/rss.php?type=' . $type . '">' . UI::get_icon('feed', T_('RSS Feed')) . '</a>'; + + return $string; + + } // get_display + + // type specific functions below, these are called semi-dynamically based on the current type // + + /** + * load_now_playing + * This loads in the now playing information. This is just the raw data with key=>value pairs that could be turned + * into an xml document if we so wished + */ + public static function load_now_playing() { + + $data = Stream::get_now_playing(); + + $results = array(); + $format = Config::get('rss_format') ?: '%t - %a - %A'; + $string_map = array( + '%t' => 'title', + '%a' => 'artist', + '%A' => 'album' + ); + foreach ($data as $element) { + $song = $element['media']; + $client = $element['user']; + $title = $format; + $description = $format; + foreach($string_map as $search => $replace) { + $trep = 'f_' . $replace; + $drep = 'f_' . $replace . '_full'; + $title = str_replace($search, $song->$trep, $title); + $description = str_replace($search, $song->$drep, $description); + } + $xml_array = array( + 'title' => $title, + 'link' => $song->link, + 'description' => $description, + 'comments' => $client->fullname . ' - ' . $element['agent'], + 'pubDate' => date('r', $element['expire']) + ); + $results[] = $xml_array; + } // end foreach + + return $results; + + } // load_now_playing + + /** + * pubdate_now_playing + * this is the pub date we should use for the now playing information, + * this is a little specific as it uses the 'newest' expire we can find + */ + public static function pubdate_now_playing() { + + // Little redundent, should be fixed by an improvement in the get_now_playing stuff + $data = Stream::get_now_playing(); + + $element = array_shift($data); + + return $element['expire']; + + } // pubdate_now_playing + + /** + * load_recently_played + * This loads in the recently played information and formats it up real nice like + */ + public static function load_recently_played() { + + //FIXME: The time stuff should be centralized, it's currently in two places, lame + + $time_unit = array('', T_('seconds ago'), T_('minutes ago'), T_('hours ago'), T_('days ago'), T_('weeks ago'), T_('months ago'), T_('years ago')); + $data = Song::get_recently_played(); + + $results = array(); + + foreach ($data as $item) { + $client = new User($item['user']); + $song = new Song($item['object_id']); + $song->format(); + $amount = intval(time() - $item['date']+2); + $time_place = '0'; + while ($amount >= 1) { + $final = $amount; + $time_place++; + if ($time_place <= 2) { + $amount = floor($amount/60); + } + if ($time_place == '3') { + $amount = floor($amount/24); + } + if ($time_place == '4') { + $amount = floor($amount/7); + } + if ($time_place == '5') { + $amount = floor($amount/4); + } + if ($time_place == '6') { + $amount = floor ($amount/12); + } + if ($time_place > '6') { + $final = $amount . '+'; + break; + } + } // end while + + $time_string = $final . ' ' . $time_unit[$time_place]; + + $xml_array = array('title'=>$song->f_title . ' - ' . $song->f_artist . ' - ' . $song->f_album, + 'link'=>str_replace('&', '&', $song->link), + 'description'=>$song->title . ' - ' . $song->f_artist_full . ' - ' . $song->f_album_full . ' - ' . $time_string, + 'comments'=>$client->username, + 'pubDate'=>date("r",$item['date'])); + $results[] = $xml_array; + + } // end foreach + + return $results; + + } // load_recently_played + + /** + * pubdate_recently_played + * This just returns the 'newest' recently played entry + */ + public static function pubdate_recently_played() { + + $data = Song::get_recently_played(); + + $element = array_shift($data); + + return $element['date']; + + } // pubdate_recently_played } // end Ampache_RSS class |