Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Appelman <icewind1991@gmail.com>2011-09-25 03:34:19 +0400
committerRobin Appelman <icewind1991@gmail.com>2011-09-25 03:34:55 +0400
commit64b68f2474c2101ccd24e06dc78934133753865f (patch)
treefa08d50dd2bf97d06e635925177c673b0ce51a8e
parent6c2b22406c710a82f05d7449a90ba584ffc06a58 (diff)
correctly update the collection when music files are moved around
-rw-r--r--apps/media/ajax/api.php2
-rw-r--r--apps/media/lib_collection.php20
-rw-r--r--apps/media/lib_media.php9
3 files changed, 26 insertions, 5 deletions
diff --git a/apps/media/ajax/api.php b/apps/media/ajax/api.php
index 31ff33bf03a..c5909e4c78b 100644
--- a/apps/media/ajax/api.php
+++ b/apps/media/ajax/api.php
@@ -134,7 +134,7 @@ if($arguments['action']){
}
}
-function findMusic($path='/'){
+function findMusic($path=''){
$music=array();
$dh=OC_Filesystem::opendir($path);
if($dh){
diff --git a/apps/media/lib_collection.php b/apps/media/lib_collection.php
index 273ea2494f8..82c4afedd0a 100644
--- a/apps/media/lib_collection.php
+++ b/apps/media/lib_collection.php
@@ -251,10 +251,12 @@ class OC_MEDIA_COLLECTION{
if($name=='' or $path==''){
return 0;
}
- $uid=$_SESSION['user_id'];
+ $uid=OC_User::getUser();
//check if the song is already in the database
$songId=self::getSongId($name,$artist,$album);
if($songId!=0){
+ $songInfo=self::getSong($songId);
+ self::moveSong($songInfo['song_path'],$path);
return $songId;
}else{
if(!isset(self::$queries['addsong'])){
@@ -357,13 +359,23 @@ class OC_MEDIA_COLLECTION{
*/
public static function getSongByPath($path){
$query=OC_DB::prepare("SELECT song_id FROM *PREFIX*media_songs WHERE song_path = ?");
- $result=$query->execute(array($path))->fetchAll();
- if(count($result)>0){
- return $result[0]['song_id'];
+ $result=$query->execute(array($path));
+ if($row=$result->fetchRow()){
+ return $row['song_id'];
}else{
return 0;
}
}
+
+ /**
+ * set the path of a song
+ * @param string $oldPath
+ * @param string $newPath
+ */
+ public static function moveSong($oldPath,$newPath){
+ $query=OC_DB::prepare("UPDATE *PREFIX*media_songs SET song_path = ? WHERE song_path = ?");
+ $query->execute(array($newPath,$oldPath));
+ }
}
?> \ No newline at end of file
diff --git a/apps/media/lib_media.php b/apps/media/lib_media.php
index 1d8321a774c..7a666be8c27 100644
--- a/apps/media/lib_media.php
+++ b/apps/media/lib_media.php
@@ -30,6 +30,9 @@ OC_Hook::connect('OC_Filesystem','post_write','OC_MEDIA','updateFile');
//listen for file deletions to clean the database if a song is deleted
OC_Hook::connect('OC_Filesystem','delete','OC_MEDIA','deleteFile');
+//list for file moves to update the database
+OC_Hook::connect('OC_Filesystem','post_rename','OC_MEDIA','moveFile');
+
class OC_MEDIA{
/**
* get the sha256 hash of the password needed for ampache
@@ -61,6 +64,7 @@ class OC_MEDIA{
$path=substr($path,1);
}
$path='/'.$path;
+ error_log("$path was updated");
OC_MEDIA_SCANNER::scanFile($path);
}
@@ -72,6 +76,11 @@ class OC_MEDIA{
require_once 'lib_collection.php';
OC_MEDIA_COLLECTION::deleteSongByPath($path);
}
+
+ public static function moveFile($params){
+ require_once 'lib_collection.php';
+ OC_MEDIA_COLLECTION::moveSong($params['oldpath'],$params['newpath']);
+ }
}
class OC_MediaSearchProvider extends OC_Search_Provider{