From 54cbfcbaa1a090cbb09e300a6db4468fb1ea92dc Mon Sep 17 00:00:00 2001 From: Thomas Müller Date: Mon, 18 Jan 2016 22:51:23 +0100 Subject: Add daily cron job to sync system address book --- apps/dav/appinfo/app.php | 1 + apps/dav/appinfo/application.php | 6 ++++++ apps/dav/lib/carddav/syncjob.php | 40 ++++++++++++++++++++++++++++++++++++ apps/dav/lib/carddav/syncservice.php | 6 ++++-- 4 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 apps/dav/lib/carddav/syncjob.php diff --git a/apps/dav/appinfo/app.php b/apps/dav/appinfo/app.php index 5cccab98f17..6f694663934 100644 --- a/apps/dav/appinfo/app.php +++ b/apps/dav/appinfo/app.php @@ -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) { diff --git a/apps/dav/appinfo/application.php b/apps/dav/appinfo/application.php index 3fce53b48bb..41d064c2d83 100644 --- a/apps/dav/appinfo/application.php +++ b/apps/dav/appinfo/application.php @@ -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 index 00000000000..0554af6fbf1 --- /dev/null +++ b/apps/dav/lib/carddav/syncjob.php @@ -0,0 +1,40 @@ + + * + * @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 + * + */ + +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(); + } +} diff --git a/apps/dav/lib/carddav/syncservice.php b/apps/dav/lib/carddav/syncservice.php index 97a46d62501..6412a01b428 100644 --- a/apps/dav/lib/carddav/syncservice.php +++ b/apps/dav/lib/carddav/syncservice.php @@ -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 -- cgit v1.2.3 From 177387b13c6a9f850b1e8b78493c7f74d5dab9e1 Mon Sep 17 00:00:00 2001 From: Thomas Müller Date: Tue, 19 Jan 2016 12:36:23 +0100 Subject: Install cron job on install and update --- apps/dav/appinfo/app.php | 6 ++---- apps/dav/appinfo/install.php | 25 +++++++++++++++++++++++++ apps/dav/appinfo/update.php | 25 +++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 4 deletions(-) create mode 100644 apps/dav/appinfo/install.php create mode 100644 apps/dav/appinfo/update.php diff --git a/apps/dav/appinfo/app.php b/apps/dav/appinfo/app.php index 6f694663934..b5bf9bd0e73 100644 --- a/apps/dav/appinfo/app.php +++ b/apps/dav/appinfo/app.php @@ -19,12 +19,10 @@ * */ -use OCA\DAV\CardDAV\CardDavBackend; -use OCA\DAV\CardDAV\SyncService; +use OCA\Dav\AppInfo\Application; -$app = new \OCA\Dav\AppInfo\Application(); +$app = new Application(); $app->registerHooks(); -$app->setupCron(); \OC::$server->registerService('CardDAVSyncService', function() use ($app) { diff --git a/apps/dav/appinfo/install.php b/apps/dav/appinfo/install.php new file mode 100644 index 00000000000..aaa36052cd2 --- /dev/null +++ b/apps/dav/appinfo/install.php @@ -0,0 +1,25 @@ + + * + * @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 + * + */ + +use OCA\Dav\AppInfo\Application; + +$app = new Application(); +$app->setupCron(); diff --git a/apps/dav/appinfo/update.php b/apps/dav/appinfo/update.php new file mode 100644 index 00000000000..aaa36052cd2 --- /dev/null +++ b/apps/dav/appinfo/update.php @@ -0,0 +1,25 @@ + + * + * @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 + * + */ + +use OCA\Dav\AppInfo\Application; + +$app = new Application(); +$app->setupCron(); -- cgit v1.2.3