forked from friendica/friendica-addons
		
	
		
			
				
	
	
		
			186 lines
		
	
	
	
		
			4.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			186 lines
		
	
	
	
		
			4.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
abstract class Sabre_CalDAV_Backend_Virtual extends Sabre_CalDAV_Backend_Common
 | 
						|
{
 | 
						|
 | 
						|
 | 
						|
 | 
						|
	/**
 | 
						|
	 * @static
 | 
						|
	 * @abstract
 | 
						|
	 * @param int $calendarId
 | 
						|
	 * @param string $uri
 | 
						|
	 * @return array
 | 
						|
	 */
 | 
						|
	/*
 | 
						|
	abstract public function getItemsByUri($calendarId, $uri);
 | 
						|
    */
 | 
						|
 | 
						|
	/**
 | 
						|
	 * @static
 | 
						|
	 * @param int $uid
 | 
						|
	 * @param int $namespace
 | 
						|
	 */
 | 
						|
	static public function invalidateCache($uid = 0, $namespace = 0) {
 | 
						|
		q("DELETE FROM %s%scal_virtual_object_sync WHERE `uid` = %d AND `namespace` = %d",
 | 
						|
			CALDAV_SQL_DB, CALDAV_SQL_PREFIX, IntVal($uid), IntVal($namespace));
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * @static
 | 
						|
	 * @abstract
 | 
						|
	 * @param int $calendarId
 | 
						|
	 */
 | 
						|
	static abstract protected function createCache_internal($calendarId);
 | 
						|
 | 
						|
	/**
 | 
						|
	 * @static
 | 
						|
	 * @param int $calendarId
 | 
						|
	 */
 | 
						|
	static protected function createCache($calendarId) {
 | 
						|
		$calendarId = IntVal($calendarId);
 | 
						|
		q("DELETE FROM %s%scal_virtual_object_cache WHERE `calendar_id` = %d", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, $calendarId);
 | 
						|
		static::createCache_internal($calendarId);
 | 
						|
		q("REPLACE INTO %s%scal_virtual_object_sync (`calendar_id`, `date`) VALUES (%d, NOW())", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, $calendarId);
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * @param string $calendarId
 | 
						|
	 * @return array
 | 
						|
	 */
 | 
						|
	public function getCalendarObjects($calendarId)
 | 
						|
	{
 | 
						|
		$calendarId = IntVal($calendarId);
 | 
						|
		$r = q("SELECT COUNT(*) n FROM %s%scal_virtual_object_sync WHERE `calendar_id` = %d", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, $calendarId);
 | 
						|
 | 
						|
		if ($r[0]["n"] == 0) static::createCache($calendarId);
 | 
						|
 | 
						|
		$r = q("SELECT * FROM %s%scal_virtual_object_cache WHERE `calendar_id` = %d", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, $calendarId);
 | 
						|
 | 
						|
		$ret = array();
 | 
						|
		foreach ($r as $obj) {
 | 
						|
			$ret[] = array(
 | 
						|
				"id" => IntVal($obj["data_uri"]),
 | 
						|
				"calendardata" => $obj["calendardata"],
 | 
						|
				"uri" => $obj["data_uri"],
 | 
						|
				"lastmodified" => $obj["date"],
 | 
						|
				"calendarid" => $calendarId,
 | 
						|
				"etag" => $obj["etag"],
 | 
						|
				"size" => IntVal($obj["size"]),
 | 
						|
			);
 | 
						|
		}
 | 
						|
 | 
						|
		return $ret;
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Returns information from a single calendar object, based on it's object
 | 
						|
	 * uri.
 | 
						|
	 *
 | 
						|
	 * The returned array must have the same keys as getCalendarObjects. The
 | 
						|
	 * 'calendardata' object is required here though, while it's not required
 | 
						|
	 * for getCalendarObjects.
 | 
						|
	 *
 | 
						|
	 * @param string $calendarId
 | 
						|
	 * @param string $objectUri
 | 
						|
	 * @throws Sabre_DAV_Exception_NotFound
 | 
						|
	 * @return array
 | 
						|
	 */
 | 
						|
	public function getCalendarObject($calendarId, $objectUri)
 | 
						|
	{
 | 
						|
		$calendarId = IntVal($calendarId);
 | 
						|
		$r = q("SELECT COUNT(*) n FROM %s%scal_virtual_object_sync WHERE `calendar_id` = %d", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, IntVal($calendarId));
 | 
						|
 | 
						|
		if ($r[0]["n"] == 0) static::createCache($calendarId);
 | 
						|
 | 
						|
		$r = q("SELECT * FROM %s%scal_virtual_object_cache WHERE `data_uri` = '%s' AND `calendar_id` = %d", CALDAV_SQL_DB, CALDAV_SQL_PREFIX, dbesc($objectUri), IntVal($calendarId));
 | 
						|
		if (count($r) == 0) throw new Sabre_DAV_Exception_NotFound();
 | 
						|
 | 
						|
		$obj = $r[0];
 | 
						|
		$ret = array(
 | 
						|
			"id" => IntVal($obj["data_uri"]),
 | 
						|
			"calendardata" => $obj["calendardata"],
 | 
						|
			"uri" => $obj["data_uri"],
 | 
						|
			"lastmodified" => $obj["date"],
 | 
						|
			"calendarid" => $calendarId,
 | 
						|
			"etag" => $obj["etag"],
 | 
						|
			"size" => IntVal($obj["size"]),
 | 
						|
		);
 | 
						|
		return $ret;
 | 
						|
	}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Creates a new calendar for a principal.
 | 
						|
	 *
 | 
						|
	 * If the creation was a success, an id must be returned that can be used to reference
 | 
						|
	 * this calendar in other methods, such as updateCalendar.
 | 
						|
	 *
 | 
						|
	 * @param string $principalUri
 | 
						|
	 * @param string $calendarUri
 | 
						|
	 * @param array $properties
 | 
						|
	 * @throws Sabre_DAV_Exception_Forbidden
 | 
						|
	 * @return void
 | 
						|
	 */
 | 
						|
	public function createCalendar($principalUri, $calendarUri, array $properties)
 | 
						|
	{
 | 
						|
		throw new Sabre_DAV_Exception_Forbidden();
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Delete a calendar and all it's objects
 | 
						|
	 *
 | 
						|
	 * @param string $calendarId
 | 
						|
	 * @throws Sabre_DAV_Exception_Forbidden
 | 
						|
	 * @return void
 | 
						|
	 */
 | 
						|
	public function deleteCalendar($calendarId)
 | 
						|
	{
 | 
						|
		throw new Sabre_DAV_Exception_Forbidden();
 | 
						|
	}
 | 
						|
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Creates a new calendar object.
 | 
						|
	 *
 | 
						|
	 * @param string $calendarId
 | 
						|
	 * @param string $objectUri
 | 
						|
	 * @param string $calendarData
 | 
						|
	 * @throws Sabre_DAV_Exception_Forbidden
 | 
						|
	 * @return null|string|void
 | 
						|
	 */
 | 
						|
	function createCalendarObject($calendarId, $objectUri, $calendarData)
 | 
						|
	{
 | 
						|
		throw new Sabre_DAV_Exception_Forbidden();
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Updates an existing calendarobject, based on it's uri.
 | 
						|
	 *
 | 
						|
	 * @param string $calendarId
 | 
						|
	 * @param string $objectUri
 | 
						|
	 * @param string $calendarData
 | 
						|
	 * @throws Sabre_DAV_Exception_Forbidden
 | 
						|
	 * @return null|string|void
 | 
						|
	 */
 | 
						|
	function updateCalendarObject($calendarId, $objectUri, $calendarData)
 | 
						|
	{
 | 
						|
		throw new Sabre_DAV_Exception_Forbidden();
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Deletes an existing calendar object.
 | 
						|
	 *
 | 
						|
	 * @param string $calendarId
 | 
						|
	 * @param string $objectUri
 | 
						|
	 * @throws Sabre_DAV_Exception_Forbidden
 | 
						|
	 * @return void
 | 
						|
	 */
 | 
						|
	function deleteCalendarObject($calendarId, $objectUri)
 | 
						|
	{
 | 
						|
		throw new Sabre_DAV_Exception_Forbidden();
 | 
						|
	}
 | 
						|
 | 
						|
 | 
						|
}
 |