示例#1
0
 /**
  * Send an Event Message for each subscription
  * @param Session $session
  * @param PublishMessage $msg
  * @param Subscription $subscription
  */
 private function sendEventMessage(Session $session, PublishMessage $msg, Subscription $subscription)
 {
     $sessionId = $subscription->getSession()->getSessionId();
     $authroles = [];
     $authid = "";
     $authenticationDetails = $subscription->getSession()->getAuthenticationDetails();
     if ($authenticationDetails) {
         $authroles = $authenticationDetails->getAuthRoles();
         $authid = $authenticationDetails->getAuthId();
     }
     if ((!$msg->excludeMe() || $subscription->getSession() != $session) && !$msg->isExcluded($sessionId) && $msg->isWhiteListed($sessionId) && $msg->hasEligibleAuthrole($authroles) && $msg->hasEligibleAuthid($authid)) {
         $eventMsg = EventMessage::createFromPublishMessage($msg, $subscription->getId());
         if ($subscription->isDisclosePublisher() === true) {
             $eventMsg->disclosePublisher($session);
         }
         if ($this->getMatchType() != "exact") {
             $eventMsg->getDetails()->topic = $msg->getUri();
         }
         $subscription->sendEventMessage($eventMsg);
     }
 }