summaryrefslogtreecommitdiffstats
path: root/lib/class
diff options
context:
space:
mode:
authorKarl 'vollmerk' Vollmer <vollmer@ampache.org>2007-12-16 23:52:06 +0000
committerKarl 'vollmerk' Vollmer <vollmer@ampache.org>2007-12-16 23:52:06 +0000
commit81a854f7ea737ecdb05ebfb5d09209508f34b745 (patch)
tree33a37cc50b0425e6f6d4e8904c766313e495606f /lib/class
parent3887ab1f65fa556368d555e33b5c3e9ab59459da (diff)
downloadampache-81a854f7ea737ecdb05ebfb5d09209508f34b745.tar.gz
ampache-81a854f7ea737ecdb05ebfb5d09209508f34b745.tar.bz2
ampache-81a854f7ea737ecdb05ebfb5d09209508f34b745.zip
fixed the find duplicates stuff, its actually still broken somewhat but it mostly works so why not commit eah?
Diffstat (limited to 'lib/class')
-rw-r--r--lib/class/catalog.class.php71
-rw-r--r--lib/class/preference.class.php1
2 files changed, 71 insertions, 1 deletions
diff --git a/lib/class/catalog.class.php b/lib/class/catalog.class.php
index 39c2c7ea..d5e8535f 100644
--- a/lib/class/catalog.class.php
+++ b/lib/class/catalog.class.php
@@ -791,6 +791,77 @@ class Catalog {
} //get_files
/**
+ * get_duplicate_songs
+ * This function takes a search type and returns a list of all song_ids that
+ * are likely to be duplicates based on teh search method selected.
+ */
+ public static function get_duplicate_songs($search_method) {
+
+ // Setup the base SQL
+ $sql = "SELECT song.id AS song,artist.id AS artist,album.id AS album,title,COUNT(title) AS ctitle".
+ " FROM `song` LEFT JOIN `artist` ON `artist`.`id`=`song`.`artist` " .
+ " LEFT JOIN `album` ON `album`.`id`=`song`.`album` ".
+ " GROUP BY song.title";
+
+ // Add any Additional constraints
+ if ($search_method == "artist_title" OR $search_method == "artist_album_title") {
+ $sql = $sql.",artist.name";
+ }
+
+ if ($search_method == "artist_album_title") {
+ $sql = $sql.",album.name";
+ }
+
+ // Final componets
+ $sql = $sql." HAVING COUNT(title) > 1";
+ $sql = $sql." ORDER BY `ctitle`";
+
+ $db_results = Dba::query($sql);
+
+ $results = array();
+
+ while ($item = Dba::fetch_assoc($db_results)) {
+ $results[] = $item;
+ } // end while
+
+ return $results;
+
+ } // get_duplicate_songs
+
+ /**
+ * get_duplicate_info
+ * This takes a song, search type and auto flag and returns the duplicate songs in the correct
+ * order, it sorts them by longest, higest bitrate, largest filesize, checking
+ * the last one as most likely bad
+ */
+ public static function get_duplicate_info($item,$search_type) {
+ // Build the SQL
+ $sql = "SELECT `song`.`id`" .
+ " FROM song,artist,album".
+ " WHERE song.artist=artist.id AND song.album=album.id".
+ " AND song.title= '".Dba::escape($item['title'])."'";
+
+ if ($search_type == "artist_title" || $search_type == "artist_album_title") {
+ $sql .=" AND artist.id = '".Dba::escape($item['artist'])."'";
+ }
+ if ($search_type == "artist_album_title" ) {
+ $sql .=" AND album.id = '".Dba::escape($item['album'])."'";
+ }
+
+ $sql .= " ORDER BY `time`,`bitrate`,`size` LIMIT 2";
+ $db_results = Dba::query($sql);
+
+ $results = array();
+
+ while ($item = Dba::fetch_assoc($db_results)) {
+ $results[] = $item['id'];
+ } // end while
+
+ return $results;
+
+ } // get_duplicate_info
+
+ /**
* dump_album_art (Added by Cucumber 20050216)
* This runs through all of the albums and trys to dump the
* art for them into the 'folder.jpg' file in the appropriate dir
diff --git a/lib/class/preference.class.php b/lib/class/preference.class.php
index 71b714fc..da4242c8 100644
--- a/lib/class/preference.class.php
+++ b/lib/class/preference.class.php
@@ -341,7 +341,6 @@ class Preference {
Config::set_by_array($results,1);
-
} // init