better handeling of files that can behave like folder (e.g. archives)
This commit is contained in:
parent
4c45483ad3
commit
2e365658c8
5 changed files with 11 additions and 11 deletions
|
@ -40,7 +40,7 @@ OC_App::setActiveNavigationEntry( "files_index" );
|
|||
// Load the files
|
||||
$dir = isset( $_GET['dir'] ) ? stripslashes($_GET['dir']) : '';
|
||||
// Redirect if directory does not exist
|
||||
if(!OC_Filesystem::is_dir($dir)) {
|
||||
if(!OC_Filesystem::is_dir($dir.'/')) {
|
||||
header("Location: ".$_SERVER['PHP_SELF']."");
|
||||
}
|
||||
|
||||
|
|
|
@ -323,10 +323,11 @@ class OC_FileCache{
|
|||
$path=$params['path'];
|
||||
$fullPath=$view->getRoot().$path;
|
||||
$mimetype=$view->getMimeType($path);
|
||||
$dir=$view->is_dir($path.'/');
|
||||
//dont use self::get here, we don't want inifinte loops when a file has changed
|
||||
$cachedSize=self::getCachedSize($path,$root);
|
||||
$size=0;
|
||||
if($mimetype=='httpd/unix-directory'){
|
||||
if($dir){
|
||||
if(self::inCache($path,$root)){
|
||||
$parent=self::getFileId($fullPath);
|
||||
$query=OC_DB::prepare('SELECT size FROM *PREFIX*fscache WHERE parent=?');
|
||||
|
@ -465,13 +466,13 @@ class OC_FileCache{
|
|||
$view=new OC_FilesystemView(($root=='/')?'':$root);
|
||||
}
|
||||
self::scanFile($path,$root);
|
||||
$dh=$view->opendir($path);
|
||||
$dh=$view->opendir($path.'/');
|
||||
$totalSize=0;
|
||||
if($dh){
|
||||
while (($filename = readdir($dh)) !== false) {
|
||||
if($filename != '.' and $filename != '..'){
|
||||
$file=$path.'/'.$filename;
|
||||
if($view->is_dir($file)){
|
||||
if($view->is_dir($file.'/')){
|
||||
if($eventSource){
|
||||
$eventSource->send('scanning',array('file'=>$file,'count'=>$count));
|
||||
}
|
||||
|
|
|
@ -21,7 +21,7 @@ class OC_Filestorage_Local extends OC_Filestorage{
|
|||
return opendir($this->datadir.$path);
|
||||
}
|
||||
public function is_dir($path){
|
||||
return (is_dir($this->datadir.$path) or substr($path,-1)=='/');
|
||||
return @is_dir($this->datadir.$path);
|
||||
}
|
||||
public function is_file($path){
|
||||
return is_file($this->datadir.$path);
|
||||
|
|
|
@ -146,20 +146,15 @@ class OC_Filesystem{
|
|||
* @return string
|
||||
*/
|
||||
static public function getMountPoint($path){
|
||||
OC_Hook::emit(self::CLASSNAME,'get_mountpoint',array('path'=>$path));
|
||||
if(!$path){
|
||||
$path='/';
|
||||
}
|
||||
if(substr($path,0,1)!=='/'){
|
||||
$path='/'.$path;
|
||||
}
|
||||
if(substr($path,-1)!=='/'){
|
||||
$path=$path.'/';
|
||||
}
|
||||
$foundMountPoint='';
|
||||
foreach(OC_Filesystem::$mounts as $mountpoint=>$storage){
|
||||
if(substr($mountpoint,-1)!=='/'){
|
||||
$mountpoint=$mountpoint.'/';
|
||||
}
|
||||
if($mountpoint==$path){
|
||||
return $mountpoint;
|
||||
}
|
||||
|
@ -259,6 +254,9 @@ class OC_Filesystem{
|
|||
* @param string mountpoint
|
||||
*/
|
||||
static public function mount($class,$arguments,$mountpoint){
|
||||
if(substr($mountpoint,-1)!=='/'){
|
||||
$mountpoint=$mountpoint.'/';
|
||||
}
|
||||
if(substr($mountpoint,0,1)!=='/'){
|
||||
$mountpoint='/'.$mountpoint;
|
||||
}
|
||||
|
|
|
@ -205,6 +205,7 @@ class OC_FilesystemView {
|
|||
$count=OC_Helper::streamCopy($data,$target);
|
||||
$storage1=$this->getStorage($path1);
|
||||
$storage1->unlink($this->getInternalPath($path1));
|
||||
$result=$count>0;
|
||||
}
|
||||
OC_Hook::emit( OC_Filesystem::CLASSNAME, OC_Filesystem::signal_post_rename, array( OC_Filesystem::signal_param_oldpath => $path1, OC_Filesystem::signal_param_newpath=>$path2));
|
||||
return $result;
|
||||
|
|
Loading…
Reference in a new issue