/** * Sets room (or conversation) subject. * * @param Jid $jid Jid to send subject msg. * @param string $subject New subject. * * @internal Plugins should use Room::subject() instead of that. */ public function setSubject(Jid $jid, $subject) { $msg = new XmlBranch('message'); $msg->addAttribute('from', $this->jid->__toString())->addAttribute('to', $jid->__toString())->addAttribute('type', $jid->isChannel() ? 'groupchat' : 'chat'); $msg->addChild(new XmlBranch('subject'))->setContent($subject); $this->write($msg->asXml()); }
public static function fromXml($xml, XmppClient $client = null) { if (!$xml instanceof \SimpleXMLElement) { $xml = @simplexml_load_string(preg_replace('/(<\\/?)([a-z]*?)\\:/si', '$1', $xml)); } $stanza = parent::fromXml($xml); $stanza->_xmpp = $client; $stanza->xml = $xml; return $stanza; }
private function _process() { $this->_buffer = preg_replace('/<\\?xml.+\\?>/', '', $this->_buffer); if (substr($this->_buffer, 1, 13) == 'stream:stream') { $this->_buffer = substr_replace($this->_buffer, '</stream:stream>', strpos($this->_buffer, '>') + 1, 0); } if (strstr($this->_buffer, '</stream:stream>')) { $this->onClose->run($this); } while ($packet = XmlBranch::getCompleteXml($this->_buffer)) { $this->_buffer = str_replace($packet, '', $this->_buffer); $this->onReceive->run($this, $packet); } }
public function _onPacket($conn, $xml) { if (substr($xml, 1, 7) == 'stream:') { $packet = XmlBranch::fromXml($xml); switch ($packet->tag) { case "error": $this->onStreamError->run($this, $packet); break; case "features": $this->_features = Stanza::fromXml($xml); $this->onFeatures->run($this, $this->_features); break; } } }