. * */ //we need to have the sha256 hash of passwords for ampache OC_Hook::connect('OC_User','post_login','OC_MEDIA','loginListener'); //connect to the filesystem for auto updating if configured if(OC_Preferences::getValue(OC_User::getUser(),'media','autoupdate',false)){ 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'); class OC_MEDIA{ /** * get the sha256 hash of the password needed for ampache * @param array $params, parameters passed from OC_Hook */ public static function loginListener($params){ if(isset($_POST['user']) and $_POST['password']){ error_log('postlogin'); $name=$_POST['user']; $query=OC_DB::prepare("SELECT user_id from *PREFIX*media_users WHERE user_id LIKE ?"); $uid=$query->execute(array($name))->fetchAll(); if(count($uid)==0){ $password=hash('sha256',$_POST['password']); $query=OC_DB::prepare("INSERT INTO *PREFIX*media_users (user_id, user_password_sha256) VALUES (?, ?);"); $query->execute(array($name,$password)); } } } /** * */ public static function updateFile($params){ $path=$params['path']; $folderNames=explode(PATH_SEPARATOR,OC_Preferences::getValue(OC_User::getUser(),'media','paths','')); foreach($folderNames as $folder){ if(substr($path,0,strlen($folder))==$folder){ require_once 'lib_scanner.php'; require_once 'lib_collection.php'; //fix a bug where there were multiply '/' in front of the path, it should only be one while($path[0]=='/'){ $path=substr($path,1); } $path='/'.$path; error_log($path); OC_MEDIA_SCANNER::scanFile($path); } } } /** * */ public static function deleteFile($params){ $path=$params['path']; require_once 'lib_collection.php'; OC_MEDIA_COLLECTION::deleteSongByPath($path); } } class OC_MediaSearchProvider extends OC_Search_Provider{ function search($query){ require_once('lib_collection.php'); $artists=OC_MEDIA_COLLECTION::getArtists($query); $albums=OC_MEDIA_COLLECTION::getAlbums(0,$query); $songs=OC_MEDIA_COLLECTION::getSongs(0,0,$query); $results=array(); foreach($artists as $artist){ $results[]=new OC_Search_Result($artist['artist_name'],'',OC_Helper::linkTo( 'apps/media', 'index.php#artist='.urlencode($artist['artist_name']) ),'Music'); } foreach($albums as $album){ $artist=OC_MEDIA_COLLECTION::getArtistName($album['album_artist']); $results[]=new OC_Search_Result($album['album_name'],'by '.$artist,OC_Helper::linkTo( 'apps/media', 'index.php#artist='.urlencode($artist).'&album='.urlencode($album['album_name']) ),'Music'); } foreach($songs as $song){ $minutes=floor($song['song_length']/60); $secconds=$song['song_length']%60; $artist=OC_MEDIA_COLLECTION::getArtistName($song['song_artist']); $album=OC_MEDIA_COLLECTION::getalbumName($song['song_album']); $results[]=new OC_Search_Result($song['song_name'],"by $artist, in $album $minutes:$secconds",OC_Helper::linkTo( 'apps/media', 'index.php#artist='.urlencode($artist).'&album='.urlencode($album).'&song='.urlencode($song['song_name']) ),'Music'); } return $results; } } new OC_MediaSearchProvider(); ?>