diff --git a/lib/private/files/filesystem.php b/lib/private/files/filesystem.php index 434ee49587..52df1bec61 100644 --- a/lib/private/files/filesystem.php +++ b/lib/private/files/filesystem.php @@ -118,6 +118,22 @@ class Filesystem { */ const signal_post_write = 'post_write'; + /** + * signal emitted before file/dir update + * + * @param string $path + * @param bool $run changing this flag to false in hook handler will cancel event + */ + const signal_update = 'update'; + + /** + * signal emitted after file/dir update + * + * @param string $path + * @param bool $run changing this flag to false in hook handler will cancel event + */ + const signal_post_update = 'post_update'; + /** * signal emits when reading file/dir * diff --git a/lib/private/files/view.php b/lib/private/files/view.php index 31ec8cfacf..1291ed170e 100644 --- a/lib/private/files/view.php +++ b/lib/private/files/view.php @@ -291,6 +291,15 @@ class View { Filesystem::signal_param_run => &$run ) ); + } else { + \OC_Hook::emit( + Filesystem::CLASSNAME, + Filesystem::signal_update, + array( + Filesystem::signal_param_path => $this->getHookPath($path), + Filesystem::signal_param_run => &$run, + ) + ); } \OC_Hook::emit( Filesystem::CLASSNAME, @@ -319,6 +328,12 @@ class View { Filesystem::signal_post_create, array(Filesystem::signal_param_path => $this->getHookPath($path)) ); + } else { + \OC_Hook::emit( + Filesystem::CLASSNAME, + Filesystem::signal_post_update, + array(Filesystem::signal_param_path => $this->getHookPath($path)) + ); } \OC_Hook::emit( Filesystem::CLASSNAME, @@ -335,7 +350,7 @@ class View { return false; } } else { - $hooks = ($this->file_exists($path)) ? array('write') : array('create', 'write'); + $hooks = ($this->file_exists($path)) ? array('update', 'write') : array('create', 'write'); return $this->basicOperation('file_put_contents', $path, $hooks, $data); } } @@ -516,6 +531,15 @@ class View { Filesystem::signal_param_run => &$run ) ); + } elseif ($run) { + \OC_Hook::emit( + Filesystem::CLASSNAME, + Filesystem::signal_update, + array( + Filesystem::signal_param_path => $this->getHookPath($path2), + Filesystem::signal_param_run => &$run, + ) + ); } if ($run) { \OC_Hook::emit( @@ -572,6 +596,12 @@ class View { Filesystem::signal_post_create, array(Filesystem::signal_param_path => $this->getHookPath($path2)) ); + } else { + \OC_Hook::emit( + Filesystem::CLASSNAME, + Filesystem::signal_post_update, + array(Filesystem::signal_param_path => $this->getHookPath($path2)) + ); } \OC_Hook::emit( Filesystem::CLASSNAME,