예제 #1
0
        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);
                }
            }
        }
예제 #2
0
        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;
            }
        }