* @revision 01 * @license http://creativecommons.org/licenses/by-sa/3.0/de/ Creative Commons Attribution-Share Alike 3.0 Germany * @homepage http://oss.tiggerswelt.net/oscar/ * @copyright Copyright © 2009 tiggersWelt.net */ class Oscar_TLV_Message_IM_Text extends Oscar_TLV { /* Type of this TLV */ const TYPE = 0x0101; // Encoding types const ENCODING_ASCII = 0x0000; const ENCODING_UNICODE = 0x0002; const ENCODING_LATIN = 0x0003; const ENCODING_DEFAULT = 0x0002; // Properties of this TLV public $Encoding = Oscar_TLV_Message_IM_Text::ENCODING_DEFAULT; public $Language = 0x0000; public $Message = ""; // {{{ parse /** * Handle contents of this TLV * * @access public * @return void */ public function parse () { $this->Encoding = Oscar_Common::str2int16 ($this->Data, 0, true); $this->Language = Oscar_Common::str2int16 ($this->Data, 0, true); $this->Message = $this->Data; $this->Data = ""; switch ($this->Encoding) { case self::ENCODING_ASCII: $this->Message = mb_convert_encoding ($this->Message, "UTF-8", "ASCII"); break; case self::ENCODING_LATIN: $this->Message = mb_convert_encoding ($this->Message, "UTF-8", "ISO-8859-1"); break; case self::ENCODING_UNICODE: $this->Message = mb_convert_encoding ($this->Message, "UTF-8", "UCS-2"); break; default: trigger_error ("Unknown encoding, check your implementation"); } } // }}} // {{{ generate /** * Prepare this TLV for submission * * @access public * @return string */ public function generate () { // Copy current encoding $Encoding = $this->Encoding; // Reformat message switch ($Encoding) { case self::ENCODING_ASCII: $Message = mb_convert_encoding ($this->Message, "ASCII", "UTF-8"); break; case self::ENCODING_LATIN: $Message = mb_convert_encoding ($this->Message, "ISO-8859-1", "UTF-8"); break; default: $Encoding = self::ENCODING_UNICODE; case self::ENCODING_UNICODE: $Message = mb_convert_encoding ($this->Message, "UCS-2", "UTF-8"); break; } // Generate the content $this->Data = Oscar_Common::int16tostr ($Encoding) . Oscar_Common::int16tostr ($this->Language) . $Message; // Inherit to our parent (generate TLV-Envelope) return parent::generate (); } // }}} // {{{ getMessage /** * Retrive message from this TLV * * @access public * @return string */ public function getMessage () { return $this->Message; } // }}} // {{{ getEncoding /** * Get encoding of this message * * @access public * @return enum **/ public function getEncoding () { return $this->Encoding; } // }}} // {{{ setMessage /** * Set Message on this TLV * * @param string $Message * * @access public * @return void */ public function setMessage ($Message) { $this->Message = $Message; } // }}} // {{{ setEncoding /** * Set encoding for this message * * @param enum $Encoding * * @access public * @return void **/ public function setEncoding ($Encoding) { if (($Encoding === null) || !in_array ($Encoding, array (self::ENCODING_ASCII, self::ENCODING_LATIN, self::ENCODING_UNICODE))) $Encoding = self::ENCODING_DEFAULT; $this->Encoding = $Encoding; } // }}} } ?>