1
0
mirror of https://github.com/owncloudarchive/contacts.git synced 2025-01-18 07:52:21 +01:00

Contacts: Don't mix possible permissions with actual permissions.

This commit is contained in:
Thomas Tanghus 2013-05-05 22:21:42 +02:00
parent 73055dffd4
commit 49f728a86a
3 changed files with 21 additions and 6 deletions

View File

@ -110,7 +110,8 @@ class Addressbook extends AbstractPIMCollection {
* @return int * @return int
*/ */
public function getPermissions() { public function getPermissions() {
return min($this->addressBookInfo['permissions'], $this->backend->getAddressBookPermissions()); return $this->addressBookInfo['permissions'];
//return min($this->addressBookInfo['permissions'], $this->backend->getAddressBookPermissions());
} }
function getBackend() { function getBackend() {
@ -186,6 +187,9 @@ class Addressbook extends AbstractPIMCollection {
if(!$this->hasPermission(\OCP\PERMISSION_CREATE)) { if(!$this->hasPermission(\OCP\PERMISSION_CREATE)) {
throw new \Exception('Access denied'); throw new \Exception('Access denied');
} }
if(!$this->getBackend()->hasContactMethodFor(\OCP\PERMISSION_CREATE)) {
throw new \Exception('Not implemented');
}
$contact = new Contact($this, $this->backend, $data); $contact = new Contact($this, $this->backend, $data);
if($contact->save() === false) { if($contact->save() === false) {
return false; return false;
@ -208,6 +212,9 @@ class Addressbook extends AbstractPIMCollection {
if(!$this->hasPermission(\OCP\PERMISSION_DELETE)) { if(!$this->hasPermission(\OCP\PERMISSION_DELETE)) {
throw new \Exception('Access denied'); throw new \Exception('Access denied');
} }
if(!$this->getBackend()->hasContactMethodFor(\OCP\PERMISSION_DELETE)) {
throw new \Exception('Not implemented');
}
if($this->backend->deleteContact($this->getId(), $id)) { if($this->backend->deleteContact($this->getId(), $id)) {
if(isset($this->objects[$id])) { if(isset($this->objects[$id])) {
unset($this->objects[$id]); unset($this->objects[$id]);

View File

@ -86,6 +86,7 @@ abstract class AbstractBackend {
} }
} }
\OCP\Util::writeLog('contacts', __METHOD__.', permissions' . $permissions, \OCP\Util::DEBUG);
return $permissions; return $permissions;
} }
@ -104,6 +105,7 @@ abstract class AbstractBackend {
} }
} }
\OCP\Util::writeLog('contacts', __METHOD__.', permissions' . $permissions, \OCP\Util::DEBUG);
return $permissions; return $permissions;
} }
@ -115,7 +117,7 @@ abstract class AbstractBackend {
* Returns the supported actions as int to be * Returns the supported actions as int to be
* compared with \OCP\PERMISSION_CREATE etc. * compared with \OCP\PERMISSION_CREATE etc.
*/ */
public function hasContactPermission($permission) { public function hasContactMethodFor($permission) {
return (bool)($this->getContactPermissions() & $permission); return (bool)($this->getContactPermissions() & $permission);
} }
@ -127,7 +129,7 @@ abstract class AbstractBackend {
* Returns the supported actions as int to be * Returns the supported actions as int to be
* compared with \OCP\PERMISSION_CREATE etc. * compared with \OCP\PERMISSION_CREATE etc.
*/ */
public function hasAddressBooksPermission($permission) { public function hasAddressBooksMethodFor($permission) {
return (bool)($this->getAddressBooksPermissions() & $permission); return (bool)($this->getAddressBooksPermissions() & $permission);
} }

View File

@ -88,7 +88,7 @@ class Contact extends VObject\VCard implements IPIMObject {
case 'displayname': case 'displayname':
case 'fullname': case 'fullname':
$this->props['displayname'] = $value; $this->props['displayname'] = $value;
$this->FN = $value; //$this->FN = $value;
break; break;
} }
} }
@ -247,7 +247,10 @@ class Contact extends VObject\VCard implements IPIMObject {
$this->props['displayname'] = (string)$this->FN; $this->props['displayname'] = (string)$this->FN;
} }
if($this->getId()) { if($this->getId()) {
if($this->props['backend'] if(!$this->getBackend()->hasContactMethodFor(\OCP\PERMISSION_UPDATE)) {
throw new \Exception('Not implemented');
}
if($this->getBackend()
->updateContact( ->updateContact(
$this->getParent()->getId(), $this->getParent()->getId(),
$this->getId(), $this->getId(),
@ -262,7 +265,10 @@ class Contact extends VObject\VCard implements IPIMObject {
} }
} else { } else {
//print(__METHOD__.' ' . print_r($this->getParent(), true)); //print(__METHOD__.' ' . print_r($this->getParent(), true));
$this->props['id'] = $this->props['backend']->createContact( if(!$this->getBackend()->hasContactMethodFor(\OCP\PERMISSION_CREATE)) {
throw new \Exception('Not implemented');
}
$this->props['id'] = $this->getBackend()->createContact(
$this->getParent()->getId(), $this $this->getParent()->getId(), $this
); );
$this->setSaved(true); $this->setSaved(true);