Mercurial > pidgin
comparison libpurple/protocols/jabber/chat.c @ 29070:c8b407fec879
jabber: Kick by in-room nick, not JID. Reduces code, but is still in-spec (and seems to be the preferred method)
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Thu, 18 Feb 2010 04:39:28 +0000 |
parents | 4ab6f0479bc5 |
children | a0d6b85e9c42 |
comparison
equal
deleted
inserted
replaced
29069:f5c00a24bb87 | 29070:c8b407fec879 |
---|---|
1046 jabber_iq_send(iq); | 1046 jabber_iq_send(iq); |
1047 | 1047 |
1048 return TRUE; | 1048 return TRUE; |
1049 } | 1049 } |
1050 | 1050 |
1051 gboolean jabber_chat_role_user(JabberChat *chat, const char *who, const char *role) | 1051 gboolean jabber_chat_role_user(JabberChat *chat, const char *who, |
1052 const char *role, const char *why) | |
1052 { | 1053 { |
1053 char *to; | 1054 char *to; |
1054 JabberIq *iq; | 1055 JabberIq *iq; |
1055 xmlnode *query, *item; | 1056 xmlnode *query, *item; |
1056 JabberChatMember *jcm; | 1057 JabberChatMember *jcm; |
1069 | 1070 |
1070 query = xmlnode_get_child(iq->node, "query"); | 1071 query = xmlnode_get_child(iq->node, "query"); |
1071 item = xmlnode_new_child(query, "item"); | 1072 item = xmlnode_new_child(query, "item"); |
1072 xmlnode_set_attrib(item, "nick", jcm->handle); | 1073 xmlnode_set_attrib(item, "nick", jcm->handle); |
1073 xmlnode_set_attrib(item, "role", role); | 1074 xmlnode_set_attrib(item, "role", role); |
1075 if (why) { | |
1076 xmlnode *reason = xmlnode_new_child(item, "reason"); | |
1077 xmlnode_insert_data(reason, why, -1); | |
1078 } | |
1074 | 1079 |
1075 jabber_iq_send(iq); | 1080 jabber_iq_send(iq); |
1076 | 1081 |
1077 return TRUE; | 1082 return TRUE; |
1078 } | 1083 } |
1136 jabber_iq_send(iq); | 1141 jabber_iq_send(iq); |
1137 | 1142 |
1138 return TRUE; | 1143 return TRUE; |
1139 } | 1144 } |
1140 | 1145 |
1141 gboolean jabber_chat_kick_user(JabberChat *chat, const char *who, const char *why) | |
1142 { | |
1143 JabberIq *iq; | |
1144 JabberChatMember *jcm = g_hash_table_lookup(chat->members, who); | |
1145 char *to; | |
1146 xmlnode *query, *item, *reason; | |
1147 | |
1148 if(!jcm || !jcm->jid) | |
1149 return FALSE; | |
1150 | |
1151 iq = jabber_iq_new_query(chat->js, JABBER_IQ_SET, | |
1152 "http://jabber.org/protocol/muc#admin"); | |
1153 | |
1154 to = g_strdup_printf("%s@%s", chat->room, chat->server); | |
1155 xmlnode_set_attrib(iq->node, "to", to); | |
1156 g_free(to); | |
1157 | |
1158 query = xmlnode_get_child(iq->node, "query"); | |
1159 item = xmlnode_new_child(query, "item"); | |
1160 xmlnode_set_attrib(item, "jid", jcm->jid); | |
1161 xmlnode_set_attrib(item, "role", "none"); | |
1162 if(why) { | |
1163 reason = xmlnode_new_child(item, "reason"); | |
1164 xmlnode_insert_data(reason, why, -1); | |
1165 } | |
1166 | |
1167 jabber_iq_send(iq); | |
1168 | |
1169 return TRUE; | |
1170 } | |
1171 | |
1172 static void jabber_chat_disco_traffic_cb(JabberStream *js, const char *from, | 1146 static void jabber_chat_disco_traffic_cb(JabberStream *js, const char *from, |
1173 JabberIqType type, const char *id, | 1147 JabberIqType type, const char *id, |
1174 xmlnode *packet, gpointer data) | 1148 xmlnode *packet, gpointer data) |
1175 { | 1149 { |
1176 JabberChat *chat; | 1150 JabberChat *chat; |