public static void SaveVcardAvatar(string username, int UserIndex, IQ vCard) { string data = ""; Element p = vCard.SelectSingleElement("vCard"); if (p.HasTag("PHOTO")) { p = p.SelectSingleElement("PHOTO"); if (p.HasTag("BINVAL")) { p = p.SelectSingleElement("BINVAL"); data = p.Value; } } if (!string.IsNullOrEmpty(data)) { bool res; string fname = ImageTools.SaveAvatar(data, out res); if (res) { BLL.Users api = new BLL.Users(); api.ChangeUserPicture(username, fname); IQ iq = new IQ(); if (vCard.HasAttribute("id")) { iq.Id = vCard.Id; } iq.To = new agsXMPP.Jid(username + "@" + Config.AppSetting.domain); iq.Type = IqType.result; iq.Vcard = CreateUserVcard(username); ThreadTools.Users.Online[UserIndex].Send(iq); } } }
public static void Avatar(string username, IQ iq) { DAL.TbUsers cuser; BLL.Users api = new BLL.Users(); switch (iq.Type) { case IqType.get: if (iq.To != null) { cuser = api.Find(iq.To.User); } else { cuser = api.Find(username); } if (cuser != null) { if (!string.IsNullOrEmpty(cuser.TbVcard.VcardPhoto)) { iq.SwitchDirection(); iq.Type = IqType.result; iq.Query.Namespace = "jabber:iq:avatar"; iq.Query.ChildNodes.Clear(); Element dataEl = new Element("data"); dataEl.Value = ImageTools.ToBase64(cuser.TbVcard.VcardPhoto); iq.Query.AddChild(dataEl); int index; if (ThreadTools.Users.Online.IsAuthenticated(username, out index)) { ThreadTools.Users.Online[index].Send(iq); } } } break; case IqType.set: case IqType.result: if (iq.Query.HasTag("data")) { Element el = iq.Query.SelectSingleElement("data"); cuser = api.Find(username); string pname; bool isSaved; pname = ImageTools.SaveAvatar(el.Value, out isSaved); if (isSaved) { api.ChangeUserPicture(username, pname); Rosters.SendStatus(username); } } break; } }