]> source.dussan.org Git - nextcloud-server.git/commitdiff
Add daily cron job to sync system address book
authorThomas Müller <thomas.mueller@tmit.eu>
Mon, 18 Jan 2016 21:51:23 +0000 (22:51 +0100)
committerThomas Müller <thomas.mueller@tmit.eu>
Mon, 18 Jan 2016 21:51:23 +0000 (22:51 +0100)
apps/dav/appinfo/app.php
apps/dav/appinfo/application.php
apps/dav/lib/carddav/syncjob.php [new file with mode: 0644]
apps/dav/lib/carddav/syncservice.php

index 5cccab98f17f2cbc9fe367f425b7e0a65ea76424..6f6946639345d20e5960e430989247e147047b8a 100644 (file)
@@ -24,6 +24,7 @@ use OCA\DAV\CardDAV\SyncService;
 
 $app = new \OCA\Dav\AppInfo\Application();
 $app->registerHooks();
+$app->setupCron();
 
 \OC::$server->registerService('CardDAVSyncService', function() use ($app) {
 
index 3fce53b48bb63bbd8c9c5a44aef3c747ef27228a..41d064c2d83cb2dab684351662a0dcfa8e46938b 100644 (file)
@@ -22,6 +22,7 @@ namespace OCA\Dav\AppInfo;
 
 use OCA\DAV\CardDAV\CardDavBackend;
 use OCA\DAV\CardDAV\ContactsManager;
+use OCA\DAV\CardDAV\SyncJob;
 use OCA\DAV\CardDAV\SyncService;
 use OCA\DAV\HookManager;
 use \OCP\AppFramework\App;
@@ -94,4 +95,9 @@ class Application extends App {
                return $this->getContainer()->query('SyncService');
        }
 
+       public function setupCron() {
+               $jl = $this->getContainer()->getServer()->getJobList();
+               $jl->add(new SyncJob());
+       }
+
 }
diff --git a/apps/dav/lib/carddav/syncjob.php b/apps/dav/lib/carddav/syncjob.php
new file mode 100644 (file)
index 0000000..0554af6
--- /dev/null
@@ -0,0 +1,40 @@
+<?php
+/**
+ * @author Thomas Müller <thomas.mueller@tmit.eu>
+ *
+ * @copyright Copyright (c) 2016, 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 OCA\DAV\CardDAV;
+
+use OC\BackgroundJob\TimedJob;
+use OCA\Dav\AppInfo\Application;
+
+class SyncJob extends TimedJob {
+
+       public function __construct() {
+               // Run once a day
+               $this->setInterval(24 * 60 * 60);
+       }
+
+       protected function run($argument) {
+               $app = new Application();
+               /** @var SyncService $ss */
+               $ss = $app->getSyncService();
+               $ss->syncInstance();
+       }
+}
index 97a46d62501c532c4fa941cf5d04afc34432c08c..6412a01b428a85411724ad2db33feac88a655e46 100644 (file)
@@ -240,11 +240,13 @@ class SyncService {
                return $this->localSystemAddressBook;
        }
 
-       public function syncInstance(\Closure $progressCallback) {
+       public function syncInstance(\Closure $progressCallback = null) {
                $systemAddressBook = $this->getLocalSystemAddressBook();
                $this->userManager->callForAllUsers(function($user) use ($systemAddressBook, $progressCallback) {
                        $this->updateUser($user);
-                       $progressCallback();
+                       if (!is_null($progressCallback)) {
+                               $progressCallback();
+                       }
                });
 
                // remove no longer existing