summaryrefslogtreecommitdiffstats
path: root/lib/filesystemview.php
diff options
context:
space:
mode:
authorRobin Appelman <icewind@owncloud.com>2012-04-25 00:09:14 +0200
committerRobin Appelman <icewind@owncloud.com>2012-04-25 00:12:12 +0200
commit9015c46e317842184b414bce9192b62b969a5202 (patch)
treef8e51bbb27a0a73ea537e2fddb0f2505324cdc58 /lib/filesystemview.php
parent60b924c954ac880f5d17ce91f733850c5b010e0f (diff)
downloadnextcloud-server-9015c46e317842184b414bce9192b62b969a5202.tar.gz
nextcloud-server-9015c46e317842184b414bce9192b62b969a5202.zip
emit the correct hooks for file_put_contents and some readfile improvements
Diffstat (limited to 'lib/filesystemview.php')
-rw-r--r--lib/filesystemview.php19
1 files changed, 16 insertions, 3 deletions
diff --git a/lib/filesystemview.php b/lib/filesystemview.php
index 95873bd87cf..ac5a0a3bff5 100644
--- a/lib/filesystemview.php
+++ b/lib/filesystemview.php
@@ -136,15 +136,16 @@ class OC_FilesystemView {
return $this->basicOperation('filesize',$path);
}
public function readfile($path){
+ @ob_end_clean();
$handle=$this->fopen($path,'r');
if ($handle) {
- $chunkSize = 1024*1024;// 1 MB chunks
+ $chunkSize = 8*1024;// 1 MB chunks
while (!feof($handle)) {
echo fread($handle, $chunkSize);
- @ob_flush();
flush();
}
- return $this->filesize($path);
+ $size=$this->filesize($path);
+ return $size;
}
return false;
}
@@ -174,11 +175,23 @@ class OC_FilesystemView {
}
public function file_put_contents($path,$data){
if(is_resource($data)){//not having to deal with streams in file_put_contents makes life easier
+ $exists=$this->file_exists($path);
+ $run=true;
+ 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_Filesystem::CLASSNAME, OC_Filesystem::signal_write, array( OC_Filesystem::signal_param_path => $path, OC_Filesystem::signal_param_run => &$run));
+ if(!$run){
+ return false;
+ }
$target=$this->fopen($path,'w');
if($target){
$count=OC_Helper::streamCopy($data,$target);
fclose($target);
fclose($data);
+ if(!$exists){
+ OC_Hook::emit( OC_Filesystem::CLASSNAME, OC_Filesystem::signal_post_create, 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));
return $count>0;
}else{