Emit a new hook, when a file is being updated only

The write-hook also is triggered for created files

Fix #8131
This commit is contained in:
Joas Schilling 2014-04-09 16:42:10 +02:00
parent 158b870589
commit 4fa9e46d2b
2 changed files with 47 additions and 1 deletions

View File

@ -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
*

View File

@ -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,