diff options
author | Karl 'vollmerk' Vollmer <vollmer@ampache.org> | 2007-12-16 23:52:06 +0000 |
---|---|---|
committer | Karl 'vollmerk' Vollmer <vollmer@ampache.org> | 2007-12-16 23:52:06 +0000 |
commit | 81a854f7ea737ecdb05ebfb5d09209508f34b745 (patch) | |
tree | 33a37cc50b0425e6f6d4e8904c766313e495606f /lib | |
parent | 3887ab1f65fa556368d555e33b5c3e9ab59459da (diff) | |
download | ampache-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')
-rw-r--r-- | lib/class/catalog.class.php | 71 | ||||
-rw-r--r-- | lib/class/preference.class.php | 1 | ||||
-rw-r--r-- | lib/duplicates.php | 120 |
3 files changed, 71 insertions, 121 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 diff --git a/lib/duplicates.php b/lib/duplicates.php deleted file mode 100644 index c6af8c58..00000000 --- a/lib/duplicates.php +++ /dev/null @@ -1,120 +0,0 @@ -<?php -/* - - Copyright (c) 2001 - 2006 Ampache.org - All rights reserved. - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License v2 - as published by the Free Software Foundation. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -*/ - -/** - * get_duplicate_songs - * This function takes a search type and returns a list of all songs that - * are likely to be duplicates based on the search type selected - */ -function get_duplicate_songs($search_type) { - - // Setup the base SQL - $sql = "SELECT song.id as song,artist.name,album.name,title,count(title) as ctitle". - " FROM song,artist,album ". - " WHERE song.artist=artist.id AND song.album=album.id AND song.title<>'' ". - " GROUP BY title"; - - // Additional constraints - if ($search_type=="artist_title"||$search_type=="artist_album_title") { - $sql = $sql.",artist"; - } - - if ($search_type=="artist_album_title") { - $sql = $sql.",album"; - } - - // Final componets - $sql = $sql." HAVING count(title) > 1"; - $sql = $sql." ORDER BY ctitle"; - - $db_results = mysql_query($sql, dbh()); - - $arr = array(); - - while ($flag = mysql_fetch_assoc($db_results)) { - $arr[] = $flag; - } // end while - - return $arr; - -} // get_duplicate_songs - -/** - * get_duplicate_info - * This takes a song, search type and auto flag and returns the duplicate songs in the correct - * order, if AUTO is selected it sorts them by longest, higest bitrate, largest filesize, checking - * the last one as most likely bad - */ -function get_duplicate_info($song,$search_type,$auto='') { - // Get the artist name - $artist = $song->get_artist_name(); - - // Build the SQL - $sql = "SELECT song.id as songid,song.title as song,file,bitrate,size,time," . - "album.name AS album,album.id as albumid, artist.name AS artist,artist.id as artistid". - " FROM song,artist,album ". - " WHERE song.artist=artist.id AND song.album=album.id ". - " AND song.title= '".sql_escape($song->title)."'"; - - if ($search_type == "artist_title" || $search_type == "artist_album_title") { - $sql .=" AND artist.id = '".$song->artist."'"; - } - if ($search_type == "artist_album_title" ) { - $sql .=" AND album.id = '".$song->album."'"; - } - - if ($auto) { - $sql .= " ORDER BY time,bitrate,size"; - } - - $db_results = mysql_query($sql, dbh()); - - $arr = array(); - - while ($flag = mysql_fetch_assoc($db_results)) { - $arr[] = $flag; - } // end while - - return $arr; - -} // get_duplicate_info - -/*! - @function show_duplicate_songs - @discussion -*/ -function show_duplicate_songs($flags,$search_type) { - - require_once(conf('prefix').'/templates/show_list_duplicates.inc.php'); - -} // show_duplicate_songs - -/*! - @function show_duplicate_searchbox - @discussion -*/ -function show_duplicate_searchbox($search_type) { - - require_once(conf('prefix') . '/templates/show_duplicates.inc.php'); - -} // show_duplicate_searchbox - -?> |