public function test() { // insert test data $builder = $this->db->getQueryBuilder(); $builder->insert('contacts_addressbooks')->values(['userid' => $builder->createNamedParameter('test-user-666'), 'displayname' => $builder->createNamedParameter('Display Name'), 'uri' => $builder->createNamedParameter('contacts'), 'description' => $builder->createNamedParameter('An address book for testing'), 'ctag' => $builder->createNamedParameter('112233'), 'active' => $builder->createNamedParameter('1')])->execute(); $builder = $this->db->getQueryBuilder(); $builder->insert('contacts_cards')->values(['addressbookid' => $builder->createNamedParameter(6666), 'fullname' => $builder->createNamedParameter('Full Name'), 'carddata' => $builder->createNamedParameter('datadatadata'), 'uri' => $builder->createNamedParameter('some-card.vcf'), 'lastmodified' => $builder->createNamedParameter('112233')])->execute(); $builder = $this->db->getQueryBuilder(); $builder->insert('share')->values(['share_type' => $builder->createNamedParameter(1), 'share_with' => $builder->createNamedParameter('user01'), 'uid_owner' => $builder->createNamedParameter('user02'), 'item_type' => $builder->createNamedParameter('addressbook'), 'item_source' => $builder->createNamedParameter(6666), 'item_target' => $builder->createNamedParameter('Contacts (user02)')])->execute(); // test the adapter $this->adapter->foreachBook('test-user-666', function ($row) { $this->books[] = $row; }); $this->assertArrayHasKey('id', $this->books[0]); $this->assertEquals('test-user-666', $this->books[0]['userid']); $this->assertEquals('Display Name', $this->books[0]['displayname']); $this->assertEquals('contacts', $this->books[0]['uri']); $this->assertEquals('An address book for testing', $this->books[0]['description']); $this->assertEquals('112233', $this->books[0]['ctag']); $this->adapter->foreachCard(6666, function ($row) { $this->cards[] = $row; }); $this->assertArrayHasKey('id', $this->cards[0]); $this->assertEquals(6666, $this->cards[0]['addressbookid']); // test getShares $shares = $this->adapter->getShares(6666); $this->assertEquals(1, count($shares)); }
/** * @param int $addressBookId * @param int $newAddressBookId */ private function migrateShares($addressBookId, $newAddressBookId) { $shares = $this->adapter->getShares($addressBookId); if (empty($shares)) { return; } $add = array_map(function ($s) { $prefix = 'principal:principals/users/'; if ($s['share_type'] === 1) { $prefix = 'principal:principals/groups/'; } return ['href' => $prefix . $s['share_with']]; }, $shares); $newAddressBook = $this->backend->getAddressBookById($newAddressBookId); $book = new AddressBook($this->backend, $newAddressBook); $this->backend->updateShares($book, $add, []); }