|
|
|
|
@ -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'); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|