mirror of
https://github.com/Yetangitu/ampache
synced 2025-10-03 17:59:21 +02:00
some work on the rss feed stuff
This commit is contained in:
parent
286840fbcc
commit
287a46f11e
5 changed files with 72 additions and 16 deletions
|
@ -27,24 +27,38 @@
|
||||||
*/
|
*/
|
||||||
class RSS {
|
class RSS {
|
||||||
|
|
||||||
private static $types = array('nowplaying',
|
public $type;
|
||||||
'latestartist',
|
public $data;
|
||||||
'latestalbum',
|
|
||||||
'popularalbum',
|
|
||||||
'popularartist',
|
|
||||||
'popularsong',
|
|
||||||
'recentlyplayed');
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
* This takes a flagged.id and then pulls in the information for said flag entry
|
* This takes a flagged.id and then pulls in the information for said flag entry
|
||||||
*/
|
*/
|
||||||
public function __construct() {
|
public function __construct($type) {
|
||||||
|
|
||||||
// Nothing here for now
|
if (!RSS::valid_type($type)) {
|
||||||
|
$type = 'now_playing';
|
||||||
|
}
|
||||||
|
|
||||||
} // constructor
|
} // constructor
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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');
|
||||||
|
|
||||||
|
if (!in_array($type,$valid_types)) {
|
||||||
|
return 'now_playing';
|
||||||
|
}
|
||||||
|
|
||||||
|
return $type;
|
||||||
|
|
||||||
|
} // validate_type
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get_display
|
* get_display
|
||||||
* This dumps out some html and an icon for the type of rss that we specify
|
* This dumps out some html and an icon for the type of rss that we specify
|
||||||
|
|
|
@ -30,6 +30,7 @@ class xmlData {
|
||||||
// This is added so that we don't pop any webservers
|
// This is added so that we don't pop any webservers
|
||||||
private static $limit = '5000';
|
private static $limit = '5000';
|
||||||
private static $offset = '0';
|
private static $offset = '0';
|
||||||
|
private static $type = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* constructor
|
* constructor
|
||||||
|
@ -65,6 +66,18 @@ class xmlData {
|
||||||
|
|
||||||
} // set_limit
|
} // set_limit
|
||||||
|
|
||||||
|
/**
|
||||||
|
* set_type
|
||||||
|
* This sets the type of xmlData we are working on
|
||||||
|
*/
|
||||||
|
public static function set_type($type) {
|
||||||
|
|
||||||
|
if (!in_array($type,array('rss','xspf','itunes'))) { return false; }
|
||||||
|
|
||||||
|
self::$type = $type;
|
||||||
|
|
||||||
|
} // set_type
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* error
|
* error
|
||||||
* This generates a standard XML Error message
|
* This generates a standard XML Error message
|
||||||
|
@ -280,6 +293,23 @@ class xmlData {
|
||||||
|
|
||||||
} // songs
|
} // songs
|
||||||
|
|
||||||
|
/**
|
||||||
|
* rss_feed
|
||||||
|
*/
|
||||||
|
public static function rss_feed($data,$title,$description,$date) {
|
||||||
|
|
||||||
|
$string = "\t<title>$title</title>\n\t<link>" . Config::get('web_path') . "</link>\n\t" .
|
||||||
|
"<pubDate>$date</pubDate>\n";
|
||||||
|
|
||||||
|
// Pass it to the keyed array xml function
|
||||||
|
$string .= self::keyed_array($data);
|
||||||
|
|
||||||
|
$final = self::_header() . $string . self::_footer();
|
||||||
|
|
||||||
|
return $final;
|
||||||
|
|
||||||
|
} // rss_feed
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* _header
|
* _header
|
||||||
* this returns a standard header, there are a few types
|
* this returns a standard header, there are a few types
|
||||||
|
@ -287,15 +317,20 @@ class xmlData {
|
||||||
*/
|
*/
|
||||||
private static function _header($type='') {
|
private static function _header($type='') {
|
||||||
|
|
||||||
switch ($type) {
|
switch (self::$type) {
|
||||||
case 'xspf':
|
case 'xspf':
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case 'itunes':
|
case 'itunes':
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 'rss':
|
||||||
|
$header = "<?xml version=\"1.0\" encoding=\"" . Config::get('site_charset') . "\" ?>\n " .
|
||||||
|
"<!-- RSS Generated by Ampache v." . Config::get('version') . " on " . date("r",time()) . "\n" .
|
||||||
|
"<rss version=\"2.0\">\n\t<channel>\n";
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
$header = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<root>\n";
|
$header = "<?xml version=\"1.0\" encoding=\"" . Config::get('site_charset') . "\" ?>\n<root>\n";
|
||||||
break;
|
break;
|
||||||
} // end switch
|
} // end switch
|
||||||
|
|
||||||
|
@ -309,7 +344,10 @@ class xmlData {
|
||||||
*/
|
*/
|
||||||
private static function _footer($type='') {
|
private static function _footer($type='') {
|
||||||
|
|
||||||
switch ($type) {
|
switch (self::$type) {
|
||||||
|
case 'rss':
|
||||||
|
$footer = "\n\t<channel>\n</rss>\n";
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
$footer = "\n</root>\n";
|
$footer = "\n</root>\n";
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -208,9 +208,6 @@ switch ($type) {
|
||||||
}
|
}
|
||||||
echo "</channel>\n</rss>";
|
echo "</channel>\n</rss>";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
$now_playing = get_now_playing();
|
$now_playing = get_now_playing();
|
||||||
$rss_song_description = $rss_description;
|
$rss_song_description = $rss_description;
|
||||||
|
|
|
@ -53,7 +53,7 @@ function get_now_playing($filter='') {
|
||||||
$song = new Song($r['song_id']);
|
$song = new Song($r['song_id']);
|
||||||
$song->format();
|
$song->format();
|
||||||
$np_user = new User($r['user']);
|
$np_user = new User($r['user']);
|
||||||
$results[] = array('song'=>$song,'user'=>$np_user,'agent'=>$r['agent']);
|
$results[] = array('song'=>$song,'user'=>$np_user,'agent'=>$r['agent'],'expire'=>$r['expire']);
|
||||||
} // end while
|
} // end while
|
||||||
|
|
||||||
return $results;
|
return $results;
|
||||||
|
|
7
rss.php
7
rss.php
|
@ -28,6 +28,12 @@ if (!Config::get('use_rss') || Config::get('demo_mode')) {
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Add in our base hearder defining the content type
|
||||||
|
header("Content-Type: application/xml; charset=" . Config::get('site_charset'));
|
||||||
|
header("Content-Disposition: attachment; filename=rss.xml");
|
||||||
|
|
||||||
|
// This is always going to be an rss feed, so make sure our header and footers are correct
|
||||||
|
xmlData::set_type('rss');
|
||||||
|
|
||||||
switch ($_REQUEST['action']) {
|
switch ($_REQUEST['action']) {
|
||||||
case 'user':
|
case 'user':
|
||||||
|
@ -37,6 +43,7 @@ switch ($_REQUEST['action']) {
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
} // end data collection
|
} // end data collection
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue