php xmpphp,给xmpphp添加了几个常用的方法 | 学步园

给xmpphp添加给了以下的常用方法:

registerNewUser            //注册一个新用户

addRosterContact           //发送添加好友的请求

accept friend request      //接受好友请求

deleteRosterContact        //删除某个好友

roomMessage                //发送群聊消息

createChatRoom             //创建群聊

kickUserOutToChatRoom      //把某个人剔除群聊

/**

* Register a new user.

*

* @param $entity

* Entity we want information about

*/

public function registerNewUser($user_name, $password = NULL, $email, $name=NULL){

$id = 'reg_' . $this->getID();

$xml = "

" . $user_name . "

" . $password . "

" . $email . "

" . $name . "

";

$this->send($xml);

}

/**

* Add contact to your roster

*/

public function addRosterContact($jid, $name, $nickName="",$groups=array("Friends")){

// return if there is no jid specified

if(!$jid) return;

// set name to the jid if none is specified

if (!$name) { $name = $jid; }

$id = $this->getID();

$xml = "";

$xml .= "";

$xml .= "";

foreach ($groups as $group) {

$xml .= "$group";

}

$xml .= "";

$xml .= "";

$xml .= "";

$xml= <<

{$nickName}

EOF;

$this->send($xml);

}

/**

* accept friend request

* @param unknown_type $send_jid

* @param unknown_type $received_jid

*/

public function acceptRosterRequest( $send_jid, $receive_jid,$send_name="",$receive_name="" ){

$xml= <<

{$send_name}

{$receive_name}

EOF;

$this->send($xml);

}

/**

* Contact you wish to remove

* @param $jid

*

*/

public function deleteRosterContact($jid) {

$id = $this->getID();

$xml = "";

$xml .= "";

$xml .= "";

$xml .= "";

$xml .= "";

$this->send($xml);

}

/**

* send group message

* @param unknown_type $to

* @param unknown_type $body

* @param unknown_type $type

* @param unknown_type $subject

* @param unknown_type $payload

*/

public function roomMessage($jid,$room_jid, $body, $subject = null, $payload = null, $user_name=null) {

if( $user_name ){

//$present_roomId=$room_jid."/".$user_name;

$present_roomId=$room_jid."/".$user_name."_"; //加“_”是因为防止同一个帐号在两个地方用同样的nickname登录房间,会有一个地方会退出登录的

}

else{

$present_roomId=$room_jid;

}

$id=$this->getID();

$out= <<

from='{$jid}'

to='{$present_roomId}'>

EOF;

$jid = htmlspecialchars($jid);

$body= htmlspecialchars($body);

$subject = htmlspecialchars($subject);

$out .= "";

if($subject) $out .= "$subject";

$out .= "

$body";

if($payload) $out .= $payload;

$out .= "";

$this->send($out);

}

/**

* create chat group

* @param unknown_type $jid, creater's jid

* @param unknown_type $room_jid chatroom's jid

*

* take example

* in a class, how to use this methodd

*

//modify room default setting

$room_setting=array('muc#roomconfig_roomname'=>$testName,'muc#roomconfig_roomdesc'=>$testDesc,'muc#roomconfig_changesubject'=>1);

//create chatroom , save chatroom settting

$this->_conn->createChatRoom($jid,$test_id,$real_name,$room_setting,$this);

//set chatroom setting to xmpp server, in this class, need a public $room_xml

$this->_conn->sendChatroom_setting($jid,$test_id,$real_name,$this->room_xml);

*

*/

public function createChatRoom($jid, $room_jid,$real_name,$room_setting=array(),$ref_obj){

$this->refObj=$ref_obj;

$this->room_setting=$room_setting;

$id=$this->getID();

$this->from=$jid;

$this->to=$room_jid;

$xml= <<

from='{$jid}'

to='{$room_jid}/{$real_name}'>

id="{$id}"

to='{$room_jid}'

type='get'>

EOF;

$this->addIdHandler($id, 'setChatroom');

$this->send($xml);

}

/**

* set chatroom setting

* @param unknown_type $xml

*/

public function setChatroom($xml){

$xml->attrs['type']="set";

$xml->attrs['from']=$this->from;

$xml->attrs['to']=$this->to;

$xml->subs[0]->subs[0]->attrs['type']='submit';

foreach( $xml->subs[0]->subs[0]->subs as &$node ){

if( isset($node->attrs['var']) && isset( $this->room_setting[$node->attrs['var']] ) ){

$node->subs[0]->data=$this->room_setting[$node->attrs['var']];

}

}

$this->refObj->room_xml=$xml->toString();

}

/**

* please call setChatroom() before call this method

*/

public function sendChatroomSetting($jid, $room_jid,$real_name,$room_xml){

$xml= <<

from='{$jid}'

to='{$room_jid}/{$real_name}'>

EOF;

$xml.=$room_xml;

$this->send($xml);

}

/**

* kick user out to chat room

* @param unknown_type $jid, create's jid

* @param unknown_type $room_jid,chatroom's jid

* @param unknown_type $real_name,kickout user's jid

* @param unknown_type $room_jid,chatroom's jid

*/

public function kickUserOutToChatRoom($jid, $room_jid,$real_name,$kick_names=array()){

$xml= <<

from='{$jid}'

to='{$room_jid}/{$real_name}'>

EOF;

foreach( $kick_names as $kick_name ){

$id=$this->getID();

$xml.= <<

id='{$id}'

to='{$room_jid}'

type='set'>

manger kick you out of room

EOF;

}

$this->send($xml);

}

/**

*

* @param XML Object $xml

*/

protected function delete_roster_contact_handler($xml) {

// do any handling you wish here

$this->event('contact_removed');

}

public function getJid(){

return $this->jid;

}

代码已开源,地址:

https://github.com/newjueqi/xmpp

///

2014.06.25更新

关于创建群组的例子,请看XMPPHP/test.php 文件中的 createEventChatRoom()

[文章作者]曾健生

[作者邮箱]h6k65@126.com

[作者QQ]190678908

[新浪微博] @newjueqi

[博客] http://blog.csdn.net/newjueqi

http://blog.sina.com.cn/h6k65

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值