diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2016-01-20 07:29:10 +0100 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2016-01-20 07:29:10 +0100 |
commit | 33171f5c780eee0c071924803cd0d5c3a22c10e9 (patch) | |
tree | c9941d0f703f77db13e2cf8261b9f6d87d30450a | |
parent | c13e489fb71fc515fcc64d5d16d418eff06bff80 (diff) | |
parent | 177387b13c6a9f850b1e8b78493c7f74d5dab9e1 (diff) | |
download | nextcloud-server-33171f5c780eee0c071924803cd0d5c3a22c10e9.tar.gz nextcloud-server-33171f5c780eee0c071924803cd0d5c3a22c10e9.zip |
Merge pull request #21785 from owncloud/cron-sync-system-addressbook
Add daily cron job to sync system address book
-rw-r--r-- | apps/dav/appinfo/app.php | 5 | ||||
-rw-r--r-- | apps/dav/appinfo/application.php | 6 | ||||
-rw-r--r-- | apps/dav/appinfo/install.php | 25 | ||||
-rw-r--r-- | apps/dav/appinfo/update.php | 25 | ||||
-rw-r--r-- | apps/dav/lib/carddav/syncjob.php | 40 | ||||
-rw-r--r-- | apps/dav/lib/carddav/syncservice.php | 6 |
6 files changed, 102 insertions, 5 deletions
diff --git a/apps/dav/appinfo/app.php b/apps/dav/appinfo/app.php index 5cccab98f17..b5bf9bd0e73 100644 --- a/apps/dav/appinfo/app.php +++ b/apps/dav/appinfo/app.php @@ -19,10 +19,9 @@ * */ -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(); \OC::$server->registerService('CardDAVSyncService', function() use ($app) { diff --git a/apps/dav/appinfo/application.php b/apps/dav/appinfo/application.php index b681e273b59..2a27dbeb016 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; @@ -95,4 +96,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/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 @@ +<?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/> + * + */ + +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 @@ +<?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/> + * + */ + +use OCA\Dav\AppInfo\Application; + +$app = new Application(); +$app->setupCron(); 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 @@ +<?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(); + } +} diff --git a/apps/dav/lib/carddav/syncservice.php b/apps/dav/lib/carddav/syncservice.php index d66d316f6f7..4b5907620e6 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 |