diff --git a/apps/media/ajax/api.php b/apps/media/ajax/api.php index 0ccfb63f41..84d5dd1788 100644 --- a/apps/media/ajax/api.php +++ b/apps/media/ajax/api.php @@ -105,6 +105,9 @@ if($arguments['action']){ $ftype=OC_FILESYSTEM::getMimeType( $arguments['path'] ); + $songId=OC_MEDIA_COLLECTION::getSongByPath($arguments['path']); + OC_MEDIA_COLLECTION::registerPlay($songId); + header('Content-Type:'.$ftype); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); diff --git a/apps/media/appinfo/database.xml b/apps/media/appinfo/database.xml index 91fa1f9e2a..223682fcfc 100644 --- a/apps/media/appinfo/database.xml +++ b/apps/media/appinfo/database.xml @@ -206,6 +206,24 @@ 4 + + song_playcount + integer + + + true + 4 + + + + song_lastplayed + integer + + + true + 4 + + diff --git a/apps/media/lib_collection.php b/apps/media/lib_collection.php index 6e2011675a..278e450b77 100644 --- a/apps/media/lib_collection.php +++ b/apps/media/lib_collection.php @@ -270,7 +270,8 @@ class OC_MEDIA_COLLECTION{ if($songId!=0){ return $songId; }else{ - $query=OC_DB::prepare("INSERT INTO `*PREFIX*media_songs` (`song_id` ,`song_name` ,`song_artist` ,`song_album` ,`song_path` ,`song_user`,`song_length`,`song_track`,`song_size`) VALUES (NULL , ?, ?, ?, ?,?,?,?,?)"); + $query=OC_DB::prepare("INSERT INTO `*PREFIX*media_songs` (`song_id` ,`song_name` ,`song_artist` ,`song_album` ,`song_path` ,`song_user`,`song_length`,`song_track`,`song_size`,`song_playcount`,`song_lastplayed`) + VALUES (NULL , ?, ?, ?, ?,?,?,?,?,0,0)"); $query->execute(array($name,$artist,$album,$path,$uid,$length,$track,$size)); $songId=OC_DB::insertid(); // self::setLastUpdated(); @@ -346,6 +347,31 @@ class OC_MEDIA_COLLECTION{ $query=OC_DB::prepare("DELETE FROM *PREFIX*media_songs WHERE song_path LIKE ?"); $query->execute(array("$path%")); } + + /** + * increase the play count of a song + * @param int songId + */ + public static function registerPlay($songId){ + $now=time(); + $query=OC_DB::prepare('UPDATE *PREFIX*media_songs SET song_playcount=song_playcount+1, song_lastplayed=? WHERE song_id=? AND song_lastplayedexecute(array($now,$songId,$now-60)); + } + + /** + * get the id of the song by path + * @param string $path + * @return int + */ + 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']; + }else{ + return 0; + } + } } ?> \ No newline at end of file