From e5792cc064c41c2a5bca32b886a8bc08cce2fb3f Mon Sep 17 00:00:00 2001 From: Bjoern Schiessle Date: Thu, 28 Jun 2012 14:06:20 +0200 Subject: [PATCH] adjust the name and/or location of the stored versions if the actual file gets moved or renamed --- apps/files_versions/appinfo/app.php | 5 +++-- apps/files_versions/versions.php | 25 ++++++++++++++++++++++++- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/apps/files_versions/appinfo/app.php b/apps/files_versions/appinfo/app.php index 5a559c0c96..105c5a102c 100644 --- a/apps/files_versions/appinfo/app.php +++ b/apps/files_versions/appinfo/app.php @@ -9,5 +9,6 @@ OCP\Util::addscript('files_versions', 'versions'); // Listen to write signals OCP\Util::connectHook('OC_Filesystem', 'post_write', "OCA_Versions\Storage", "write_hook"); -// Listen to delete signals -OCP\Util::connectHook('OC_Filesystem', 'delete', "OCA_Versions\Storage", "removeVersions"); \ No newline at end of file +// Listen to delete and rename signals +OCP\Util::connectHook('OC_Filesystem', 'delete', "OCA_Versions\Storage", "removeVersions"); +OCP\Util::connectHook('OC_Filesystem', 'rename', "OCA_Versions\Storage", "renameVersions"); \ No newline at end of file diff --git a/apps/files_versions/versions.php b/apps/files_versions/versions.php index 787de0f78a..b733c57923 100644 --- a/apps/files_versions/versions.php +++ b/apps/files_versions/versions.php @@ -310,7 +310,11 @@ class Storage { } /** - * @brief Erase versions of deleted file + * @brief Erase versions of deleted file + * @param array + * + * This function is connected to the delete signal of OC_Filesystem + * cleanup the versions directory if the actual file gets deleted */ public static function removeVersions($params) { $rel_path = $params[\OC_Filesystem::signal_param_path]; @@ -322,4 +326,23 @@ class Storage { } } } + + /** + * @brief rename/move versions of renamed/moved files + * @param array with oldpath and newpath + * + * This function is connected to the rename signal of OC_Filesystem and adjust the name and location + * of the stored versions along the actual file + */ + public static function renameVersions($params) { + $rel_oldpath = $params['oldpath']; + $abs_oldpath = \OCP\Config::getSystemValue('datadirectory').'/'.\OC_User::getUser()."/versions".$rel_oldpath.'.v'; + $abs_newpath = \OCP\Config::getSystemValue('datadirectory').'/'.\OC_User::getUser()."/versions".$params['newpath'].'.v'; + if(Storage::isversioned($rel_oldpath)) { + $versions = Storage::getVersions($rel_oldpath); + foreach ($versions as $v){ + rename($abs_oldpath.$v['version'], $abs_newpath.$v['version']); + } + } + } }