From 0b7685d326279fd822a161fb29c2256e2ad01c50 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Thomas=20M=C3=BCller?= Date: Thu, 16 Jun 2016 16:14:28 +0200 Subject: [PATCH] Move birthday calendar generation to a live migration job (#25135) --- apps/dav/appinfo/info.xml | 3 + apps/dav/appinfo/install.php | 26 -------- apps/dav/appinfo/update.php | 26 -------- apps/dav/lib/AppInfo/Application.php | 25 +++---- apps/dav/lib/Migration/GenerateBirthdays.php | 70 ++++++++++++++++++++ 5 files changed, 84 insertions(+), 66 deletions(-) delete mode 100644 apps/dav/appinfo/install.php delete mode 100644 apps/dav/appinfo/update.php create mode 100644 apps/dav/lib/Migration/GenerateBirthdays.php diff --git a/apps/dav/appinfo/info.xml b/apps/dav/appinfo/info.xml index 26e37e6bb86..df147a032fe 100644 --- a/apps/dav/appinfo/info.xml +++ b/apps/dav/appinfo/info.xml @@ -24,5 +24,8 @@ OCA\DAV\Migration\Classification + + OCA\DAV\Migration\GenerateBirthdays + diff --git a/apps/dav/appinfo/install.php b/apps/dav/appinfo/install.php deleted file mode 100644 index d2ee06cc9fe..00000000000 --- a/apps/dav/appinfo/install.php +++ /dev/null @@ -1,26 +0,0 @@ - - * @author Thomas Müller - * - * @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->generateBirthdays(); diff --git a/apps/dav/appinfo/update.php b/apps/dav/appinfo/update.php deleted file mode 100644 index d2ee06cc9fe..00000000000 --- a/apps/dav/appinfo/update.php +++ /dev/null @@ -1,26 +0,0 @@ - - * @author Thomas Müller - * - * @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->generateBirthdays(); diff --git a/apps/dav/lib/AppInfo/Application.php b/apps/dav/lib/AppInfo/Application.php index 9e0d2da4e17..de2056ebc35 100644 --- a/apps/dav/lib/AppInfo/Application.php +++ b/apps/dav/lib/AppInfo/Application.php @@ -32,6 +32,7 @@ use OCA\DAV\Connector\Sabre\Principal; use OCA\DAV\DAV\GroupPrincipalBackend; use OCA\DAV\HookManager; use OCA\DAV\Migration\Classification; +use OCA\DAV\Migration\GenerateBirthdays; use \OCP\AppFramework\App; use OCP\AppFramework\IAppContainer; use OCP\Contacts\IManager; @@ -116,6 +117,16 @@ class Application extends App { $c->getServer()->getUserManager() ); }); + + $container->registerService('OCA\DAV\Migration\GenerateBirthdays', function ($c) { + /** @var IAppContainer $c */ + /** @var BirthdayService $b */ + $b = $c->query('BirthdayService'); + return new GenerateBirthdays( + $b, + $c->getServer()->getUserManager() + ); + }); } /** @@ -164,18 +175,4 @@ class Application extends App { return $this->getContainer()->query('SyncService'); } - public function generateBirthdays() { - try { - /** @var BirthdayService $migration */ - $migration = $this->getContainer()->query('BirthdayService'); - $userManager = $this->getContainer()->getServer()->getUserManager(); - - $userManager->callForAllUsers(function($user) use($migration) { - /** @var IUser $user */ - $migration->syncUser($user->getUID()); - }); - } catch (\Exception $ex) { - $this->getContainer()->getServer()->getLogger()->logException($ex); - } - } } diff --git a/apps/dav/lib/Migration/GenerateBirthdays.php b/apps/dav/lib/Migration/GenerateBirthdays.php new file mode 100644 index 00000000000..dfc8838bcbb --- /dev/null +++ b/apps/dav/lib/Migration/GenerateBirthdays.php @@ -0,0 +1,70 @@ + + * + * @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\Migration; + +use OCA\DAV\CalDAV\BirthdayService; +use OCP\IUser; +use OCP\IUserManager; +use OCP\Migration\IOutput; +use OCP\Migration\IRepairStep; + +class GenerateBirthdays implements IRepairStep { + + /** @var BirthdayService */ + private $birthdayService; + + /** @var IUserManager */ + private $userManager; + + /** + * GenerateBirthdays constructor. + * + * @param BirthdayService $birthdayService + * @param IUserManager $userManager + */ + public function __construct(BirthdayService $birthdayService, IUserManager $userManager) { + $this->birthdayService = $birthdayService; + $this->userManager = $userManager; + } + + /** + * @inheritdoc + */ + public function getName() { + return 'Regenerate birthday calendar for all users'; + } + + /** + * @inheritdoc + */ + public function run(IOutput $output) { + + $output->startProgress(); + $this->userManager->callForAllUsers(function($user) use ($output) { + /** @var IUser $user */ + $output->advance(1, $user->getDisplayName()); + $this->birthdayService->syncUser($user->getUID()); + }); + $output->finishProgress(); + } +} -- 2.39.5