Sabre\CardDAV\Backend\PDO::createAddressBook PHP Method

createAddressBook() public method

Creates a new address book
public createAddressBook ( string $principalUri, string $url, array $properties ) : void
$principalUri string
$url string Just the 'basename' of the url.
$properties array
return void
    function createAddressBook($principalUri, $url, array $properties)
    {
        $values = ['displayname' => null, 'description' => null, 'principaluri' => $principalUri, 'uri' => $url];
        foreach ($properties as $property => $newValue) {
            switch ($property) {
                case '{DAV:}displayname':
                    $values['displayname'] = $newValue;
                    break;
                case '{' . CardDAV\Plugin::NS_CARDDAV . '}addressbook-description':
                    $values['description'] = $newValue;
                    break;
                default:
                    throw new DAV\Exception\BadRequest('Unknown property: ' . $property);
            }
        }
        $query = 'INSERT INTO ' . $this->addressBooksTableName . ' (uri, displayname, description, principaluri, synctoken) VALUES (:uri, :displayname, :description, :principaluri, 1)';
        $stmt = $this->pdo->prepare($query);
        $stmt->execute($values);
        return $this->pdo->lastInsertId();
    }

Usage Example

Example #1
0
 function testCreateAddressBookSuccess()
 {
     $this->backend->createAddressBook('principals/user1', 'book2', ['{DAV:}displayname' => 'book2', '{' . CardDAV\Plugin::NS_CARDDAV . '}addressbook-description' => 'addressbook 2']);
     $expected = [['id' => 1, 'uri' => 'book1', 'principaluri' => 'principals/user1', '{DAV:}displayname' => 'book1', '{' . CardDAV\Plugin::NS_CARDDAV . '}addressbook-description' => 'addressbook 1', '{http://calendarserver.org/ns/}getctag' => 1, '{http://sabredav.org/ns}sync-token' => 1], ['id' => 2, 'uri' => 'book2', 'principaluri' => 'principals/user1', '{DAV:}displayname' => 'book2', '{' . CardDAV\Plugin::NS_CARDDAV . '}addressbook-description' => 'addressbook 2', '{http://calendarserver.org/ns/}getctag' => 1, '{http://sabredav.org/ns}sync-token' => 1]];
     $result = $this->backend->getAddressBooksForUser('principals/user1');
     $this->assertEquals($expected, $result);
 }
All Usage Examples Of Sabre\CardDAV\Backend\PDO::createAddressBook