Example #1
0
 /**
  * Broadcast a message, it's data, and who sent it.
  * 
  * @see Container::receiveMessage
  * 
  * @param string $inMessage
  * @param mixed $inData
  * @param Container $sender
  * 
  * @return void
  */
 public static function broadcastMessage($inMessage, $inData, $sender = null)
 {
     if (self::canSendMessage($inMessage)) {
         self::$sending++;
         $page = self::$page;
         if ($sender) {
             // if the sender is a container and it doesn't yet have a page (constructor) we need to not send the message since thats
             // the behavior that the old system used.
             if ($sender instanceof Container) {
                 $page = $sender->getPage();
             }
         } else {
             $sender = self::$page;
         }
         if ($page) {
             $page->broadcastMessageToTree($inMessage, $inData, $sender);
         }
         foreach (self::$page->_mcReceivers as $thisReceiver) {
             if (!in_array($thisReceiver, self::$toRemove)) {
                 $thisReceiver->messageReceived($inMessage, $inData, $sender);
             }
         }
         self::$sending--;
         if (self::$sending == 0) {
             if (count(self::$toRemove)) {
                 foreach (self::$toRemove as $removeThis) {
                     self::$page->mcRemoveReceiver($removeThis);
                 }
                 self::$toRemove = array();
             }
         }
     }
 }