use filesystem cache for searching
This commit is contained in:
parent
df67c35017
commit
c46f701771
|
@ -79,8 +79,9 @@ class OC_FileCache{
|
|||
$data['versioned']=false;
|
||||
}
|
||||
$mimePart=dirname($data['mimetype']);
|
||||
$query=OC_DB::prepare('INSERT INTO *PREFIX*fscache(parent, name, path, size, mtime, ctime, mimetype, mimepart) VALUES(?,?,?,?,?,?,?,?)');
|
||||
$query->execute(array($parent,basename($path),$path,$data['size'],$data['mtime'],$data['ctime'],$data['mimetype'],$mimePart));
|
||||
$user=OC_User::getUser();
|
||||
$query=OC_DB::prepare('INSERT INTO *PREFIX*fscache(parent, name, path, size, mtime, ctime, mimetype, mimepart,user) VALUES(?,?,?,?,?,?,?,?,?)');
|
||||
$query->execute(array($parent,basename($path),$path,$data['size'],$data['mtime'],$data['ctime'],$data['mimetype'],$mimePart,$user));
|
||||
|
||||
}
|
||||
|
||||
|
@ -133,14 +134,26 @@ class OC_FileCache{
|
|||
/**
|
||||
* return array of filenames matching the querty
|
||||
* @param string $query
|
||||
* @param boolean $returnData
|
||||
* @return array of filepaths
|
||||
*/
|
||||
public static function search($search){
|
||||
$query=OC_DB::prepare('SELECT path FROM *PREFIX*fscache WHERE name LIKE ?');
|
||||
$result=$query->execute(array("%$search%"));
|
||||
public static function search($search,$returnData=false){
|
||||
$root=OC_Filesystem::getRoot();
|
||||
$rootLen=strlen($root);
|
||||
if(!$returnData){
|
||||
$query=OC_DB::prepare('SELECT path FROM *PREFIX*fscache WHERE name LIKE ? AND user=?');
|
||||
}else{
|
||||
$query=OC_DB::prepare('SELECT * FROM *PREFIX*fscache WHERE name LIKE ? AND user=?');
|
||||
}
|
||||
$result=$query->execute(array("%$search%",OC_User::getUser()));
|
||||
$names=array();
|
||||
while($row=$result->fetchRow()){
|
||||
$names[]=$row['path'];
|
||||
if(!$returnData){
|
||||
$names[]=substr($row['path'],$rootLen);
|
||||
}else{
|
||||
$row['path']=substr($row['path'],$rootLen);
|
||||
$names[]=$row;
|
||||
}
|
||||
}
|
||||
return $names;
|
||||
}
|
||||
|
|
|
@ -374,7 +374,7 @@ class OC_Filesystem{
|
|||
}
|
||||
|
||||
static public function search($query){
|
||||
return self::$defaultInstance->search($query);
|
||||
return OC_FileCache::search($query);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -279,23 +279,6 @@ class OC_FilesystemView {
|
|||
return $this->basicOperation('free_space',$path);
|
||||
}
|
||||
|
||||
public function search($query){
|
||||
$files=array();
|
||||
$fakeRoot=$this->$fakeRoot;
|
||||
$fakeRootLength=strlen($fakeRoot);
|
||||
$results=OC_FileCache::search($query);
|
||||
if(is_array($results)){
|
||||
foreach($results as $result){
|
||||
$file=str_replace('//','/',$mountpoint.$result);
|
||||
if(substr($file,0,$fakeRootLength)==$fakeRoot){
|
||||
$file=substr($file,$fakeRootLength);
|
||||
$files[]=$file;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $files;
|
||||
}
|
||||
|
||||
/**
|
||||
* abstraction for running most basic operations
|
||||
* @param string $operation
|
||||
|
|
|
@ -2,14 +2,15 @@
|
|||
|
||||
class OC_Search_Provider_File extends OC_Search_Provider{
|
||||
function search($query){
|
||||
$files=OC_Filesystem::search($query);
|
||||
$files=OC_FileCache::search($query,true);
|
||||
$results=array();
|
||||
foreach($files as $file){
|
||||
if(OC_Filesystem::is_dir($file)){
|
||||
foreach($files as $fileData){
|
||||
$file=$fileData['path'];
|
||||
if($fileData['mime']=='httpd/unix-directory'){
|
||||
$results[]=new OC_Search_Result(basename($file),'',OC_Helper::linkTo( 'files', 'index.php?dir='.$file ),'Files');
|
||||
}else{
|
||||
$mime=OC_Filesystem::getMimeType($file);
|
||||
$mimeBase=substr($mime,0,strpos($mime,'/'));
|
||||
$mime=$fileData['mime'];
|
||||
$mimeBase=$fileData['mimepart'];
|
||||
switch($mimeBase){
|
||||
case 'audio':
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue