1
0
mirror of https://github.com/owncloudarchive/contacts.git synced 2024-11-29 11:24:11 +01:00
OwncloudContactsOfficial/lib/addressbook.php

165 lines
3.6 KiB
PHP
Raw Normal View History

2011-08-06 22:32:06 +02:00
<?php
/**
* ownCloud - Addressbook
*
2013-03-12 09:15:40 +01:00
* @author Thomas Tanghus
* @copyright 2013 Thomas Tanghus (thomas@tanghus.net)
2011-08-06 22:32:06 +02:00
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
* License as published by the Free Software Foundation; either
* version 3 of the License, or any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
*
* You should have received a copy of the GNU Affero General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
*/
2012-10-25 03:34:12 +02:00
namespace OCA\Contacts;
2011-08-06 22:32:06 +02:00
/**
* This class manages our addressbooks.
*/
2013-03-12 09:15:40 +01:00
class Addressbook extends PIMCollectionAbstract {
/**
* An array containing the mandatory:
* 'displayname'
* 'discription'
* 'permissions'
*
* And the optional:
* 'Etag'
* 'lastModified'
*
* @var string
*/
protected $addressBookInfo;
/**
* @param AbstractBackend $backend The storage backend
* @param array $addressBookInfo
*/
public function __construct(AbstractBackend $backend, array $addressBookInfo) {
$this->backend = $backend;
$this->addressBookInfo = $addressBookInfo;
}
/**
* @return string
*/
public function getId() {
return $this->addressBookInfo['id'];
}
/**
* @return string
*/
public function getDisplayName() {
return $this->addressBookInfo['displayname'];
}
/**
* @return string
*/
public function getURI() {
return $this->addressBookInfo['uri'];
}
/**
* @return string
*/
public function getOwner() {
return $this->addressBookInfo['userid'];
}
/**
* @return string
*/
public function getPermissions() {
return $this->addressBookInfo['permissions'];
}
/**
* Returns a specific child node, referenced by its id
*
* @param string $id
* @return IPIMObject
*/
function getChild($id) {
if(!isset($this->objects[$id])) {
$contact = $this->$backend->getContact($id);
if($contact) {
$this->objects[$id] = new Contact($this, $this->backend, $contact);
}
}
return isset($this->objects[$id]) ? $this->objects[$id] : null;
}
/**
* Checks if a child-node with the specified id exists
*
* @param string $id
* @return bool
*/
function childExists($id) {
return ($this->getChild($id) !== null);
}
/**
* Returns an array with all the child nodes
*
* @return IPIMObject[]
*/
function getChildren($limit = null, $offset = null, $omitdata = false) {
$contacts = array();
foreach($this->backend->getContacts($this->getId(), $limit, $offset, $omitdata) as $contact) {
2013-03-12 20:00:22 +01:00
if(!isset($this->objects[$contact['id']])) {
$this->objects[$contact['id']] = new Contact($this, $this->backend, $contact);
}
$contacts[] = $this->objects[$contact['id']];
2013-03-12 09:15:40 +01:00
}
return $contacts;
}
/**
* Save the address book data to backend
*
* @param array $data
* @return bool
*/
public function update(array $data) {
foreach($data as $key => $value) {
switch($key) {
case 'displayname':
$this->addressBookInfo['displayname'] = $value;
break;
case 'description':
$this->addressBookInfo['description'] = $value;
break;
}
}
$this->backend->updateAddressBook($this->getId(), $data);
}
/**
* @brief Get the last modification time for the object.
*
* Must return a UNIX time stamp or null if the backend
* doesn't support it.
*
* @returns int | null
*/
public function lastModified() {
return $this->backend->lastModifiedAddressBook($this->getId());
}
2011-08-06 22:32:06 +02:00
}