From c4aef892788ced15812cc31abcf34c085b66ce5a Mon Sep 17 00:00:00 2001 From: Björn Schießle Date: Thu, 27 Jun 2013 14:09:22 +0200 Subject: introduce pre-disable-app hook and use it for the encryption app to reset migration status if the app was disabled --- apps/files_encryption/appinfo/app.php | 3 +++ apps/files_encryption/hooks/hooks.php | 13 +++++++++++++ apps/files_encryption/lib/helper.php | 9 +++++++++ 3 files changed, 25 insertions(+) (limited to 'apps/files_encryption') diff --git a/apps/files_encryption/appinfo/app.php b/apps/files_encryption/appinfo/app.php index d97811bb791..ca3f2554e5e 100644 --- a/apps/files_encryption/appinfo/app.php +++ b/apps/files_encryption/appinfo/app.php @@ -22,6 +22,9 @@ if (!OC_Config::getValue('maintenance', false)) { // Filesystem related hooks OCA\Encryption\Helper::registerFilesystemHooks(); + // App manager related hooks + OCA\Encryption\Helper::registerAppHooks(); + stream_wrapper_register('crypt', 'OCA\Encryption\Stream'); // check if we are logged in diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index e39e068cc5d..09153918940 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -543,4 +543,17 @@ class Hooks { \OC_FileProxy::$enabled = $proxyStatus; } + + /** + * set migration status back to '0' so that all new files get encrypted + * if the app gets enabled again + * @param array $params contains the app ID + */ + public static function preDisable($params) { + if ($params['app'] === 'files_encryption') { + $query = \OC_DB::prepare('UPDATE `*PREFIX*encryption` SET `migration_status`=0'); + $query->execute(); + } + } + } diff --git a/apps/files_encryption/lib/helper.php b/apps/files_encryption/lib/helper.php index a22c139c503..b2045bfcea8 100755 --- a/apps/files_encryption/lib/helper.php +++ b/apps/files_encryption/lib/helper.php @@ -62,6 +62,15 @@ class Helper { \OCP\Util::connectHook('OC_Filesystem', 'post_rename', 'OCA\Encryption\Hooks', 'postRename'); } + /** + * @brief register filesystem related hooks + * + */ + public static function registerAppHooks() { + + \OCP\Util::connectHook('OC_App', 'pre_disable', 'OCA\Encryption\Hooks', 'preDisable'); + } + /** * @brief setup user for files_encryption * -- cgit v1.2.3