dont trigger filesystem hooks when not using the default view

This commit is contained in:
Robin Appelman 2012-09-17 22:12:17 +02:00
parent 7749875a0d
commit 82ffefb99b
1 changed files with 84 additions and 72 deletions

View File

@ -263,24 +263,26 @@ class OC_FilesystemView {
$path = $this->getRelativePath($absolutePath); $path = $this->getRelativePath($absolutePath);
$exists = $this->file_exists($path); $exists = $this->file_exists($path);
$run = true; $run = true;
if(!$exists) { if( $this->fakeRoot==OC_Filesystem::getRoot() ){
if(!$exists) {
OC_Hook::emit(
OC_Filesystem::CLASSNAME,
OC_Filesystem::signal_create,
array(
OC_Filesystem::signal_param_path => $path,
OC_Filesystem::signal_param_run => &$run
)
);
}
OC_Hook::emit( OC_Hook::emit(
OC_Filesystem::CLASSNAME, OC_Filesystem::CLASSNAME,
OC_Filesystem::signal_create, OC_Filesystem::signal_write,
array( array(
OC_Filesystem::signal_param_path => $path, OC_Filesystem::signal_param_path => $path,
OC_Filesystem::signal_param_run => &$run OC_Filesystem::signal_param_run => &$run
) )
); );
} }
OC_Hook::emit(
OC_Filesystem::CLASSNAME,
OC_Filesystem::signal_write,
array(
OC_Filesystem::signal_param_path => $path,
OC_Filesystem::signal_param_run => &$run
)
);
if(!$run) { if(!$run) {
return false; return false;
} }
@ -289,18 +291,20 @@ class OC_FilesystemView {
$count=OC_Helper::streamCopy($data, $target); $count=OC_Helper::streamCopy($data, $target);
fclose($target); fclose($target);
fclose($data); fclose($data);
if(!$exists) { if( $this->fakeRoot==OC_Filesystem::getRoot() ){
if(!$exists) {
OC_Hook::emit(
OC_Filesystem::CLASSNAME,
OC_Filesystem::signal_post_create,
array( OC_Filesystem::signal_param_path => $path)
);
}
OC_Hook::emit( OC_Hook::emit(
OC_Filesystem::CLASSNAME, OC_Filesystem::CLASSNAME,
OC_Filesystem::signal_post_create, OC_Filesystem::signal_post_write,
array( OC_Filesystem::signal_param_path => $path) array( OC_Filesystem::signal_param_path => $path)
); );
} }
OC_Hook::emit(
OC_Filesystem::CLASSNAME,
OC_Filesystem::signal_post_write,
array( OC_Filesystem::signal_param_path => $path)
);
OC_FileProxy::runPostProxies('file_put_contents', $absolutePath, $count); OC_FileProxy::runPostProxies('file_put_contents', $absolutePath, $count);
return $count > 0; return $count > 0;
}else{ }else{
@ -330,14 +334,16 @@ class OC_FilesystemView {
return false; return false;
} }
$run=true; $run=true;
OC_Hook::emit( if( $this->fakeRoot==OC_Filesystem::getRoot() ){
OC_Filesystem::CLASSNAME, OC_Filesystem::signal_rename, OC_Hook::emit(
array( OC_Filesystem::CLASSNAME, OC_Filesystem::signal_rename,
OC_Filesystem::signal_param_oldpath => $path1, array(
OC_Filesystem::signal_param_newpath => $path2, OC_Filesystem::signal_param_oldpath => $path1,
OC_Filesystem::signal_param_run => &$run OC_Filesystem::signal_param_newpath => $path2,
) OC_Filesystem::signal_param_run => &$run
); )
);
}
if($run) { if($run) {
$mp1 = $this->getMountPoint($path1.$postFix1); $mp1 = $this->getMountPoint($path1.$postFix1);
$mp2 = $this->getMountPoint($path2.$postFix2); $mp2 = $this->getMountPoint($path2.$postFix2);
@ -353,14 +359,16 @@ class OC_FilesystemView {
$storage1->unlink($this->getInternalPath($path1.$postFix1)); $storage1->unlink($this->getInternalPath($path1.$postFix1));
$result = $count>0; $result = $count>0;
} }
OC_Hook::emit( if( $this->fakeRoot==OC_Filesystem::getRoot() ){
OC_Filesystem::CLASSNAME, OC_Hook::emit(
OC_Filesystem::signal_post_rename, OC_Filesystem::CLASSNAME,
array( OC_Filesystem::signal_post_rename,
OC_Filesystem::signal_param_oldpath => $path1, array(
OC_Filesystem::signal_param_newpath => $path2 OC_Filesystem::signal_param_oldpath => $path1,
) OC_Filesystem::signal_param_newpath => $path2
); )
);
}
return $result; return $result;
} }
} }
@ -378,35 +386,37 @@ class OC_FilesystemView {
return false; return false;
} }
$run=true; $run=true;
OC_Hook::emit( if( $this->fakeRoot==OC_Filesystem::getRoot() ){
OC_Filesystem::CLASSNAME,
OC_Filesystem::signal_copy,
array(
OC_Filesystem::signal_param_oldpath => $path1,
OC_Filesystem::signal_param_newpath=>$path2,
OC_Filesystem::signal_param_run => &$run
)
);
$exists=$this->file_exists($path2);
if($run and !$exists) {
OC_Hook::emit( OC_Hook::emit(
OC_Filesystem::CLASSNAME, OC_Filesystem::CLASSNAME,
OC_Filesystem::signal_create, OC_Filesystem::signal_copy,
array( array(
OC_Filesystem::signal_param_path => $path2, OC_Filesystem::signal_param_oldpath => $path1,
OC_Filesystem::signal_param_run => &$run OC_Filesystem::signal_param_newpath=>$path2,
)
);
}
if($run) {
OC_Hook::emit(
OC_Filesystem::CLASSNAME,
OC_Filesystem::signal_write,
array(
OC_Filesystem::signal_param_path => $path2,
OC_Filesystem::signal_param_run => &$run OC_Filesystem::signal_param_run => &$run
) )
); );
$exists=$this->file_exists($path2);
if($run and !$exists) {
OC_Hook::emit(
OC_Filesystem::CLASSNAME,
OC_Filesystem::signal_create,
array(
OC_Filesystem::signal_param_path => $path2,
OC_Filesystem::signal_param_run => &$run
)
);
}
if($run) {
OC_Hook::emit(
OC_Filesystem::CLASSNAME,
OC_Filesystem::signal_write,
array(
OC_Filesystem::signal_param_path => $path2,
OC_Filesystem::signal_param_run => &$run
)
);
}
} }
if($run) { if($run) {
$mp1=$this->getMountPoint($path1.$postFix1); $mp1=$this->getMountPoint($path1.$postFix1);
@ -420,26 +430,28 @@ class OC_FilesystemView {
$target = $this->fopen($path2.$postFix2, 'w'); $target = $this->fopen($path2.$postFix2, 'w');
$result = OC_Helper::streamCopy($source, $target); $result = OC_Helper::streamCopy($source, $target);
} }
OC_Hook::emit( if( $this->fakeRoot==OC_Filesystem::getRoot() ){
OC_Filesystem::CLASSNAME,
OC_Filesystem::signal_post_copy,
array(
OC_Filesystem::signal_param_oldpath => $path1,
OC_Filesystem::signal_param_newpath=>$path2
)
);
if(!$exists) {
OC_Hook::emit( OC_Hook::emit(
OC_Filesystem::CLASSNAME, OC_Filesystem::CLASSNAME,
OC_Filesystem::signal_post_create, OC_Filesystem::signal_post_copy,
array(OC_Filesystem::signal_param_path => $path2) array(
OC_Filesystem::signal_param_oldpath => $path1,
OC_Filesystem::signal_param_newpath=>$path2
)
);
if(!$exists) {
OC_Hook::emit(
OC_Filesystem::CLASSNAME,
OC_Filesystem::signal_post_create,
array(OC_Filesystem::signal_param_path => $path2)
);
}
OC_Hook::emit(
OC_Filesystem::CLASSNAME,
OC_Filesystem::signal_post_write,
array( OC_Filesystem::signal_param_path => $path2)
); );
} }
OC_Hook::emit(
OC_Filesystem::CLASSNAME,
OC_Filesystem::signal_post_write,
array( OC_Filesystem::signal_param_path => $path2)
);
return $result; return $result;
} }
} }