diff options
author | Morris Jobke <hey@morrisjobke.de> | 2017-12-12 08:29:26 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-12-12 08:29:26 +0100 |
commit | d98dea1eb139ae33dfce28f5c61b140518ef4d1d (patch) | |
tree | 6bd1527425761a5b9c6657874e573f9a4ae8a38d /apps/dav/lib/Command | |
parent | e1740c92421d9f6e05210c1cd69811e429f88410 (diff) | |
parent | 2b51d84b98a5a44c2a42a8498164a35b6822e760 (diff) | |
download | nextcloud-server-d98dea1eb139ae33dfce28f5c61b140518ef4d1d.tar.gz nextcloud-server-d98dea1eb139ae33dfce28f5c61b140518ef4d1d.zip |
Merge pull request #6884 from nextcloud/feature/3003/opt_out_of_birthday_calendar
Opt out of birthday calendar
Diffstat (limited to 'apps/dav/lib/Command')
-rw-r--r-- | apps/dav/lib/Command/SyncBirthdayCalendar.php | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/apps/dav/lib/Command/SyncBirthdayCalendar.php b/apps/dav/lib/Command/SyncBirthdayCalendar.php index a99e2ea4b89..88f85a98812 100644 --- a/apps/dav/lib/Command/SyncBirthdayCalendar.php +++ b/apps/dav/lib/Command/SyncBirthdayCalendar.php @@ -23,6 +23,7 @@ namespace OCA\DAV\Command; use OCA\DAV\CalDAV\BirthdayService; +use OCP\IConfig; use OCP\IUser; use OCP\IUserManager; use Symfony\Component\Console\Command\Command; @@ -36,16 +37,22 @@ class SyncBirthdayCalendar extends Command { /** @var BirthdayService */ private $birthdayService; + /** @var IConfig */ + private $config; + /** @var IUserManager */ private $userManager; /** * @param IUserManager $userManager + * @param IConfig $config * @param BirthdayService $birthdayService */ - function __construct(IUserManager $userManager, BirthdayService $birthdayService) { + function __construct(IUserManager $userManager, IConfig $config, + BirthdayService $birthdayService) { parent::__construct(); $this->birthdayService = $birthdayService; + $this->config = $config; $this->userManager = $userManager; } @@ -63,11 +70,21 @@ class SyncBirthdayCalendar extends Command { * @param OutputInterface $output */ protected function execute(InputInterface $input, OutputInterface $output) { + $this->verifyEnabled(); + $user = $input->getArgument('user'); if (!is_null($user)) { if (!$this->userManager->userExists($user)) { throw new \InvalidArgumentException("User <$user> in unknown."); } + + // re-enable the birthday calendar in case it's called directly with a user name + $isEnabled = $this->config->getUserValue($user, 'dav', 'generateBirthdayCalendar', 'yes'); + if ($isEnabled !== 'yes') { + $this->config->setUserValue($user, 'dav', 'generateBirthdayCalendar', 'yes'); + $output->writeln("Re-enabling birthday calendar for $user"); + } + $output->writeln("Start birthday calendar sync for $user"); $this->birthdayService->syncUser($user); return; @@ -77,6 +94,13 @@ class SyncBirthdayCalendar extends Command { $p->start(); $this->userManager->callForAllUsers(function($user) use ($p) { $p->advance(); + + $userId = $user->getUID(); + $isEnabled = $this->config->getUserValue($userId, 'dav', 'generateBirthdayCalendar', 'yes'); + if ($isEnabled !== 'yes') { + return; + } + /** @var IUser $user */ $this->birthdayService->syncUser($user->getUID()); }); @@ -84,4 +108,12 @@ class SyncBirthdayCalendar extends Command { $p->finish(); $output->writeln(''); } + + protected function verifyEnabled () { + $isEnabled = $this->config->getAppValue('dav', 'generateBirthdayCalendar', 'yes'); + + if ($isEnabled !== 'yes') { + throw new \InvalidArgumentException('Birthday calendars are disabled'); + } + } } |