* @package timwolla.wcf.chat * @subpackage data.chat.message */ class ChatMessage extends \wcf\data\DatabaseObject { /** * @see wcf\data\DatabaseObject::$databaseTableName */ protected static $databaseTableName = 'chat_message'; /** * @see wcf\data\DatabaseObject::$databaseTableIndexName */ protected static $databaseTableIndexName = 'messageID'; const TYPE_NORMAL = 0; const TYPE_JOIN = 1; const TYPE_LEAVE = 2; const TYPE_AWAY = 3; const TYPE_BACK = 4; const TYPE_MODERATE = 5; const TYPE_ME = 6; const TYPE_WHISPER = 7; const TYPE_INFORMATION = 8; const TYPE_CLEAR = 9; const TYPE_TEAM = 10; const TYPE_GLOBALMESSAGE = 11; /** * Returns the message. * * @return string */ public function __toString() { return $this->getFormattedMessage(); } /** * Returns the formatted message. * * @return string */ public function getFormattedMessage() { $message = $this->message; switch ($this->type) { case self::TYPE_JOIN: case self::TYPE_LEAVE: case self::TYPE_BACK: $message = WCF::getLanguage()->get('wcf.chat.message.'.$this->type); } return $message; } /** * Returns the formatted username * * @return string */ public function getFormattedUsername() { if ($this->type == self::TYPE_INFORMATION) return ''.$this->getUsername().''; $string = str_split($this->getUsername()); $r = (int) (($this->color1 >> 16 & 255) - ($this->color2 >> 16 & 255)) / (count($string) - 1); $g = (int) (($this->color1 >> 8 & 255) - ($this->color2 >> 8 & 255)) / (count($string) - 1); $b = (int) (($this->color1 & 255) - ($this->color2 & 255)) / (count($string) - 1); $result = ''; for ($i = 0, $max = count($string); $i < $max; $i++) { $result .= ''.$string[$i].''; } return ''.$result.''; } /** * Returns the unformatted username * * @return string */ public function getUsername() { if ($this->type == self::TYPE_INFORMATION) return WCF::getLanguage()->get('wcf.chat.information'); return $this->username; } public function jsonify() { return \wcf\util\JSON::encode(array( 'formattedUsername' => $this->getFormattedUsername(), 'formattedMessage' => $this->getFormattedMessage(), 'time' => $this->time, 'sender' => $this->sender, 'username' => $this->getUsername(), 'receiver' => $this->receiver, 'type' => $this->type )); } }