summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoas Schilling <nickvergessen@gmx.de>2014-04-09 16:42:10 +0200
committerJoas Schilling <nickvergessen@gmx.de>2014-04-29 10:34:26 +0200
commit4fa9e46d2b92c03e81c0ffeaebfd28d400bacf0c (patch)
tree2a23231fbe03a40c37fab8717d2556ef880a8aa9
parent158b870589b45f460334c6f9dbe7ec673c6ba138 (diff)
downloadnextcloud-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.php16
-rw-r--r--lib/private/files/view.php32
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,