diff options
author | Joas Schilling <nickvergessen@gmx.de> | 2014-04-09 16:42:10 +0200 |
---|---|---|
committer | Joas Schilling <nickvergessen@gmx.de> | 2014-04-29 10:34:26 +0200 |
commit | 4fa9e46d2b92c03e81c0ffeaebfd28d400bacf0c (patch) | |
tree | 2a23231fbe03a40c37fab8717d2556ef880a8aa9 | |
parent | 158b870589b45f460334c6f9dbe7ec673c6ba138 (diff) | |
download | nextcloud-server-4fa9e46d2b92c03e81c0ffeaebfd28d400bacf0c.tar.gz nextcloud-server-4fa9e46d2b92c03e81c0ffeaebfd28d400bacf0c.zip |
Emit a new hook, when a file is being updated only
The write-hook also is triggered for created files
Fix #8131
-rw-r--r-- | lib/private/files/filesystem.php | 16 | ||||
-rw-r--r-- | lib/private/files/view.php | 32 |
2 files changed, 47 insertions, 1 deletions
diff --git a/lib/private/files/filesystem.php b/lib/private/files/filesystem.php index 434ee495870..52df1bec611 100644 --- a/lib/private/files/filesystem.php +++ b/lib/private/files/filesystem.php @@ -119,6 +119,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 * * @param string $path diff --git a/lib/private/files/view.php b/lib/private/files/view.php index 31ec8cfacff..1291ed170e8 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, |