1
0
Fork 0
mirror of https://github.com/Yetangitu/ampache synced 2025-10-03 09:49:30 +02:00

fixed catalog functions and corrected negative value caching

This commit is contained in:
Karl 'vollmerk' Vollmer 2009-03-08 13:28:43 +00:00
parent ed15ee4a9c
commit 37a348127f
6 changed files with 35 additions and 23 deletions

View file

@ -4,6 +4,9 @@
--------------------------------------------------------------------------
v.3-5-Alpha2
- Fixed caching of objects with no return value
- Fixed updating of songs that should not be updated during catalog
verify
- Added default_user_level config option that allows you to define
the user level when use_auth is false. Also allows manual
login of admin users when use_auth is false.

View file

@ -1057,7 +1057,6 @@ class Catalog extends database_object {
$rename_pattern = $catalog->rename_pattern;
}
debug_event('tag-read','Reading tags from ' . $media->file,'5','ampache-catalog');
$vainfo = new vainfo($media->file,'','','',$sort_pattern,$rename_pattern);
@ -1113,7 +1112,7 @@ class Catalog extends database_object {
$new_song->size = $results['size'];
$new_song->time = $results['time'];
$new_song->mime = $results['mime'];
$new_song->track = $results['track'];
$new_song->track = intval($results['track']);
$artist = $results['artist'];
$album = $results['album'];
$disk = $results['disk'];
@ -1142,7 +1141,7 @@ class Catalog extends database_object {
if ($info['change']) {
debug_event('update',"$song->file difference found, updating database",'5','ampache-catalog');
$song->update_song($song->id,$new_song);
// Redfine our reference
// Refine our reference
$song = $new_song;
}
else {
@ -1755,15 +1754,20 @@ class Catalog extends database_object {
$songs = array();
/* First get the filenames for the catalog */
$sql = "SELECT `id`,`file`,'song' AS `type` FROM `song` WHERE `song`.`catalog`='$catalog_id' ";
$sql = "SELECT `id`,`file`,`artist`,`album`,'song' AS `type` FROM `song` WHERE `song`.`catalog`='$catalog_id' ";
$db_results = Dba::read($sql);
while ($row = Dba::fetch_assoc($db_results)) {
$cache[] = $row['id'];
$artists[] = $row['artist'];
$albums[] = $row['album'];
$songs[] = $row;
}
Song::build_cache($cache);
Flag::build_map_cache($cache,'song');
Tag::build_map_cache('album',$albums);
Tag::build_map_cache('artist',$artists);
Tag::build_map_cache('song',$cache);
$cache = array();
$videos = array();
@ -1801,7 +1805,6 @@ class Catalog extends database_object {
if (is_readable($results['file'])) {
/* Create the object from the existing database information */
$media = new $type($results['id']);
@ -1999,7 +2002,6 @@ class Catalog extends database_object {
// Remove the prefix so we can sort it correctly
$prefix_pattern = '/^(' . implode('\\s|',explode('|',Config::get('catalog_prefix_pattern'))) . '\\s)(.*)/i';
debug_event('prefix',$prefix_pattern,'5');
preg_match($prefix_pattern,$album,$matches);
if (count($matches)) {

View file

@ -63,7 +63,7 @@ abstract class database_object {
public static function is_cached($index,$id) {
// Make sure we've got some parents here before we dive below
if (!isset(self::$object_cache) || !isset(self::$object_cache[$index])) { return false; }
if (!isset(self::$object_cache[$index])) { return false; }
return isset(self::$object_cache[$index][$id]);
@ -76,8 +76,7 @@ abstract class database_object {
public static function get_from_cache($index,$id) {
// Check if the object is set
if (isset(self::$object_cache)
&& isset(self::$object_cache[$index])
if (isset(self::$object_cache[$index])
&& isset(self::$object_cache[$index][$id])
) {
@ -95,8 +94,9 @@ abstract class database_object {
*/
public static function add_to_cache($index,$id,$data) {
self::$object_cache[$index][$id] = $data;
$value = is_null($data) ? false : $data;
self::$object_cache[$index][$id] = $value;
} // add_to_cache
} // end database_object

View file

@ -90,11 +90,16 @@ class Flag extends database_object {
$sql = "SELECT * FROM `flagged` " .
"WHERE `flagged`.`object_type`='$type' AND `flagged`.`object_id` IN $idlist";
$db_results = Dba::read($sql);
while ($row = Dba::fetch_assoc($db_results)) {
parent::add_to_cache('flagged_' . $type,$row['object_id'],$row);
$results[$row['object_id']] = $row;
}
// Itterate through the passed ids as we need to cache 'nulls'
foreach ($ids as $id) {
parent::add_to_cache('flagged_' . $type,$id,$results[$id]);
}
return true;
} // build_map_cache
@ -109,7 +114,7 @@ class Flag extends database_object {
$data = parent::get_from_cache('flagged_' . $type,$id);
return $data['date'];
}
// Ok we have to query this
$type = Dba::escape($type);

View file

@ -322,25 +322,25 @@ class Song extends database_object implements media {
unset($song->catalog,$song->played,$song->enabled,$song->addition_time,$song->update_time,$song->type);
$string_array = array('title','comment','lyrics');
$skip_array = array('id','tag_id','mime');
// Pull out all the currently set vars
$fields = get_object_vars($song);
// Foreach them
foreach ($fields as $key=>$value) {
if ($key == 'id') { continue; }
if (in_array($key,$skip_array)) { continue; }
// If it's a stringie thing
if (in_array($key,$string_array)) {
if (trim(stripslashes($song->$key)) != trim(stripslashes($new_song->$key))) {
$array['change'] = true;
$array['element'][$key] = 'OLD: ' . $song->$key . ' <---> ' . $new_song->$key;
$array['element'][$key] = 'OLD: ' . $song->$key . ' --> ' . $new_song->$key;
}
} // in array of stringies
else {
if ($song->$key != $new_song->$key) {
$array['change'] = true;
$array['element'][$key] = '' . $song->$key . ' <---> ' . $new_song->$key;
$array['element'][$key] = 'OLD:' . $song->$key . ' --> ' . $new_song->$key;
}
} // end else

View file

@ -155,7 +155,7 @@ class Tag extends database_object {
$type = self::validate_type($type);
$idlist = '(' . implode(',',$ids) . ')';
$sql = "SELECT `tag_map`.`tag_id`,`tag_map`.`object_id`,`tag_map`.`user` FROM `tag_map` " .
$sql = "SELECT `tag_map`.`id`,`tag_map`.`tag_id`,`tag_map`.`object_id`,`tag_map`.`user` FROM `tag_map` " .
"WHERE `tag_map`.`object_type`='$type' AND `tag_map`.`object_id` IN $idlist ";
$db_results = Dba::query($sql);
@ -164,11 +164,13 @@ class Tag extends database_object {
while ($row = Dba::fetch_assoc($db_results)) {
$tags[$row['object_id']][$row['tag_id']]['users'][] = $row['user'];
$tags[$row['object_id']][$row['tag_id']]['count']++;
$tag_map[$row['object_id']] = array('id'=>$row['id'],'tag_id'=>$row['tag_id'],'user'=>$row['user'],'object_type'=>$type,'object_id'=>$row['object_id']);
}
// Run through our origional ids as we want to cache NULL results
foreach ($ids as $id) {
parent::add_to_cache('tag_top_' . $type,$id,$tags[$id]);
parent::add_to_cache('tag_map_' . $type,$id,$tag_map[$id]);
}
return true;
@ -180,7 +182,7 @@ class Tag extends database_object {
* This is a wrapper function, it figures out what we need to add, be it a tag
* and map, or just the mapping
*/
public static function add($type,$id,$value,$user='') {
public static function add($type,$id,$value,$user=false) {
// Validate the tag type
if (!self::validate_type($type)) { return false; }
@ -191,7 +193,7 @@ class Tag extends database_object {
if (!strlen($cleaned_value)) { return false; }
$uid = ($user == '') ? intval($user) : intval($GLOBALS['user']->id);
$uid = ($user === false) ? intval($user) : intval($GLOBALS['user']->id);
// Check and see if the tag exists, if not create it, we need the tag id from this
if (!$tag_id = self::tag_exists($cleaned_value)) {
@ -289,7 +291,7 @@ class Tag extends database_object {
public static function tag_map_exists($type,$object_id,$tag_id,$user) {
if (!self::validate_type($type)) { return false; }
if (parent::is_cached('tag_map_' . $type,$object_id)) {
$data = parent::get_from_cache('tag_map_' . $type,$object_id);
return $data['id'];