/** * {@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)); }
/** * 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))); } } }
/** * Get the conversation where the event took place * @return Conversation */ public function getConversation() { return Conversation::get($this->conversation); }