static void gaym_add_deny(GaimConnection * gc, const char *name) { if (!gaym_nick_check(name)) { gaim_privacy_deny_remove(gc->account, name, TRUE); gaim_notify_error(gc, _("Invalid User Name"), name, _("Invalid user name not added.")); return; } gaym_server_store_deny(gc, name, TRUE); gaym_privacy_change(gc, name); }
void gaym_privacy_change(GaimConnection * gc, const char *name) { /** * don't allow adding self to permit/deny lists */ if (name) { if (!gaim_utf8_strcasecmp(gc->account->username, name)) { gaim_privacy_deny_remove(gc->account, gc->account->username, TRUE); gaim_privacy_permit_remove(gc->account, gc->account->username, TRUE); gaim_debug_info("gaym", "declining to add self to permit/deny list\n"); return; } } GSList *rooms = NULL; for (rooms = gc->buddy_chats; rooms; rooms = rooms->next) { GaimConversation *convo = rooms->data; GaimConvChat *chat = gaim_conversation_get_chat_data(convo); GList *people = NULL; for (people = chat->in_room; people; people = people->next) { GaimConvChatBuddy *buddy = people->data; GaimConversationUiOps *ops = gaim_conversation_get_ui_ops(convo); if (name) { if (!gaim_utf8_strcasecmp(name, buddy->name)) { if (gaym_privacy_check(gc, buddy->name) && gaym_botfilter_check(gc, buddy->name, NULL, TRUE)) { gaim_conv_chat_unignore(GAIM_CONV_CHAT(convo), buddy->name); } else { gaim_conv_chat_ignore(GAIM_CONV_CHAT(convo), buddy->name); } ops->chat_update_user((convo), buddy->name); } } else { if (gaym_privacy_check(gc, buddy->name) && gaym_botfilter_check(gc, buddy->name, NULL, TRUE)) { gaim_conv_chat_unignore(GAIM_CONV_CHAT(convo), buddy->name); } else { gaim_conv_chat_ignore(GAIM_CONV_CHAT(convo), buddy->name); } ops->chat_update_user((convo), buddy->name); } } } }
void gaim_privacy_deny(GaimAccount *account, const char *who, gboolean local, gboolean restore) { GSList *list; switch (account->perm_deny) { case GAIM_PRIVACY_ALLOW_ALL: if (!restore) { /* Empty the deny-list. */ for (list = account->deny; list != NULL; ) { char *person = list->data; list = list->next; gaim_privacy_deny_remove(account, person, local); } } gaim_privacy_deny_add(account, who, local); account->perm_deny = GAIM_PRIVACY_DENY_USERS; break; case GAIM_PRIVACY_ALLOW_USERS: gaim_privacy_permit_remove(account, who, local); break; case GAIM_PRIVACY_DENY_USERS: gaim_privacy_deny_add(account, who, local); break; case GAIM_PRIVACY_DENY_ALL: break; case GAIM_PRIVACY_ALLOW_BUDDYLIST: if (gaim_find_buddy(account, who)) { add_buddies_in_permit(account, local); gaim_privacy_permit_remove(account, who, local); account->perm_deny = GAIM_PRIVACY_ALLOW_USERS; } break; default: g_return_if_reached(); } }