예제 #1
0
파일: XmppClient.php 프로젝트: vincebe/xmpp
 /**
  * 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());
 }
예제 #2
0
파일: Stanza.php 프로젝트: vincebe/xmpp
 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;
 }
예제 #3
0
 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);
     }
 }
예제 #4
0
 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;
         }
     }
 }