116 lines
2.8 KiB
PHP
116 lines
2.8 KiB
PHP
|
<?php
|
||
|
|
||
|
abstract class Sabre_CardDAV_Backend_Common extends Sabre_CardDAV_Backend_Abstract
|
||
|
{
|
||
|
/**
|
||
|
* @abstract
|
||
|
* @return int
|
||
|
*/
|
||
|
abstract public function getNamespace();
|
||
|
|
||
|
/**
|
||
|
* @static
|
||
|
* @abstract
|
||
|
* @return string
|
||
|
*/
|
||
|
abstract public static function getBackendTypeName();
|
||
|
|
||
|
/**
|
||
|
* @var array
|
||
|
*/
|
||
|
static private $addressbookCache = array();
|
||
|
|
||
|
/**
|
||
|
* @var array
|
||
|
*/
|
||
|
static private $addressbookObjectCache = array();
|
||
|
|
||
|
/**
|
||
|
* @static
|
||
|
* @param int $addressbookId
|
||
|
* @return array
|
||
|
*/
|
||
|
static public function loadCalendarById($addressbookId)
|
||
|
{
|
||
|
if (!isset(self::$addressbookCache[$addressbookId])) {
|
||
|
$c = q("SELECT * FROM %s%saddressbooks WHERE `id` = %d", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, IntVal($addressbookId));
|
||
|
self::$addressbookCache[$addressbookId] = $c[0];
|
||
|
}
|
||
|
return self::$addressbookCache[$addressbookId];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @static
|
||
|
* @param int $obj_id
|
||
|
* @return array
|
||
|
*/
|
||
|
static public function loadAddressbookobjectById($obj_id)
|
||
|
{
|
||
|
if (!isset(self::$addressbookObjectCache[$obj_id])) {
|
||
|
$o = q("SELECT * FROM %s%saddressbookobjects WHERE `id` = %d",
|
||
|
CALDAV_SQL_DB, CALDAV_SQL_PREFIX, IntVal($obj_id)
|
||
|
);
|
||
|
self::$addressbookObjectCache[$obj_id] = $o[0];
|
||
|
}
|
||
|
return self::$addressbookObjectCache[$obj_id];
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Updates an addressbook's properties
|
||
|
*
|
||
|
* See Sabre_DAV_IProperties for a description of the mutations array, as
|
||
|
* well as the return value.
|
||
|
*
|
||
|
* @param mixed $addressBookId
|
||
|
* @param array $mutations
|
||
|
* @throws Sabre_DAV_Exception_Forbidden
|
||
|
* @see Sabre_DAV_IProperties::updateProperties
|
||
|
* @return bool|array
|
||
|
*/
|
||
|
public function updateAddressBook($addressBookId, array $mutations)
|
||
|
{
|
||
|
$updates = array();
|
||
|
|
||
|
foreach ($mutations as $property=> $newValue) {
|
||
|
|
||
|
switch ($property) {
|
||
|
case '{DAV:}displayname' :
|
||
|
$updates['displayname'] = $newValue;
|
||
|
break;
|
||
|
case '{' . Sabre_CardDAV_Plugin::NS_CARDDAV . '}addressbook-description' :
|
||
|
$updates['description'] = $newValue;
|
||
|
break;
|
||
|
default :
|
||
|
// If any unsupported values were being updated, we must
|
||
|
// let the entire request fail.
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
// No values are being updated?
|
||
|
if (!$updates) {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
$query = 'UPDATE ' . CALDAV_SQL_DB . CALDAV_SQL_PREFIX . 'addressbooks SET ctag = ctag + 1 ';
|
||
|
foreach ($updates as $key=> $value) {
|
||
|
$query .= ', `' . dbesc($key) . '` = ' . dbesc($key) . ' ';
|
||
|
}
|
||
|
$query .= ' WHERE id = ' . IntVal($addressBookId);
|
||
|
q($query);
|
||
|
|
||
|
return true;
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param int $addressbookId
|
||
|
*/
|
||
|
protected function increaseAddressbookCtag($addressbookId)
|
||
|
{
|
||
|
q("UPDATE %s%saddressbooks SET `ctag` = `ctag` + 1 WHERE `id` = '%d'", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, IntVal($addressbookId));
|
||
|
self::$addressbookCache = array();
|
||
|
}
|
||
|
}
|