]> source.dussan.org Git - nextcloud-server.git/commitdiff
Delay initialization of the OC\Encryption\Update - introducing 'OC\Encryption\HookMan...
authorThomas Müller <thomas.mueller@tmit.eu>
Fri, 17 Apr 2015 11:55:31 +0000 (13:55 +0200)
committerThomas Müller <thomas.mueller@tmit.eu>
Fri, 17 Apr 2015 11:55:31 +0000 (13:55 +0200)
lib/base.php
lib/private/encryption/hookmanager.php [new file with mode: 0644]

index 80f2736fcf6ed69646186fb37d6ee2e420aa0196..7e6183520e1c0bdc6789da665d28d3c446550072 100644 (file)
@@ -718,25 +718,8 @@ class OC {
        private static function registerEncryptionHooks() {
                $enabled = self::$server->getEncryptionManager()->isEnabled();
                if ($enabled) {
-                       $user = \OC::$server->getUserSession()->getUser();
-                       $uid = '';
-                       if ($user) {
-                               $uid = $user->getUID();
-                       }
-                       $updater = new \OC\Encryption\Update(
-                               new \OC\Files\View(),
-                               new \OC\Encryption\Util(
-                                       new \OC\Files\View(),
-                                       \OC::$server->getUserManager(),
-                                       \OC::$server->getGroupManager(),
-                                       \OC::$server->getConfig()),
-                               \OC\Files\Filesystem::getMountManager(),
-                               \OC::$server->getEncryptionManager(),
-                               \OC::$server->getEncryptionFilesHelper(),
-                               $uid
-                       );
-                       \OCP\Util::connectHook('OCP\Share', 'post_shared', $updater, 'postShared');
-                       \OCP\Util::connectHook('OCP\Share', 'post_unshare', $updater, 'postUnshared');
+                       \OCP\Util::connectHook('OCP\Share', 'post_shared', 'OC\Encryption\HookManager', 'postShared');
+                       \OCP\Util::connectHook('OCP\Share', 'post_unshare', 'OC\Encryption\HookManager', 'postUnshared');
                }
        }
 
diff --git a/lib/private/encryption/hookmanager.php b/lib/private/encryption/hookmanager.php
new file mode 100644 (file)
index 0000000..c62583b
--- /dev/null
@@ -0,0 +1,66 @@
+<?php
+/**
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
+ *
+ * @copyright Copyright (c) 2015, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OC\Encryption;
+
+use OC\Files\Filesystem;
+use OC\Files\View;
+
+class HookManager {
+       /**
+        * @var Update
+        */
+       private static $updater;
+
+       public static function postShared($params) {
+               self::getUpdate()->postShared($params);
+       }
+       public static function postUnshared($params) {
+               self::getUpdate()->postUnshared($params);
+       }
+
+       /**
+        * @return Update
+        */
+       private static function getUpdate() {
+               if (is_null(self::$updater)) {
+                       $user = \OC::$server->getUserSession()->getUser();
+                       $uid = '';
+                       if ($user) {
+                               $uid = $user->getUID();
+                       }
+                       self::$updater = new Update(
+                               new View(),
+                               new Util(
+                                       new View(),
+                                       \OC::$server->getUserManager(),
+                                       \OC::$server->getGroupManager(),
+                                       \OC::$server->getConfig()),
+                               Filesystem::getMountManager(),
+                               \OC::$server->getEncryptionManager(),
+                               \OC::$server->getEncryptionFilesHelper(),
+                               $uid
+                       );
+               }
+
+               return self::$updater;
+       }
+}