%PDF- %PDF-
| Direktori : /www/varak.net/mail2.varak.net_old/libraries/afterlogic/DAV/Reminders/ |
| Current File : /www/varak.net/mail2.varak.net_old/libraries/afterlogic/DAV/Reminders/Plugin.php |
<?php
/*
* Copyright 2004-2014, AfterLogic Corp.
* Licensed under AGPLv3 license or AfterLogic license
* if commercial version of the product was purchased.
* See the LICENSE file for a full license statement.
*/
namespace afterlogic\DAV\Reminders;
class Plugin extends \Sabre\DAV\ServerPlugin {
/**
* Reference to Server class
*
* @var \Sabre\DAV\Server
*/
private $server;
/**
* cacheBackend
*
* @var Backend\PDO
*/
private $backend;
/**
* Returns a plugin name.
*
* Using this name other plugins will be able to access other plugins
* using \Sabre\DAV\Server::getPlugin
*
* @return string
*/
public function getPluginName() {
return 'reminders';
}
/**
* __construct
*
* @param Backend\PDO $backend
* @return void
*/
public function __construct(Backend\PDO $backend = null) {
$this->backend = $backend;
}
/**
* Initializes the plugin and registers event handlers
*
* @param \Sabre\DAV\Server $server
* @return void
*/
public function initialize(\Sabre\DAV\Server $server)
{
$this->server = $server;
$this->server->subscribeEvent('beforeMethod', array($this, 'beforeMethod'), 90);
$this->server->subscribeEvent('afterCreateFile', array($this, 'afterCreateFile'), 90);
$this->server->subscribeEvent('afterWriteContent', array($this, 'afterWriteContent'), 90);
}
protected function getUser()
{
$user = null;
$authPlugin = $this->server->getPlugin('auth');
if ($authPlugin !== null)
{
$user = $authPlugin->getCurrentUser();
}
return $user;
}
/**
* @param string $method
* @param string $uri
* @return void
*/
public function beforeMethod($method, $uri)
{
if (Backend\PDO::isCalendar($uri))
{
if (strtoupper($method) == 'DELETE')
{
if (Backend\PDO::isEvent($uri))
{
$eventId = Backend\PDO::getEventId($uri);
$this->deleteReminder($eventId);
}
else
{
$this->deleteReminderByCalendar($uri);
}
}
}
}
public function afterCreateFile($uri, \Sabre\DAV\ICollection $parent)
{
$node = $parent->getChild(Backend\PDO::getEventUri($uri));
$this->updateReminder($uri, $node->get(), $this->getUser());
}
public function afterWriteContent($uri, \Sabre\DAV\IFile $node)
{
$this->updateReminder($uri, $node->get(), $this->getUser());
}
public function getReminder($eventId, $user = null)
{
return $this->backend->getReminder($eventId, $user);
}
public function getReminders($start, $end)
{
return $this->backend->getReminders($start, $end);
}
public function addReminder($user, $calendarUri, $eventId, $time = null, $starttime = null, $allday = false)
{
return $this->backend->addReminder($user, $calendarUri, $eventId, $time, $starttime, $allday);
}
public function deleteReminder($eventId, $user = null)
{
$this->backend->deleteReminder($eventId, $user);
}
public function deleteReminderByCalendar($calendarUri)
{
$this->backend->deleteReminderByCalendar($calendarUri);
}
public function updateReminder($uri, $data, $user)
{
$this->backend->updateReminder($uri, $data, $user);
}
}