Mercurial > pidgin.yaz
comparison libpurple/protocols/oscar/oscar.c @ 20721:d579d77d4604
Make phone numbers always show up as online and mobile. AOL takes
does this for us for US phone numbers, so this change is mostly
for ICQ users who've added non-US phone numbers to their buddy list
(in the form of "+32123423")
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Sun, 30 Sep 2007 00:34:03 +0000 |
parents | 408c4bb03915 |
children | 2bb82b05d30a |
comparison
equal
deleted
inserted
replaced
20720:217d520f7edb | 20721:d579d77d4604 |
---|---|
2182 static void | 2182 static void |
2183 purple_auth_request(struct name_data *data, char *msg) | 2183 purple_auth_request(struct name_data *data, char *msg) |
2184 { | 2184 { |
2185 PurpleConnection *gc; | 2185 PurpleConnection *gc; |
2186 OscarData *od; | 2186 OscarData *od; |
2187 PurpleAccount *account; | |
2187 PurpleBuddy *buddy; | 2188 PurpleBuddy *buddy; |
2188 PurpleGroup *group; | 2189 PurpleGroup *group; |
2189 | 2190 |
2190 gc = data->gc; | 2191 gc = data->gc; |
2191 od = gc->proto_data; | 2192 od = gc->proto_data; |
2192 buddy = purple_find_buddy(purple_connection_get_account(gc), data->name); | 2193 account = purple_connection_get_account(gc); |
2194 buddy = purple_find_buddy(account, data->name); | |
2193 if (buddy != NULL) | 2195 if (buddy != NULL) |
2194 group = purple_buddy_get_group(buddy); | 2196 group = purple_buddy_get_group(buddy); |
2195 else | 2197 else |
2196 group = NULL; | 2198 group = NULL; |
2197 | 2199 |
2199 { | 2201 { |
2200 purple_debug_info("oscar", "ssi: adding buddy %s to group %s\n", | 2202 purple_debug_info("oscar", "ssi: adding buddy %s to group %s\n", |
2201 buddy->name, group->name); | 2203 buddy->name, group->name); |
2202 aim_ssi_sendauthrequest(od, data->name, msg ? msg : _("Please authorize me so I can add you to my buddy list.")); | 2204 aim_ssi_sendauthrequest(od, data->name, msg ? msg : _("Please authorize me so I can add you to my buddy list.")); |
2203 if (!aim_ssi_itemlist_finditem(od->ssi.local, group->name, buddy->name, AIM_SSI_TYPE_BUDDY)) | 2205 if (!aim_ssi_itemlist_finditem(od->ssi.local, group->name, buddy->name, AIM_SSI_TYPE_BUDDY)) |
2206 { | |
2204 aim_ssi_addbuddy(od, buddy->name, group->name, NULL, purple_buddy_get_alias_only(buddy), NULL, NULL, TRUE); | 2207 aim_ssi_addbuddy(od, buddy->name, group->name, NULL, purple_buddy_get_alias_only(buddy), NULL, NULL, TRUE); |
2208 | |
2209 /* Mobile users should always be online */ | |
2210 if (buddy->name[0] == '+') { | |
2211 purple_prpl_got_user_status(account, | |
2212 purple_buddy_get_name(buddy), | |
2213 OSCAR_STATUS_ID_AVAILABLE, NULL); | |
2214 purple_prpl_got_user_status(account, | |
2215 purple_buddy_get_name(buddy), | |
2216 OSCAR_STATUS_ID_MOBILE, NULL); | |
2217 } | |
2218 } | |
2205 } | 2219 } |
2206 } | 2220 } |
2207 | 2221 |
2208 static void | 2222 static void |
2209 purple_auth_dontrequest(struct name_data *data) | 2223 purple_auth_dontrequest(struct name_data *data) |
4619 } | 4633 } |
4620 #endif | 4634 #endif |
4621 | 4635 |
4622 void | 4636 void |
4623 oscar_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) { | 4637 oscar_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) { |
4624 OscarData *od = (OscarData *)gc->proto_data; | 4638 OscarData *od; |
4639 PurpleAccount *account; | |
4640 | |
4641 od = (OscarData *)gc->proto_data; | |
4642 account = purple_connection_get_account(gc); | |
4625 | 4643 |
4626 if (!aim_snvalid(buddy->name)) { | 4644 if (!aim_snvalid(buddy->name)) { |
4627 gchar *buf; | 4645 gchar *buf; |
4628 buf = g_strdup_printf(_("Could not add the buddy %s because the screen name is invalid. Screen names must be a valid email address, or start with a letter and contain only letters, numbers and spaces, or contain only numbers."), buddy->name); | 4646 buf = g_strdup_printf(_("Could not add the buddy %s because the screen name is invalid. Screen names must be a valid email address, or start with a letter and contain only letters, numbers and spaces, or contain only numbers."), buddy->name); |
4629 if (!purple_conv_present_error(buddy->name, purple_connection_get_account(gc), buf)) | 4647 if (!purple_conv_present_error(buddy->name, account, buf)) |
4630 purple_notify_error(gc, NULL, _("Unable To Add"), buf); | 4648 purple_notify_error(gc, NULL, _("Unable To Add"), buf); |
4631 g_free(buf); | 4649 g_free(buf); |
4632 | 4650 |
4633 /* Remove from local list */ | 4651 /* Remove from local list */ |
4634 purple_blist_remove_buddy(buddy); | 4652 purple_blist_remove_buddy(buddy); |
4638 | 4656 |
4639 if ((od->ssi.received_data) && !(aim_ssi_itemlist_finditem(od->ssi.local, group->name, buddy->name, AIM_SSI_TYPE_BUDDY))) { | 4657 if ((od->ssi.received_data) && !(aim_ssi_itemlist_finditem(od->ssi.local, group->name, buddy->name, AIM_SSI_TYPE_BUDDY))) { |
4640 purple_debug_info("oscar", | 4658 purple_debug_info("oscar", |
4641 "ssi: adding buddy %s to group %s\n", buddy->name, group->name); | 4659 "ssi: adding buddy %s to group %s\n", buddy->name, group->name); |
4642 aim_ssi_addbuddy(od, buddy->name, group->name, NULL, purple_buddy_get_alias_only(buddy), NULL, NULL, 0); | 4660 aim_ssi_addbuddy(od, buddy->name, group->name, NULL, purple_buddy_get_alias_only(buddy), NULL, NULL, 0); |
4661 | |
4662 /* Mobile users should always be online */ | |
4663 if (buddy->name[0] == '+') { | |
4664 purple_prpl_got_user_status(account, | |
4665 purple_buddy_get_name(buddy), | |
4666 OSCAR_STATUS_ID_AVAILABLE, NULL); | |
4667 purple_prpl_got_user_status(account, | |
4668 purple_buddy_get_name(buddy), | |
4669 OSCAR_STATUS_ID_MOBILE, NULL); | |
4670 } | |
4643 } | 4671 } |
4644 | 4672 |
4645 /* XXX - Should this be done from AIM accounts, as well? */ | 4673 /* XXX - Should this be done from AIM accounts, as well? */ |
4646 if (od->icq) | 4674 if (od->icq) |
4647 aim_icq_getalias(od, buddy->name); | 4675 aim_icq_getalias(od, buddy->name); |
4953 { | 4981 { |
4954 purple_check_comment(od, comment); | 4982 purple_check_comment(od, comment); |
4955 g_free(comment); | 4983 g_free(comment); |
4956 } | 4984 } |
4957 } | 4985 } |
4986 | |
4987 /* Mobile users should always be online */ | |
4988 if (b->name[0] == '+') { | |
4989 purple_prpl_got_user_status(account, | |
4990 purple_buddy_get_name(b), | |
4991 OSCAR_STATUS_ID_AVAILABLE, NULL); | |
4992 purple_prpl_got_user_status(account, | |
4993 purple_buddy_get_name(b), | |
4994 OSCAR_STATUS_ID_MOBILE, NULL); | |
4995 } | |
4996 | |
4958 g_free(gname_utf8); | 4997 g_free(gname_utf8); |
4959 g_free(alias_utf8); | 4998 g_free(alias_utf8); |
4960 } | 4999 } |
4961 } break; | 5000 } break; |
4962 | 5001 |
5143 } | 5182 } |
5144 | 5183 |
5145 purple_debug_info("oscar", | 5184 purple_debug_info("oscar", |
5146 "ssi: adding buddy %s to group %s to local list\n", name, gname_utf8 ? gname_utf8 : _("Orphans")); | 5185 "ssi: adding buddy %s to group %s to local list\n", name, gname_utf8 ? gname_utf8 : _("Orphans")); |
5147 purple_blist_add_buddy(b, NULL, g, NULL); | 5186 purple_blist_add_buddy(b, NULL, g, NULL); |
5187 | |
5188 /* Mobile users should always be online */ | |
5189 if (b->name[0] == '+') { | |
5190 purple_prpl_got_user_status(account, | |
5191 purple_buddy_get_name(b), | |
5192 OSCAR_STATUS_ID_AVAILABLE, NULL); | |
5193 purple_prpl_got_user_status(account, | |
5194 purple_buddy_get_name(b), | |
5195 OSCAR_STATUS_ID_MOBILE, NULL); | |
5196 } | |
5197 | |
5148 } | 5198 } |
5149 | 5199 |
5150 g_free(gname_utf8); | 5200 g_free(gname_utf8); |
5151 g_free(alias_utf8); | 5201 g_free(alias_utf8); |
5152 | 5202 |