summaryrefslogtreecommitdiffstats
path: root/lib/class
diff options
context:
space:
mode:
authorKarl 'vollmerk' Vollmer <vollmer@ampache.org>2009-05-17 15:51:29 +0000
committerKarl 'vollmerk' Vollmer <vollmer@ampache.org>2009-05-17 15:51:29 +0000
commit5bd82180f5470c4ce255d02b7aa36c476db1cd99 (patch)
tree496280c39e1099833da59d8aa95f43c5606bd0ec /lib/class
parent26b238a464dd6dcf191a76bacff8b0fd46a6b20c (diff)
downloadampache-5bd82180f5470c4ce255d02b7aa36c476db1cd99.tar.gz
ampache-5bd82180f5470c4ce255d02b7aa36c476db1cd99.tar.bz2
ampache-5bd82180f5470c4ce255d02b7aa36c476db1cd99.zip
some incomplete work cleaning up the api a bit
Diffstat (limited to 'lib/class')
-rw-r--r--lib/class/tag.class.php24
-rw-r--r--lib/class/xmldata.class.php34
2 files changed, 58 insertions, 0 deletions
diff --git a/lib/class/tag.class.php b/lib/class/tag.class.php
index ae1582f8..44d91c9b 100644
--- a/lib/class/tag.class.php
+++ b/lib/class/tag.class.php
@@ -425,6 +425,30 @@ class Tag extends database_object {
} // get_display
/**
+ * count
+ * This returns the count for the all objects assoicated with this tag
+ * If a type is specific only counts for said type are returned
+ */
+ public function count($type='') {
+
+ if ($type) {
+ $filter_sql = " AND `object_type`='" . Dba::escape($type) . "'";
+ }
+
+ $results = array();
+
+ $sql = "SELECT COUNT(`id`) AS `count`,`object_type` FROM `tag_map` WHERE `tag_id`='" . Dba::escape($this->id) . "'" . $filter_sql . " GROUP BY `object_type`";
+ $db_results = Dba::read($sql);
+
+ while ($row = Dba::fetch_assoc($db_results)) {
+ $results[$row['object_type']] = $row['count'];
+ }
+
+ return $results;
+
+ } // count
+
+ /**
* filter_with_prefs
* This filters the tags based on the users preference
*/
diff --git a/lib/class/xmldata.class.php b/lib/class/xmldata.class.php
index 62267c4b..c9a11112 100644
--- a/lib/class/xmldata.class.php
+++ b/lib/class/xmldata.class.php
@@ -170,6 +170,40 @@ class xmlData {
} // keyed_array
/**
+ * tags
+ * This returns tags to the user, in a pretty xml document with the information
+ */
+ public static function tags($tags) {
+
+ if (count($tags) > self::$limit) {
+ $tags = array_splice($tags,self::$offset,self::$limit);
+ }
+
+
+ $string = '';
+
+ foreach ($tags as $tag_id) {
+ $tag = new Tag($tag_id);
+ $counts = $tag->count();
+ $string .= "<tag id=\"$tag_id\">\n" .
+ "\t<name><![CDATA[$tag->name]]></name>\n" .
+ "\t<albums>" . intval($counts['album']) . "</albums>\n" .
+ "\t<artists>" . intval($counts['artist']) . "</artists>\n" .
+ "\t<songs>" . intval($counts['songs']) . "</songs>\n" .
+ "\t<videos>" . intval($counts['video']) . "</video>\n" .
+ "\t<playlists>" . intval($count['playlist']) . "</playlists>\n" .
+ "\t<stream>" . intval($count['live_stream']) . "</stream>\n" .
+ "</tag>\n";
+ } // end foreach
+
+
+ $final = self::_header() . $string . self::_footer();
+
+ return $final;
+
+ } // tags
+
+ /**
* artists
* This takes an array of artists and then returns a pretty xml document with the information
* we want