Signed-off-by: Georg Ehrke <developer@georgehrke.com>tags/v20.0.0beta1
@@ -281,12 +281,7 @@ class AddressBookImpl implements IAddressBook { | |||
} | |||
} | |||
if ( | |||
$this->addressBookInfo['principaluri'] === 'principals/system/system' && ( | |||
$this->addressBookInfo['uri'] === 'system' || | |||
$this->addressBookInfo['{DAV:}displayname'] === $this->urlGenerator->getBaseUrl() | |||
) | |||
) { | |||
if ($this->isSystemAddressBook()) { | |||
$result['isLocalSystemBook'] = true; | |||
} | |||
return $result; | |||
@@ -309,4 +304,26 @@ class AddressBookImpl implements IAddressBook { | |||
return null; | |||
} | |||
/** | |||
* @inheritDoc | |||
*/ | |||
public function isShared(): bool { | |||
if (!isset($this->addressBookInfo['{http://owncloud.org/ns}owner-principal'])) { | |||
return false; | |||
} | |||
return $this->addressBookInfo['principaluri'] | |||
!== $this->addressBookInfo['{http://owncloud.org/ns}owner-principal']; | |||
} | |||
/** | |||
* @inheritDoc | |||
*/ | |||
public function isSystemAddressBook(): bool { | |||
return $this->addressBookInfo['principaluri'] === 'principals/system/system' && ( | |||
$this->addressBookInfo['uri'] === 'system' || | |||
$this->addressBookInfo['{DAV:}displayname'] === $this->urlGenerator->getBaseUrl() | |||
); | |||
} | |||
} |
@@ -447,4 +447,63 @@ class AddressBookImplTest extends TestCase { | |||
'isLocalSystemBook' => true, | |||
], $array); | |||
} | |||
public function testIsSystemAddressBook(): void { | |||
$addressBookInfo = [ | |||
'{http://owncloud.org/ns}owner-principal' => 'principals/system/system', | |||
'principaluri' => 'principals/system/system', | |||
'{DAV:}displayname' => 'display name', | |||
'id' => 666, | |||
'uri' => 'system', | |||
]; | |||
$addressBookImpl = new AddressBookImpl( | |||
$this->addressBook, | |||
$addressBookInfo, | |||
$this->backend, | |||
$this->urlGenerator | |||
); | |||
$this->assertTrue($addressBookImpl->isSystemAddressBook()); | |||
} | |||
public function testIsShared(): void { | |||
$addressBookInfo = [ | |||
'{http://owncloud.org/ns}owner-principal' => 'user1', | |||
'{DAV:}displayname' => 'Test address book', | |||
'principaluri' => 'user2', | |||
'id' => 666, | |||
'uri' => 'default', | |||
]; | |||
$addressBookImpl = new AddressBookImpl( | |||
$this->addressBook, | |||
$addressBookInfo, | |||
$this->backend, | |||
$this->urlGenerator | |||
); | |||
$this->assertFalse($addressBookImpl->isSystemAddressBook()); | |||
$this->assertTrue($addressBookImpl->isShared()); | |||
} | |||
public function testIsNotShared(): void { | |||
$addressBookInfo = [ | |||
'{http://owncloud.org/ns}owner-principal' => 'user1', | |||
'{DAV:}displayname' => 'Test address book', | |||
'principaluri' => 'user1', | |||
'id' => 666, | |||
'uri' => 'default', | |||
]; | |||
$addressBookImpl = new AddressBookImpl( | |||
$this->addressBook, | |||
$addressBookInfo, | |||
$this->backend, | |||
$this->urlGenerator | |||
); | |||
$this->assertFalse($addressBookImpl->isSystemAddressBook()); | |||
$this->assertFalse($addressBookImpl->isShared()); | |||
} | |||
} |
@@ -107,5 +107,20 @@ namespace OCP { | |||
* @since 5.0.0 | |||
*/ | |||
public function delete($id); | |||
/** | |||
* Returns true if this address-book is not owned by the current user, | |||
* but shared with them. | |||
* | |||
* @return bool | |||
* @since 20.0.0 | |||
*/ | |||
public function isShared(): bool; | |||
/** | |||
* @return bool | |||
* @since 20.0.0 | |||
*/ | |||
public function isSystemAddressBook(): bool; | |||
} | |||
} |