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');
     $this->cardDavBackend->createAddressBook("principals/users/{$user}", $name, []);
 }
示例#2
0
 /**
  * @param string $principal
  * @param string $id
  * @param array $properties
  * @return array|null
  * @throws \Sabre\DAV\Exception\BadRequest
  */
 protected function ensureSystemAddressBookExists($principal, $id, $properties)
 {
     $book = $this->backend->getAddressBooksByUri($id);
     if (!is_null($book)) {
         return $book;
     }
     $this->backend->createAddressBook($principal, $id, $properties);
     return $this->backend->getAddressBooksByUri($id);
 }
示例#3
0
 /**
  * @param string $user
  */
 public function migrateForUser($user)
 {
     $this->adapter->foreachBook($user, function ($book) use($user) {
         $principal = "principals/users/{$user}";
         $knownBooks = $this->backend->getAddressBooksByUri($principal, $book['uri']);
         if (!is_null($knownBooks)) {
             return;
         }
         $newId = $this->backend->createAddressBook($principal, $book['uri'], ['{DAV:}displayname' => $book['displayname'], '{' . Plugin::NS_CARDDAV . '}addressbook-description' => $book['description']]);
         $this->migrateBook($book['id'], $newId);
         $this->migrateShares($book['id'], $newId);
     });
 }
 protected function ensureSystemAddressBookExists()
 {
     $book = $this->backend->getAddressBooksByUri('system');
     if (!is_null($book)) {
         return $book;
     }
     $systemPrincipal = "principals/system/system";
     $this->backend->createAddressBook($systemPrincipal, 'system', ['{' . Plugin::NS_CARDDAV . '}addressbook-description' => 'System addressbook which holds all users of this instance']);
     return $this->backend->getAddressBooksByUri('system');
 }
示例#5
0
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $user = $input->getArgument('user');
     if (!$this->userManager->userExists($user)) {
         throw new \InvalidArgumentException("User <{$user}> in unknown.");
     }
     $principalBackend = new Principal($this->userManager, $this->groupManager);
     $name = $input->getArgument('name');
     $carddav = new CardDavBackend($this->dbConnection, $principalBackend, $this->logger);
     $carddav->createAddressBook("principals/users/{$user}", $name, []);
 }
示例#6
0
 public function createProjectBook()
 {
     $principal = 'principals/users/' . $this->fakeUser;
     $book = $this->getProjectBook();
     if (empty($book)) {
         try {
             $this->cardDavBackend->createAddressBook($principal, 'project_contacts', ['{DAV:}displayname' => 'Project Contacts']);
             $projectBook = $this->getProjectBook();
             $users = $this->connect->users()->getAllIds();
             if (!empty($projectBook['id']) && is_array($users)) {
                 foreach ($users as $user) {
                     if ($user['uid'] == $this->fakeUser) {
                         continue;
                     }
                     $this->insertCard($projectBook['id'], $user['uid']);
                 }
             }
         } catch (\Exception $ex) {
             \OC::$server->getLogger()->logException($ex);
         }
     }
 }
示例#7
0
 public function testSyncSupport()
 {
     // create a new address book
     $this->backend->createAddressBook(self::UNIT_TEST_USER, 'Example', []);
     $books = $this->backend->getAddressBooksForUser(self::UNIT_TEST_USER);
     $this->assertEquals(1, count($books));
     $bookId = $books[0]['id'];
     // fist call without synctoken
     $changes = $this->backend->getChangesForAddressBook($bookId, '', 1);
     $syncToken = $changes['syncToken'];
     // add a change
     $uri0 = $this->getUniqueID('card');
     $this->backend->createCard($bookId, $uri0, '');
     // look for changes
     $changes = $this->backend->getChangesForAddressBook($bookId, $syncToken, 1);
     $this->assertEquals($uri0, $changes['added'][0]);
 }
 public function testSharing()
 {
     $this->backend->createAddressBook(self::UNIT_TEST_USER, 'Example', []);
     $books = $this->backend->getAddressBooksForUser(self::UNIT_TEST_USER);
     $this->assertEquals(1, count($books));
     $this->backend->updateShares('Example', [['href' => 'principal:principals/best-friend']], []);
     $shares = $this->backend->getShares('Example');
     $this->assertEquals(1, count($shares));
     // adding the same sharee again has no effect
     $this->backend->updateShares('Example', [['href' => 'principal:principals/best-friend']], []);
     $shares = $this->backend->getShares('Example');
     $this->assertEquals(1, count($shares));
     $books = $this->backend->getAddressBooksForUser('principals/best-friend');
     $this->assertEquals(1, count($books));
     $this->backend->updateShares('Example', [], [['href' => 'principal:principals/best-friend']]);
     $shares = $this->backend->getShares('Example');
     $this->assertEquals(0, count($shares));
     $books = $this->backend->getAddressBooksForUser('principals/best-friend');
     $this->assertEquals(0, count($books));
 }
示例#9
0
 public function postLogin($params)
 {
     $user = $this->userManager->get($params['uid']);
     $principal = 'principals/users/' . $user->getUID();
     $calendars = $this->calDav->getCalendarsForUser($principal);
     if (empty($calendars)) {
         try {
             $this->calDav->createCalendar($principal, 'default', []);
         } catch (\Exception $ex) {
             \OC::$server->getLogger()->logException($ex);
         }
     }
     $books = $this->cardDav->getAddressBooksForUser($principal);
     if (empty($books)) {
         try {
             $this->cardDav->createAddressBook($principal, 'default', []);
         } catch (\Exception $ex) {
             \OC::$server->getLogger()->logException($ex);
         }
     }
 }
示例#10
0
 public function postLogin($params)
 {
     $user = $this->userManager->get($params['uid']);
     if (!is_null($user)) {
         $principal = 'principals/users/' . $user->getUID();
         $calendars = $this->calDav->getCalendarsForUser($principal);
         if (empty($calendars) || count($calendars) === 1 && $calendars[0]['uri'] === BirthdayService::BIRTHDAY_CALENDAR_URI) {
             try {
                 $this->calDav->createCalendar($principal, 'personal', ['{DAV:}displayname' => 'Personal']);
             } catch (\Exception $ex) {
                 \OC::$server->getLogger()->logException($ex);
             }
         }
         $books = $this->cardDav->getAddressBooksForUser($principal);
         if (empty($books)) {
             try {
                 $this->cardDav->createAddressBook($principal, 'contacts', ['{DAV:}displayname' => 'Contacts']);
             } catch (\Exception $ex) {
                 \OC::$server->getLogger()->logException($ex);
             }
         }
     }
 }