From 20e37bd38f8e1291079f3d006f6e369d826a4463 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thomas=20M=C3=BCller?= <thomas.mueller@tmit.eu>
Date: Thu, 5 Nov 2015 11:37:31 +0100
Subject: [PATCH] Adding occ command to create an addressbook

---
 apps/dav/appinfo/register_command.php  |  8 ++++
 apps/dav/command/createaddressbook.php | 52 ++++++++++++++++++++++++++
 2 files changed, 60 insertions(+)
 create mode 100644 apps/dav/appinfo/register_command.php
 create mode 100644 apps/dav/command/createaddressbook.php

diff --git a/apps/dav/appinfo/register_command.php b/apps/dav/appinfo/register_command.php
new file mode 100644
index 0000000000..c996dd4406
--- /dev/null
+++ b/apps/dav/appinfo/register_command.php
@@ -0,0 +1,8 @@
+<?php
+
+use OCA\DAV\Command\CreateAddressBook;
+
+$dbConnection = \OC::$server->getDatabaseConnection();
+$userManager = OC::$server->getUserManager();
+/** @var Symfony\Component\Console\Application $application */
+$application->add(new CreateAddressBook($userManager, $dbConnection));
diff --git a/apps/dav/command/createaddressbook.php b/apps/dav/command/createaddressbook.php
new file mode 100644
index 0000000000..286871b39e
--- /dev/null
+++ b/apps/dav/command/createaddressbook.php
@@ -0,0 +1,52 @@
+<?php
+
+namespace OCA\DAV\Command;
+
+use OCA\DAV\CardDAV\CardDavBackend;
+use OCP\IDBConnection;
+use OCP\IUserManager;
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputArgument;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Output\OutputInterface;
+
+class CreateAddressBook extends Command {
+
+	/** @var IUserManager */
+	protected $userManager;
+
+	/** @var \OCP\IDBConnection */
+	protected $dbConnection;
+
+	/**
+	 * @param IUserManager $userManager
+	 * @param IDBConnection $dbConnection
+	 */
+	function __construct(IUserManager $userManager, IDBConnection $dbConnection) {
+		parent::__construct();
+		$this->userManager = $userManager;
+		$this->dbConnection = $dbConnection;
+	}
+
+	protected function configure() {
+		$this
+			->setName('dav:create-addressbook')
+			->setDescription('Create a dav addressbook')
+			->addArgument('user',
+				InputArgument::REQUIRED,
+				'User for whom the addressbook will be created')
+			->addArgument('name',
+				InputArgument::REQUIRED,
+				'Name of the addressbook');
+	}
+
+	protected function execute(InputInterface $input, OutputInterface $output) {
+		$user = $input->getArgument('user');
+		if (!$this->userManager->userExists($user)) {
+			throw new \InvalidArgumentException("User <$user> in unknown.");
+		}
+		$name = $input->getArgument('name');
+		$carddav = new CardDavBackend($this->dbConnection);
+		$carddav->createAddressBook("principals/$user", $name, []);
+	}
+}
-- 
GitLab