/** * Creates or updates the message and returns it. * * @param WiseChatMessage $message * * @return WiseChatMessage * @throws Exception On validation error */ public function save($message) { global $wpdb; // low-level validation: if ($message->getTime() === null) { throw new Exception('Time cannot be null'); } if ($message->getUserId() === null) { throw new Exception('User ID cannot be null'); } if ($message->getUserName() === null) { throw new Exception('Username cannot be null'); } if ($message->getText() === null) { throw new Exception('Text cannot be null'); } if ($message->getChannelName() === null) { throw new Exception('Channel name cannot be null'); } // prepare user data: $columns = array('time' => $message->getTime(), 'admin' => $message->isAdmin() ? 1 : 0, 'user' => $message->getUserName(), 'chat_user_id' => $message->getUserId(), 'text' => $message->getText(), 'channel' => $message->getChannelName(), 'ip' => $message->getIp()); // update or insert: if ($message->getId() !== null) { $columns['user_id'] = $message->getWordPressUserId(); $wpdb->update($this->table, $columns, array('id' => $message->getId()), '%s', '%d'); } else { if ($message->getWordPressUserId() > 0) { $columns['user_id'] = $message->getWordPressUserId(); } $wpdb->insert($this->table, $columns); $message->setId($wpdb->insert_id); } return $message; }
/** * Returns rendered message content. * * @param WiseChatMessage $message * * @return string HTML source */ private function getRenderedMessageContent($message) { $formattedMessage = htmlspecialchars($message->getText(), ENT_QUOTES, 'UTF-8'); /** @var WiseChatLinksPostFilter $linksFilter */ $linksFilter = WiseChatContainer::get('rendering/filters/post/WiseChatLinksPostFilter'); $formattedMessage = $linksFilter->filter($formattedMessage, $this->options->isOptionEnabled('allow_post_links')); /** @var WiseChatAttachmentsPostFilter $attachmentsFilter */ $attachmentsFilter = WiseChatContainer::get('rendering/filters/post/WiseChatAttachmentsPostFilter'); $formattedMessage = $attachmentsFilter->filter($formattedMessage, $this->options->isOptionEnabled('enable_attachments_uploader'), $this->options->isOptionEnabled('allow_post_links')); /** @var WiseChatImagesPostFilter $imagesFilter */ $imagesFilter = WiseChatContainer::get('rendering/filters/post/WiseChatImagesPostFilter'); $formattedMessage = $imagesFilter->filter($formattedMessage, $this->options->isOptionEnabled('allow_post_images'), $this->options->isOptionEnabled('allow_post_links')); /** @var WiseChatYouTubePostFilter $youTubeFilter */ $youTubeFilter = WiseChatContainer::get('rendering/filters/post/WiseChatYouTubePostFilter'); $formattedMessage = $youTubeFilter->filter($formattedMessage, $this->options->isOptionEnabled('enable_youtube'), $this->options->isOptionEnabled('allow_post_links'), $this->options->getIntegerOption('youtube_width', 186), $this->options->getIntegerOption('youtube_height', 105)); if ($this->options->isOptionEnabled('enable_twitter_hashtags')) { /** @var WiseChatHashtagsPostFilter $hashTagsFilter */ $hashTagsFilter = WiseChatContainer::get('rendering/filters/post/WiseChatHashtagsPostFilter'); $formattedMessage = $hashTagsFilter->filter($formattedMessage); } if ($this->options->isOptionEnabled('emoticons_enabled', true)) { /** @var WiseChatEmoticonsFilter $emoticonsFilter */ $emoticonsFilter = WiseChatContainer::get('rendering/filters/post/WiseChatEmoticonsFilter'); $formattedMessage = $emoticonsFilter->filter($formattedMessage); } if ($this->options->isOptionEnabled('multiline_support')) { $formattedMessage = str_replace("\n", '<br />', $formattedMessage); } return $formattedMessage; }