diff options
author | Michael Gapczynski <mtgap@owncloud.com> | 2012-07-26 22:53:55 -0400 |
---|---|---|
committer | Michael Gapczynski <mtgap@owncloud.com> | 2012-07-26 22:53:55 -0400 |
commit | d006a551f4a90e9e6ed797cf1357e1b12623f1f6 (patch) | |
tree | 8819112257a377612ef8910f23cfd14893106350 | |
parent | d1dee2843798891463d38a839b2253588db88578 (diff) | |
download | nextcloud-server-d006a551f4a90e9e6ed797cf1357e1b12623f1f6.tar.gz nextcloud-server-d006a551f4a90e9e6ed797cf1357e1b12623f1f6.zip |
Run pre and post proxies for file_put_contents() streams
-rw-r--r-- | lib/filesystemview.php | 67 |
1 files changed, 36 insertions, 31 deletions
diff --git a/lib/filesystemview.php b/lib/filesystemview.php index 3c989d7c36f..e78e5e8ef6e 100644 --- a/lib/filesystemview.php +++ b/lib/filesystemview.php @@ -223,49 +223,54 @@ 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) { + $absolutePath = $this->getAbsolutePath($path); + if (OC_FileProxy::runPreProxies('file_put_contents', $absolutePath) && OC_Filesystem::isValidPath($path)) { + $path = $this->getRelativePath($absolutePath); + $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_create, + OC_Filesystem::signal_write, 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) { + 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_create, + OC_Filesystem::signal_post_write, array( OC_Filesystem::signal_param_path => $path) ); + OC_FileProxy::runPostProxies('hash', $absolutePath, $count); + return $count > 0; + }else{ + return false; } - OC_Hook::emit( - OC_Filesystem::CLASSNAME, - OC_Filesystem::signal_post_write, - array( OC_Filesystem::signal_param_path => $path) - ); - return $count > 0; - }else{ - return false; } }else{ return $this->basicOperation('file_put_contents', $path, array('create', 'write'), $data); |