Exemplo n.º 1
0
 private function handleComponentIQGet(Stanza $stanza)
 {
     $query_type = $stanza->queryType();
     switch ($query_type) {
         case 'http://jabber.org/protocol/stats':
             return $stanza->reply()->myStats($this->stats);
             break;
         case 'jabber:iq:last':
             return $stanza->reply()->lastActivity($this->uptime());
             break;
         case 'jabber:iq:version':
             return $stanza->reply()->myVersion($this->version['name'], $this->version['version'], $this->version['os']);
             break;
         case 'jabber:iq:register':
             return $stanza->reply()->myRegistrationForm($this->registration_form);
             break;
         case 'http://jabber.org/protocol/disco#info':
             return $stanza->reply()->myInfo($this->component_title, $this->features, $this->category, $this->type);
             break;
         case 'http://jabber.org/protocol/disco#items':
             return $stanza->reply()->myItems();
             break;
         default:
             if ($stanza->tag()->hasChild('ping')) {
                 return $stanza->reply()->pong();
             }
             if ($stanza->tag()->hasChild('vCard')) {
                 if (is_callable(@$this->handlers['iq/vCard'])) {
                     return call_user_func($this->handlers['iq/vCard'], $stanza);
                 }
                 return $stanza->reply()->vCardServiceUnavailable();
             }
             $this->log('unknown information query (' . $query_type . ') from: ' . $stanza->from(), PHP_COMPONENT_MESSAGE_WARNING, true);
             if ($stanza->type() != 'error') {
                 return $stanza->reply()->serviceUnavailable();
             }
             break;
     }
 }