예제 #1
0
 /**
  * {@inheritdoc}
  */
 public function unserialize($data)
 {
     $data = unserialize($data);
     $conversation = \Conversation::get($data['conversation']);
     $players = \Player::arrayIdToModel($data['players']);
     $teams = \Team::arrayIdToModel($data['teams']);
     $this->__construct($conversation, array_merge($players, $teams));
 }
예제 #2
0
 /**
  * Pushes or emails a new private message to the user
  *
  * @param array $event The event data we received from the web server
  */
 private function onMessageServerEvent($event)
 {
     // A list of players who received a message so that we can e-mail the
     // ones who didn't
     $received = array();
     $conversation = \Conversation::get($event->data->conversation);
     $conversationMembers = $conversation->getPlayerIds();
     foreach ($this->clients as $client) {
         $player = $client->Player;
         if (!in_array($player->getId(), $conversationMembers)) {
             // Don't notify that player, he doesn't belong in the conversation
             continue;
         }
         $event->notification_count = $player->countUnreadNotifications();
         $event->message_count = $player->countUnreadMessages();
         $this->send($client, $event);
         $received[] = $player->getId();
     }
     // Send e-mails
     foreach ($event->data->recipients as $recipient) {
         // Only send an email to users who aren't currently logged in
         if (!in_array($recipient, $received)) {
             $this->log("<fg=green>E-mailing player {$recipient->getId()} ({$recipient->getUsername()})</>");
             $this->subscriber->sendEmails('New message received', array($recipient), 'message', array('message' => \Message::get($event->data->message)));
         }
     }
 }
예제 #3
0
 /**
  * Get the conversation where the event took place
  * @return Conversation
  */
 public function getConversation()
 {
     return Conversation::get($this->conversation);
 }