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; } }