当前位置: 首页>>代码示例>>PHP>>正文


PHP Server::removeListener方法代码示例

本文整理汇总了PHP中Sabre\DAV\Server::removeListener方法的典型用法代码示例。如果您正苦于以下问题:PHP Server::removeListener方法的具体用法?PHP Server::removeListener怎么用?PHP Server::removeListener使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Sabre\DAV\Server的用法示例。


在下文中一共展示了Server::removeListener方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: scheduleLocalDelivery

 /**
  * Event handler for the 'schedule' event.
  *
  * This handler attempts to look at local accounts to deliver the
  * scheduling object.
  *
  * @param ITip\Message $iTipMessage
  * @return void
  */
 function scheduleLocalDelivery(ITip\Message $iTipMessage)
 {
     $aclPlugin = $this->server->getPlugin('acl');
     // Local delivery is not available if the ACL plugin is not loaded.
     if (!$aclPlugin) {
         return;
     }
     $caldavNS = '{' . Plugin::NS_CALDAV . '}';
     $principalUri = $aclPlugin->getPrincipalByUri($iTipMessage->recipient);
     if (!$principalUri) {
         $iTipMessage->scheduleStatus = '3.7;Could not find principal.';
         return;
     }
     // We found a principal URL, now we need to find its inbox.
     // Unfortunately we may not have sufficient privileges to find this, so
     // we are temporarily turning off ACL to let this come through.
     //
     // Once we support PHP 5.5, this should be wrapped in a try..finally
     // block so we can ensure that this privilege gets added again after.
     $this->server->removeListener('propFind', [$aclPlugin, 'propFind']);
     $result = $this->server->getProperties($principalUri, ['{DAV:}principal-URL', $caldavNS . 'calendar-home-set', $caldavNS . 'schedule-inbox-URL', $caldavNS . 'schedule-default-calendar-URL', '{http://sabredav.org/ns}email-address']);
     // Re-registering the ACL event
     $this->server->on('propFind', [$aclPlugin, 'propFind'], 20);
     if (!isset($result[$caldavNS . 'schedule-inbox-URL'])) {
         $iTipMessage->scheduleStatus = '5.2;Could not find local inbox';
         return;
     }
     if (!isset($result[$caldavNS . 'calendar-home-set'])) {
         $iTipMessage->scheduleStatus = '5.2;Could not locate a calendar-home-set';
         return;
     }
     if (!isset($result[$caldavNS . 'schedule-default-calendar-URL'])) {
         $iTipMessage->scheduleStatus = '5.2;Could not find a schedule-default-calendar-URL property';
         return;
     }
     $calendarPath = $result[$caldavNS . 'schedule-default-calendar-URL']->getHref();
     $homePath = $result[$caldavNS . 'calendar-home-set']->getHref();
     $inboxPath = $result[$caldavNS . 'schedule-inbox-URL']->getHref();
     if ($iTipMessage->method === 'REPLY') {
         $privilege = 'schedule-deliver-reply';
     } else {
         $privilege = 'schedule-deliver-invite';
     }
     if (!$aclPlugin->checkPrivileges($inboxPath, $caldavNS . $privilege, DAVACL\Plugin::R_PARENT, false)) {
         $iTipMessage->scheduleStatus = '3.8;organizer did not have the ' . $privilege . ' privilege on the attendees inbox';
         return;
     }
     // Next, we're going to find out if the item already exits in one of
     // the users' calendars.
     $uid = $iTipMessage->uid;
     $newFileName = 'sabredav-' . \Sabre\DAV\UUIDUtil::getUUID() . '.ics';
     $home = $this->server->tree->getNodeForPath($homePath);
     $inbox = $this->server->tree->getNodeForPath($inboxPath);
     $currentObject = null;
     $objectNode = null;
     $isNewNode = false;
     $result = $home->getCalendarObjectByUID($uid);
     if ($result) {
         // There was an existing object, we need to update probably.
         $objectPath = $homePath . '/' . $result;
         $objectNode = $this->server->tree->getNodeForPath($objectPath);
         $oldICalendarData = $objectNode->get();
         $currentObject = Reader::read($oldICalendarData);
     } else {
         $isNewNode = true;
     }
     $broker = new ITip\Broker();
     $newObject = $broker->processMessage($iTipMessage, $currentObject);
     $inbox->createFile($newFileName, $iTipMessage->message->serialize());
     if (!$newObject) {
         // We received an iTip message referring to a UID that we don't
         // have in any calendars yet, and processMessage did not give us a
         // calendarobject back.
         //
         // The implication is that processMessage did not understand the
         // iTip message.
         $iTipMessage->scheduleStatus = '5.0;iTip message was not processed by the server, likely because we didn\'t understand it.';
         return;
     }
     // Note that we are bypassing ACL on purpose by calling this directly.
     // We may need to look a bit deeper into this later. Supporting ACL
     // here would be nice.
     if ($isNewNode) {
         $calendar = $this->server->tree->getNodeForPath($calendarPath);
         $calendar->createFile($newFileName, $newObject->serialize());
     } else {
         // If the message was a reply, we may have to inform other
         // attendees of this attendees status. Therefore we're shooting off
         // another itipMessage.
         if ($iTipMessage->method === 'REPLY') {
             $this->processICalendarChange($oldICalendarData, $newObject, [$iTipMessage->recipient], [$iTipMessage->sender]);
//.........这里部分代码省略.........
开发者ID:LobbyOS,项目名称:server,代码行数:101,代码来源:Plugin.php


注:本文中的Sabre\DAV\Server::removeListener方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。