summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorKarl 'vollmerk' Vollmer <vollmer@ampache.org>2007-08-06 07:23:42 +0000
committerKarl 'vollmerk' Vollmer <vollmer@ampache.org>2007-08-06 07:23:42 +0000
commit0949ff48904b06438fc4215854d7fa3ba884474e (patch)
tree1ada94218223d74853d17023a919eddf16fac23c /lib
parent0b4194ebf11e2ce8b59563c57a4eeca8c80a70e8 (diff)
downloadampache-0949ff48904b06438fc4215854d7fa3ba884474e.tar.gz
ampache-0949ff48904b06438fc4215854d7fa3ba884474e.tar.bz2
ampache-0949ff48904b06438fc4215854d7fa3ba884474e.zip
fixed find missing tracks, tweaked openstrands class again to account for lack of [[CCDATA tag on some xml responses
Diffstat (limited to 'lib')
-rw-r--r--lib/class/album.class.php41
-rw-r--r--lib/class/metadata.class.php42
2 files changed, 81 insertions, 2 deletions
diff --git a/lib/class/album.class.php b/lib/class/album.class.php
index b72633e3..b47e6b03 100644
--- a/lib/class/album.class.php
+++ b/lib/class/album.class.php
@@ -29,6 +29,7 @@ class Album {
/* Variables from DB */
public $id;
public $name;
+ public $full_name; // Prefix + Name, genereated by format();
public $year;
public $prefix;
@@ -48,7 +49,7 @@ class Album {
* pull the album or thumb art by default or
* get any of the counts.
*/
- function __construct($album_id = 0) {
+ public function __construct($album_id='') {
if (!$album_id) { return false; }
@@ -64,13 +65,32 @@ class Album {
}
// Little bit of formating here
- $this->f_name = trim($info['prefix'] . ' ' . $info['name']);
+ $this->full_name = trim($info['prefix'] . ' ' . $info['name']);
return true;
} //constructor
/**
+ * construct_from_array
+ * This is often used by the metadata class, it fills out an album object from a
+ * named array, _fake is set to true
+ */
+ public static function construct_from_array($data) {
+
+ $album = new Album(0);
+ foreach ($data as $key=>$value) {
+ $album->$key = $value;
+ }
+
+ // Make sure that we tell em it's fake
+ $album->_fake = true;
+
+ return $album;
+
+ } // construct_from_array
+
+ /**
* _get_info
* This is a private function that pulls the album
* from the database
@@ -157,6 +177,23 @@ class Album {
} // has_art
/**
+ * has_track
+ * This checks to see if this album has a track of the specified title
+ */
+ public function has_track($title) {
+
+ $title = Dba::escape($title);
+
+ $sql = "SELECT `id` FROM `song` WHERE `album`='$this->id' AND `title`='$title'";
+ $db_results = Dba::query($sql);
+
+ $data = Dba::fetch_assoc($db_results);
+
+ return $data;
+
+ } // has_track
+
+ /**
* format
* This is the format function for this object. It sets cleaned up
* albumĀ information with the base required
diff --git a/lib/class/metadata.class.php b/lib/class/metadata.class.php
index 30a34f4b..8f5abf2b 100644
--- a/lib/class/metadata.class.php
+++ b/lib/class/metadata.class.php
@@ -85,6 +85,48 @@ class metadata {
} // recommend_similar
+ /**
+ * find_missing_tracks
+ * This returns an array of song objects using the construct_from_array() that are
+ * not in the specified album.
+ */
+ public static function find_missing_tracks($album_id) {
+
+ // Build our object
+ $album = new Album($album_id);
+ $objects = array();
+
+ // For now it's only mystrands
+ OpenStrands::set_auth_token(Config::get('mystrands_developer_key'));
+ $openstrands = new OpenStrands($GLOBALS['user']->prefs['mystrands_user'],$GLOBALS['user']->prefs['mystrands_pass']);
+
+ if (!$openstrands) { return false; }
+
+ // First find the album on mystrands
+ $result = $openstrands->search_albums($album->full_name,'1');
+
+ $mystrands_id = $result['0']['__attributes']['AlbumId'];
+
+ if (!$mystrands_id) { return false; }
+
+ $tracks = $openstrands->lookup_album_tracks($mystrands_id);
+
+ // Recurse the data we've found and check the local album
+ foreach ($tracks as $track) {
+ if (!$album->has_track($track['TrackName'])) {
+ $data['title'] = $track['TrackName'];
+ $data['track'] = $track['TrackNumber'];
+ $data['disc'] = $track['DiscNumber'];
+ $data['artist'] = $track['ArtistName'];
+ $data['links'] = "<a target=\"_blank\" href=\"" . $track['URI'] . "\">" . get_user_icon('world_link','MyStrands') . "</a>";
+ $objects[] = Album::construct_from_array($data);
+ }
+ } // end foreach
+
+ return $objects;
+
+ } // find_missing_tracks
+
} // metadata
?>