コード例 #1
0
ファイル: Rest.cs プロジェクト: nul800sebastiaan/OurUmbraco
        public static string SetAvatar(int mId, string service)
        {
            string retval = "";
            Member m = new Member(mId);

            if (m != null) {
                switch (service) {

                    case "twitter":
                        if (m.getProperty("twitter") != null && m.getProperty("twitter").Value.ToString() != "") {
                            XPathNodeIterator twitData = Twitter.Profile(m.getProperty("twitter").Value.ToString());
                            if (twitData.MoveNext()) {
                                string imgUrl = twitData.Current.SelectSingleNode("//profile_image_url").Value;
                                return saveUrlAsBuddyIcon(imgUrl, m);
                            }
                        }
                        break;
                    case "gravatar":
                        string gUrl = "http://www.gravatar.com/avatar/" + umbraco.library.md5(m.Email) + "?s=48&d=monsterid";
                        return saveUrlAsBuddyIcon(gUrl, m);
                    default:
                        break;
                }
            }

            return retval;
        }
コード例 #2
0
        protected void LinkBanMemberClick(object sender, EventArgs e)
        {
            if (CurrentMember.MemberIsAdmin && ProfileMember.MemberId != null)
            {
                string usermessage;
                var cMem = new Member((int)ProfileMember.MemberId);

                if(ProfileMember.MemberIsBanned)
                {
                    //Un ban member
                    cMem.getProperty("forumUserIsBanned").Value = "0";
                    usermessage = library.GetDictionaryItem("MemberIsNowNotBanned");
                }
                else
                {
                    // Ban the member
                    cMem.getProperty("forumUserIsBanned").Value = "1";
                    usermessage = library.GetDictionaryItem("MemberIsNowBanned");
                }

                //Save member
                cMem.Save();

                //Generate member Xml Cache
                cMem.XmlGenerate(new System.Xml.XmlDocument());

                // Redirect to show message
                Response.Redirect(string.Concat(CurrentPageAbsoluteUrl, "?m=", usermessage));
            }
        }
コード例 #3
0
        protected void createMember(object sender, EventArgs e)
        {
            if (tb_email.Text != "")
                {
                    m = Member.GetMemberFromEmail(tb_email.Text);
                    if (m == null)
                    {
                        MemberType mt = MemberType.GetByAlias(memberType);
                        m = Member.MakeNew(tb_name.Text, mt, new umbraco.BusinessLogic.User(0));
                        m.Email = tb_email.Text;
                        m.Password = tb_password.Text;
                        m.LoginName = tb_email.Text;

                        //Standard values
                        m.getProperty("reputationTotal").Value = 20;
                        m.getProperty("reputationCurrent").Value = 20;
                        m.getProperty("forumPosts").Value = 0;

                        if (!string.IsNullOrEmpty(Group))
                        {
                            MemberGroup mg = MemberGroup.GetByName(Group);
                            if (mg != null)
                                m.AddGroup(mg.Id);
                        }

                        //set a default avatar
                        Api.CommunityController.SetAvatar(m.Id, "gravatar");

                        m.Save();
                        m.XmlGenerate(new System.Xml.XmlDocument());
                        Member.AddMemberToCache(m);
                        Response.Redirect(umbraco.library.NiceUrl(NextPage));
                    }
                }
        }
コード例 #4
0
        private void RegisterIP()
        {
            if (umbraco.library.IsLoggedOn())
            {
                string ip = HttpContext.Current.Request.UserHostAddress;
                umbraco.cms.businesslogic.member.Member mem = umbraco.cms.businesslogic.member.Member.GetCurrentMember();

                if (mem != null)
                {
                    if (mem.getProperty("ip") != null && mem.getProperty("ip").Value.ToString() != ip)
                    {
                        mem.getProperty("ip").Value = ip;
                        mem.Save();
                    }

                    if (mem.getProperty("blocked") != null && mem.getProperty("blocked").Value.ToString() == "1")
                    {
                        umbraco.cms.businesslogic.member.Member.RemoveMemberFromCache(mem);
                        umbraco.cms.businesslogic.member.Member.ClearMemberFromClient(mem);
                        Response.Redirect(umbraco.library.NiceUrl(BlockedPage));
                    }


                    // if terms of service is not accepted and we're not on the Terms of Service page, redirect
                    if (!Request.Url.PathAndQuery.ToLower().StartsWith("/termsofservice") && mem.getProperty("tos") != null && mem.getProperty("tos").Value.ToString() == "")
                    {
                        Response.Redirect("/termsofservice");
                    }
                }
            }
        }
コード例 #5
0
        void Topic_AfterCreate(object sender, uForum.Businesslogic.CreateEventArgs e)
        {
            uForum.Businesslogic.Topic t = (uForum.Businesslogic.Topic)sender;

            Member mem = new Member(t.MemberId);
            int posts = 0;
            int.TryParse(mem.getProperty("forumPosts").Value.ToString(), out posts);

            mem.getProperty("forumPosts").Value = posts++;
            mem.Save();

            mem.XmlGenerate(new System.Xml.XmlDocument());

            Member.RemoveMemberFromCache(mem.Id);
            Member.AddMemberToCache(mem);
        }
コード例 #6
0
        public override bool SendNotification(System.Xml.XmlNode details, params object[] args)
        {
            try
            {
                SmtpClient c = new SmtpClient(details.SelectSingleNode("//smtp").InnerText);
                c.Credentials = new System.Net.NetworkCredential(details.SelectSingleNode("//username").InnerText, details.SelectSingleNode("//password").InnerText);

                MailAddress from = new MailAddress(
                    details.SelectSingleNode("//from/email").InnerText,
                    details.SelectSingleNode("//from/name").InnerText);

                string subject = details.SelectSingleNode("//subject").InnerText;
                string body = details.SelectSingleNode("//body").InnerText;

                string domain = details.SelectSingleNode("//domain").InnerText;

                int topicId = int.Parse(args[0].ToString());
                int memberId = int.Parse(args[1].ToString());

                uForum.Businesslogic.Topic t = uForum.Businesslogic.Topic.GetTopic(topicId);

                Member m = new Member(memberId);

                body = string.Format(body,
                    t.Title,
                   "https://" + domain + args[2].ToString());

                if (m.getProperty("bugMeNot").Value.ToString() != "1")
                {
                    MailMessage mm = new MailMessage();
                    mm.Subject = subject;
                    mm.Body = body;

                    mm.To.Add(m.Email);
                    mm.From = from;

                    c.Send(mm);
                }

                SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["umbracoDbDSN"]);

                conn.Open();

                string insert =
                       "Insert into notificationMarkAsSolution(topicId, memberID, timestamp) values(@topicId, @memberID, getdate())";

                SqlCommand icomm = new SqlCommand(insert, conn);
                icomm.Parameters.AddWithValue("@topicId", topicId);
                icomm.Parameters.AddWithValue("@memberID", m.Id);
                icomm.ExecuteNonQuery();

                conn.Close();
            }
            catch (Exception e)
            {
                umbraco.BusinessLogic.Log.Add(umbraco.BusinessLogic.LogTypes.Debug, -1, "[Notifications]" + e.Message);
            }
            return true;
        }
コード例 #7
0
        protected void NotSpamTopic(Object sender, CommandEventArgs e)
        {
            var id = int.Parse(e.CommandArgument.ToString());
            var topic = Topic.GetTopic(id);
            topic.Save(false, true);

            // Set reputation to at least 50 so their next posts won't be automatically marked as spam
            var member = new Member(topic.MemberId);
            int reputation;
            int.TryParse(member.getProperty("reputationTotal").Value.ToString(), out reputation);
            if (reputation < 50)
                member.getProperty("reputationTotal").Value = 50;

            int.TryParse(member.getProperty("reputationCurrent").Value.ToString(), out reputation);
            if (reputation < 50)
                member.getProperty("reputationCurrent").Value = 50;

            FillSpamTopicGrid();
        }
コード例 #8
0
        protected void NotSpamComment(Object sender, CommandEventArgs e)
        {
            var id = int.Parse(e.CommandArgument.ToString());
            var comment = Comment.GetComment(id, true);
            comment.IsSpam = false;
            comment.Save(true);

            // Restore karma
            var member = new Member(comment.MemberId);

            int reputationTotal;
            int.TryParse(member.getProperty("reputationTotal").Value.ToString(), out reputationTotal);
            member.getProperty("reputationTotal").Value = reputationTotal >= 0 ? reputationTotal + 1 : 0;

            int reputationCurrent;
            int.TryParse(member.getProperty("reputationCurrent").Value.ToString(), out reputationCurrent);
            member.getProperty("reputationCurrent").Value = reputationCurrent >= 0 ? reputationCurrent + 1 : 0;

            Forum.MarkAsHam(comment.MemberId, comment.Body, "comment");
            FillSpamCommentGrid();
        }
コード例 #9
0
        void Member_AfterSave(umbraco.cms.businesslogic.member.Member sender, umbraco.cms.businesslogic.SaveEventArgs e)
        {
            string groups = "";

            foreach (MemberGroup mg in sender.Groups.Values)
            {
                groups += mg.Text + ",";
            }

            sender.getProperty("groups").Value = groups.Trim().Trim(',');;
            sender.XmlGenerate(new System.Xml.XmlDocument());
        }
コード例 #10
0
        protected void NotSpamComment(Object sender, CommandEventArgs e)
        {
            var id = int.Parse(e.CommandArgument.ToString());
            var comment = Services.CommentService.Instance().GetById(id);
            comment.IsSpam = false;

            comment.Save(true);

            // Set reputation to at least 50 so their next posts won't be automatically marked as spam
            var member = new Member(comment.MemberId);
            int reputation;
            int.TryParse(member.getProperty("reputationTotal").Value.ToString(), out reputation);
            if (reputation < 50)
                member.getProperty("reputationTotal").Value = 50;

            int.TryParse(member.getProperty("reputationCurrent").Value.ToString(), out reputation);
            if (reputation < 50)
                member.getProperty("reputationCurrent").Value = 50;

            FillSpamCommentGrid();
        }
コード例 #11
0
ファイル: memberSave.cs プロジェクト: ClaytonWang/OurUmbraco
        void Member_AfterSave(Member sender, umbraco.cms.businesslogic.SaveEventArgs e)
        {

            string groups = "";
            foreach (MemberGroup mg in sender.Groups.Values)
            {
                groups += mg.Text + ",";
            }

            sender.getProperty("groups").Value = groups.Trim().Trim(','); ;
            sender.XmlGenerate(new System.Xml.XmlDocument());
        }
コード例 #12
0
        void Topic_AfterCreate(object sender, uForum.Businesslogic.CreateEventArgs e)
        {
            uForum.Businesslogic.Topic t = (uForum.Businesslogic.Topic)sender;

            //WB added to show these events are firing...
            umbraco.BusinessLogic.Log.Add(umbraco.BusinessLogic.LogTypes.Debug, t.Id, "Topic_AfterCreate in ForumPostsCounter() class is starting");

            Member mem = new Member(t.MemberId);
            int posts = 0;
            int.TryParse(mem.getProperty("forumPosts").Value.ToString(), out posts);

            mem.getProperty("forumPosts").Value = (posts + 1);
            mem.Save();

            mem.XmlGenerate(new System.Xml.XmlDocument());

            //Performs the action NewTopic in case we want to reward people for creating new posts.
            uPowers.BusinessLogic.Action a = new uPowers.BusinessLogic.Action("NewTopic");
            a.Perform(mem.Id, t.Id, "New topic created");

            //WB added to show these events are firing...
            umbraco.BusinessLogic.Log.Add(umbraco.BusinessLogic.LogTypes.Debug, t.Id, "Topic_AfterCreate in ForumPostsCounter() class is finishing");
        }
コード例 #13
0
ファイル: Helper.cs プロジェクト: 1508/upac-for-umbraco
 public static bool UpdateSecretCode(Member member)
 {
     string secretCode = Upac.Core.Security.RandomPassword.Generate(CommonUtil.GetSetting("Membership/SecretCodeLength", 7));
     if (member != null)
     {
         Property property = member.getProperty("SecretCode");
         if (property != null)
         {
             property.Value = secretCode;
             member.Save();
         }
     }
     return false;
 }
コード例 #14
0
        public static string SetAvatar(int mId, string service)
        {
            var member = new Member(mId);

            switch (service)
            {
                case "twitter":
                    if (member.getProperty("twitter") != null && member.getProperty("twitter").Value.ToString() != "")
                    {
                        var twitData = Twitter.Profile(member.getProperty("twitter").Value.ToString());
                        if (twitData.MoveNext())
                        {
                            var imgUrl = twitData.Current.SelectSingleNode("//profile_image_url").Value;
                            return SaveUrlAsBuddyIcon(imgUrl, member);
                        }
                    }
                    break;
                case "gravatar":
                    var gravatarUrl = "http://www.gravatar.com/avatar/" + umbraco.library.md5(member.Email) + "?s=48&d=monsterid";
                    return SaveUrlAsBuddyIcon(gravatarUrl, member);
            }

            return string.Empty;
        }
コード例 #15
0
 void Member_New(Member sender, NewEventArgs e)
 {
     //This is a bit of a hack to ensure that the member is approved when created since many people will be using
     // this old api to create members on the front-end and they need to be approved - which is based on whether or not 
     // the Umbraco membership provider is configured.
     var provider = Membership.Provider as UmbracoMembershipProvider;
     if (provider != null)
     {
         var approvedField = provider.ApprovedPropertyTypeAlias;
         var property = sender.getProperty(approvedField);
         if (property != null)
         {
             property.Value = 1;
         }
     }            
 }
コード例 #16
0
        public int create(memberCarrier carrier, int memberTypeId, string username, string password)
        {
            Authenticate(username, password);

            // Some validation
            if (carrier == null)
            {
                throw new Exception("No carrier specified");
            }
            if (carrier.Id != 0)
            {
                throw new Exception("ID cannot be specifed when creating. Must be 0");
            }
            if (string.IsNullOrEmpty(carrier.DisplayedName))
            {
                carrier.DisplayedName = "unnamed";
            }

            // we fetch the membertype
            umbraco.cms.businesslogic.member.MemberType mtype = new umbraco.cms.businesslogic.member.MemberType(memberTypeId);

            // Check if the membertype exists
            if (mtype == null)
            {
                throw new Exception("Membertype " + memberTypeId + " not found");
            }

            // Get the user that creates
            umbraco.BusinessLogic.User user = GetUser(username, password);

            // Create the new member
            umbraco.cms.businesslogic.member.Member newMember = umbraco.cms.businesslogic.member.Member.MakeNew(carrier.DisplayedName, mtype, user);

            // We iterate the properties in the carrier
            if (carrier.MemberProperties != null)
            {
                foreach (memberProperty updatedproperty in carrier.MemberProperties)
                {
                    umbraco.cms.businesslogic.property.Property property = newMember.getProperty(updatedproperty.Key);
                    if (property != null)
                    {
                        property.Value = updatedproperty.PropertyValue;
                    }
                }
            }
            return(newMember.Id);
        }
コード例 #17
0
 protected void RecoverLoginInfo(object sender, EventArgs e)
 {
     if (!string.IsNullOrEmpty(tbEmail.Text))
     {
         MembershipUser user = Helper.GetMembershipUserViaEmail(tbEmail.Text);
         if (user == null)
         {
             ltrReceipt.Text = CommonUtil.GetSetting("Membership/PasswordRecovery/ViewProvideDetails/ReceiptEmailNotFound");
         }
         else if (user.IsLockedOut)
         {
             ltrReceipt.Text = CommonUtil.GetSetting("Membership/PasswordRecovery/ViewProvideDetails/ReceiptProfileIsLocked");
         }
         else if (!user.IsApproved)
         {
             ltrReceipt.Text = CommonUtil.GetSetting("Membership/PasswordRecovery/ViewProvideDetails/ReceiptNotApproved");
         }
         else
         {
             umbraco.cms.businesslogic.member.Member member = Helper.GetMember(user);
             if (member == null)
             {
                 ltrReceipt.Text = CommonUtil.GetSetting("Membership/PasswordRecovery/ViewProvideDetails/ReceiptEmailNotFound");
             }
             else
             {
                 Property property = member.getProperty("SecretCode");
                 if (property == null || string.IsNullOrEmpty(property.Value.ToString()))
                 {
                     throw new Exception("Could not find SecretCode on email: " + tbEmail.Text);
                 }
                 else
                 {
                     string  link    = string.Concat(GetBaseUrl(), HttpContext.Current.Request.Url.AbsolutePath, "?c=", HttpUtility.UrlEncode(property.Value.ToString()), "&u=", HttpUtility.UrlEncode(user.UserName));
                     Message message = new Message();
                     message.Body    = CommonUtil.GetSetting("Membership/PasswordRecovery/ReceiptEmailSendt/EmailBody");
                     message.Subject = CommonUtil.GetSetting("Membership/PasswordRecovery/ReceiptEmailSendt/EmailSubject");
                     message.To.Add(user.Email);
                     message.TemplateVariables.Add("link", link);
                     message.Send();
                     ltrReceipt.Text = CommonUtil.GetSetting("Membership/PasswordRecovery/ReceiptEmailSendt/Screen");
                 }
             }
         }
     }
     multiView.SetActiveView(viewReceipt);
 }
コード例 #18
0
        private void GetMessageCreds()
        {
            // Make sure we have a member id available to us
            MemberId = null;
            if (Request.QueryString["mem"] != null)
                MemberId = Request.QueryString["mem"].ToInt32();

            if (MemberId != null)
            {
                try
                {
                    MessageToMember = new Member((Int32)MemberId);

                    if (MembershipHelper.IsAuthenticated() && 
                        Settings.EnablePrivateMessaging && 
                        MessageToMember.getProperty("forumUserAllowPrivateMessages").Value.ToString() == "1" && 
                        !IsBanned)
                    {

                        //quick check to make sure the member is not PM'ing themselves
                        if (MessageToMember.Id == CurrentMember.MemberId) Response.Redirect(string.Concat(CurrentPageAbsoluteUrl, "?m=", library.GetDictionaryItem("CantMessageYourself")));

                        if (!Page.IsPostBack)
                        {
                            // See if there is a subject querystring, if so we know this is a reply
                            ReplySubject = null;
                            if (Request.QueryString["r"] != null)
                                ReplySubject = "RE: " + Request.QueryString["r"];
                            lvPrivateMessage.Visible = true;
                            //Now if this is a reply, prepopulate the subject textbox
                            var tbMessageSubject = (TextBox)lvPrivateMessage.FindControl("tbMessageSubject");
                            tbMessageSubject.Text = ReplySubject;
                        }

                            var litMemberTo = (Literal)lvPrivateMessage.FindControl("litMemberTo");
                            if (litMemberTo != null)
                                litMemberTo.Text = MessageToMember.LoginName;
                    }
                }
                catch(Exception)
                {
                    // Show friendly message
                    Response.Redirect(string.Concat(CurrentPageAbsoluteUrl, "?m=", "Unable to find that member"));
                }      
            }           
        }
コード例 #19
0
        protected void BtnSubmitMessageClick(object sender, EventArgs e)
        {
            // Check user isn't spammer by checking flood control settings
            if (Helpers.TimeDifferenceInMinutes(DateTime.Now, CurrentMember.MemberLastPrivateMessageTime) > Settings.PrivateMessagingFloodControlTimeSpan)
            {
                var sb = new StringBuilder();

                var tbMessageSubject = (TextBox)lvPrivateMessage.FindControl("tbMessageSubject");
                var tbMessage = (TextBox)lvPrivateMessage.FindControl("txtPost");

                var replylink = string.Concat(Url(),
                                                "/privatemessage.aspx?mem=" + CurrentMember.MemberId,
                                                "&r=" + Helpers.GetSafeHtml(tbMessageSubject.Text).UrlEncode());

                replylink = string.Format("<a href='{0}'>{0}</a>", replylink);

                sb.AppendFormat(library.GetDictionaryItem("PrivateMessageEmailText"),
                                CurrentMember.MemberLoginName,
                                DateTime.Now.ToShortDateString(),
                                Helpers.GetSafeHtml(tbMessageSubject.Text));

                sb.Append(Helpers.GetSafeHtml(tbMessage.Text).ConvertBbCode());

                sb.AppendFormat("<p><b>{0}</b></p><p>{1}</p>", library.GetDictionaryItem("ClickLinkToReply"), replylink);
                Helpers.SendMail(Settings.EmailNotification, MessageToMember.Email, string.Concat(library.GetDictionaryItem("PrivateMessageOn"), Settings.Name), sb.ToString());

                // Lastly update last private message sent on this user
                var cMem = new Member(Convert.ToInt32(CurrentMember.MemberId));
                cMem.getProperty("forumUserLastPrivateMessage").Value = DateTime.Now;
                cMem.Save();
                cMem.XmlGenerate(new System.Xml.XmlDocument());

                // Show friendly message
                Response.Redirect(string.Concat(CurrentPageAbsoluteUrl, "?m=", library.GetDictionaryItem("MessageSent")));
            }
            else
            {
                // Show friendly message
                Response.Redirect(string.Concat(CurrentPageAbsoluteUrl, "?m=",
                                                string.Format(library.GetDictionaryItem("SorryMustWaitBetween"),
                                                Settings.PrivateMessagingFloodControlTimeSpan)));
            }
        }
コード例 #20
0
        private static string SaveUrlAsBuddyIcon(string url, Member m)
        {
            var file = m.Id.ToString(CultureInfo.InvariantCulture);
            var path = HttpContext.Current.Server.MapPath("/media/avatar/" + file + ".jpg");

            if (File.Exists(path))
                File.Delete(path);

            var webClient = new System.Net.WebClient();
            webClient.DownloadFile(url, path);

            m.getProperty("avatar").Value = "/media/avatar/" + file + ".jpg";
            m.XmlGenerate(new XmlDocument());
            m.Save();

            Member.RemoveMemberFromCache(m);
            Member.AddMemberToCache(m);

            return "/media/avatar/" + file + ".jpg";
        }
コード例 #21
0
        public override bool SendNotification(System.Xml.XmlNode details, params object[] args)
        {
            try
            {
                Comment com        = (Comment)args[0];
                Topic   topic      = (Topic)args[1];
                string  url        = (string)args[2];
                string  memberName = (string)args[3];


                if (com.IsSpam)
                {
                    umbraco.BusinessLogic.Log.Add(umbraco.BusinessLogic.LogTypes.Debug, -1, string.Format("[Notifications] Comment Id {{0}} is marked as spam, no notification sent{0}", com.Id));
                    return(true);
                }


                //SMTP SETTINGS
                SmtpClient c = new SmtpClient();
                //c.Credentials = new System.Net.NetworkCredential(details.SelectSingleNode("//username").InnerText, details.SelectSingleNode("//password").InnerText);

                //SENDER ADDRESS
                MailAddress from = new MailAddress(
                    details.SelectSingleNode("//from/email").InnerText,
                    details.SelectSingleNode("//from/name").InnerText);

                //Notification details
                var domain  = details.SelectSingleNode("//domain").InnerText;
                var subject = string.Format(details.SelectSingleNode("//subject").InnerText, topic.Title);
                var body    = details.SelectSingleNode("//body").InnerText;
                body = string.Format(body, topic.Title, "https://" + domain + url + "#comment-" + com.Id, memberName, HttpUtility.HtmlDecode(umbraco.library.StripHtml(com.Body)));


                //connect to DB

                SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["umbracoDbDSN"].ConnectionString);
                SqlCommand    comm = new SqlCommand("Select memberId from forumTopicSubscribers where topicId = @topicId", conn);
                comm.Parameters.AddWithValue("@topicId", topic.Id);
                conn.Open();


                //shit this must be so f*****g slow
                SqlDataReader dr = comm.ExecuteReader();
                while (dr.Read())
                {
                    int mid = dr.GetInt32(0);
                    try
                    {
                        var m = new umbraco.cms.businesslogic.member.Member(mid);

                        if (m.Id != com.MemberId &&
                            m.getProperty("bugMeNot").Value.ToString() != "1")
                        {
                            MailMessage mm = new MailMessage();
                            mm.Subject = subject;
                            mm.Body    = body;

                            mm.To.Add(m.Email);
                            mm.From = from;

                            c.Send(mm);
                        }
                    }
                    catch (Exception e)
                    {
                        umbraco.BusinessLogic.Log.Add(umbraco.BusinessLogic.LogTypes.Debug, -1,
                                                      "[Notifications] Error sending mail to " + mid.ToString() + " " + e.Message);
                    }
                }

                conn.Close();
            }
            catch (Exception e)
            {
                umbraco.BusinessLogic.Log.Add(umbraco.BusinessLogic.LogTypes.Debug, -1, "[Notifications]" + e.Message);
            }
            return(true);
        }
コード例 #22
0
        public override bool SendNotification(System.Xml.XmlNode details, params object[] args)
        {
            SmtpClient c = new SmtpClient(details.SelectSingleNode("//smtp").InnerText);

            MailAddress from = new MailAddress(
                details.SelectSingleNode("//from/email").InnerText,
                details.SelectSingleNode("//from/name").InnerText);

            string subject = details.SelectSingleNode("//subject").InnerText;
            string body = details.SelectSingleNode("//body").InnerText;

            SqlConnection conn = new SqlConnection(details.SelectSingleNode("//conn").InnerText);

            string select = @"select id, memberId from forumTopics where answer = 0
                            and created < getdate() - 7
                            and created > '2010-06-10 00:00:00'
                            and id not in (select topicId from notificationMarkAsSolution)
                            order by created desc;";

            SqlCommand comm = new SqlCommand(
                select, conn);

            conn.Open();

            SqlDataReader dr = comm.ExecuteReader();

            string domain = details.SelectSingleNode("//domain").InnerText;

            while (dr.Read())
            {
                int topicId = dr.GetInt32(0);

                uForum.Businesslogic.Topic t = new uForum.Businesslogic.Topic(topicId);

                string mbody = string.Format(body,
                        t.Title,
                        "http://" + domain + args[1].ToString());

                Member m = new Member(dr.GetInt32(1));

                if (m.getProperty("bugMeNot") != null || m.getProperty("bugMeNot").Value.ToString() != "1")
                {
                    MailMessage mm = new MailMessage();
                    mm.Subject = subject;
                    mm.Body = mbody;

                    mm.To.Add(m.Email);
                    mm.From = from;

                    c.Send(mm);
                }

                string insert =
                    "Insert into notificationMarkAsSolution(topicId, memberID, timestamp) values(@topicId, @memberID, getdate())";

                SqlCommand icomm = new SqlCommand(insert, conn);
                icomm.Parameters.AddWithValue("@topicId", topicId);
                icomm.Parameters.AddWithValue("@memberID", m.Id);
                icomm.ExecuteNonQuery();

            }
            conn.Close();

            return true;
        }
        public ActionResult HandleEditProfile(ProfileViewModel model)
        {
            if (!ModelState.IsValid)
            {
                //return PartialView("EditProfile", model);
                return CurrentUmbracoPage();
            }

            //Update the member with our data & save it down
            //Using member ID and not email address in case member has changed their email
            Member updateMember = new Member(model.MemberID);

            updateMember.Text                               = model.Name;
            updateMember.Email                              = model.EmailAddress;
            updateMember.getProperty("description").Value   = model.Description;
            updateMember.getProperty("profileURL").Value    = model.ProfileURL;
            updateMember.getProperty("twitter").Value       = model.Twitter;
            updateMember.getProperty("linkedIn").Value      = model.LinkedIn;
            updateMember.getProperty("skype").Value         = model.Skype;

            //Save the member
            updateMember.Save();

            //Return the view
            //return PartialView("EditProfile", model);
            return RedirectToAction("RenderMemberProfile", new { profileURLtoCheck = model.ProfileURL });
        }
コード例 #24
0
ファイル: Rest.cs プロジェクト: nul800sebastiaan/OurUmbraco
        private static string saveUrlAsBuddyIcon(string url, Member m)
        {
            string _file = m.Id.ToString();
            string _path = HttpContext.Current.Server.MapPath("/media/avatar/" + _file + ".jpg");
            string _currentFile = m.getProperty("avatar").Value.ToString();

            if (System.IO.File.Exists(_path))
                System.IO.File.Delete(_path);

            System.Net.WebClient wc = new System.Net.WebClient();
            wc.DownloadFile(url, _path);

            m.getProperty("avatar").Value = "/media/avatar/" + _file + ".jpg";
            m.XmlGenerate(new XmlDocument());
            m.Save();

            Member.RemoveMemberFromCache(m);
            Member.AddMemberToCache(m);

            return "/media/avatar/" + _file + ".jpg";
        }
コード例 #25
0
        protected void createMember(object sender, EventArgs e)
        {
            //Member is already logged in, and we just need to save his new data...
            if (m != null) {
                m.Text = tb_name.Text;
                m.Email = tb_email.Text;
                m.LoginName = tb_email.Text;

                if (tb_password.Text != "")
                    m.Password = tb_password.Text;

                //optional..
                m.getProperty("twitter").Value = tb_twitter.Text;
                m.getProperty("flickr").Value = tb_flickr.Text;
                m.getProperty("company").Value = tb_company.Text;
                m.getProperty("profileText").Value = tb_bio.Text;

                //location
                m.getProperty("location").Value = tb_location.Text;
                m.getProperty("latitude").Value = tb_lat.Value;
                m.getProperty("longitude").Value = tb_lng.Value;

                //treshold + newsletter
                m.getProperty("treshold").Value = tb_treshold.Text;
                m.getProperty("bugMeNot").Value = cb_bugMeNot.Checked;

                m.XmlGenerate(new System.Xml.XmlDocument());
                m.Save();

                //Refresh the member cache data
                Member.RemoveMemberFromCache(m);
                Member.AddMemberToCache(m);

                Response.Redirect(umbraco.library.NiceUrl(NextPage));

            } else {
                if (tb_email.Text != "") {
                    m = Member.GetMemberFromEmail(tb_email.Text);
                    if (m == null) {
                        MemberType mt = MemberType.GetByAlias(memberType);
                        m = Member.MakeNew(tb_name.Text, mt, new umbraco.BusinessLogic.User(0));
                        m.Email = tb_email.Text;
                        m.Password = tb_password.Text;
                        m.LoginName = tb_email.Text;

                        //Location
                        m.getProperty("location").Value = tb_location.Text;
                        m.getProperty("latitude").Value = tb_lat.Value;
                        m.getProperty("longitude").Value = tb_lng.Value;

                        //optional..
                        m.getProperty("twitter").Value = tb_twitter.Text;
                        m.getProperty("flickr").Value = tb_flickr.Text;
                        m.getProperty("company").Value = tb_company.Text;
                        m.getProperty("profileText").Value = tb_bio.Text;

                        //treshold + newsletter
                        m.getProperty("treshold").Value = tb_treshold.Text;
                        m.getProperty("bugMeNot").Value = cb_bugMeNot.Checked;

                        //Standard values
                        m.getProperty("reputationTotal").Value = 20;
                        m.getProperty("reputationCurrent").Value = 20;
                        m.getProperty("forumPosts").Value = 0;

                        if (!string.IsNullOrEmpty(Group)) {
                            MemberGroup mg = MemberGroup.GetByName(Group);
                            if (mg != null)
                                m.AddGroup(mg.Id);
                        }

                        //set a default avatar
                        Rest.BuddyIcon.SetAvatar(m.Id, "gravatar");

                        m.Save();
                        m.XmlGenerate(new System.Xml.XmlDocument());
                        Member.AddMemberToCache(m);

                        Response.Redirect(umbraco.library.NiceUrl(NextPage));
                    }
                }
            }
        }
コード例 #26
0
        public override bool SendNotification(System.Xml.XmlNode details, params object[] args)
        {
            SmtpClient c = new SmtpClient(details.SelectSingleNode("//smtp").InnerText);
            c.Credentials = new System.Net.NetworkCredential(details.SelectSingleNode("//username").InnerText, details.SelectSingleNode("//password").InnerText);

            MailAddress from = new MailAddress(
                details.SelectSingleNode("//from/email").InnerText,
                details.SelectSingleNode("//from/name").InnerText);

            string subject = details.SelectSingleNode("//subject").InnerText;
            string body = details.SelectSingleNode("//body").InnerText;

            SqlConnection conn = new SqlConnection(details.SelectSingleNode("//conn").InnerText);

            string select = @"SELECT projectId, memberId
                            FROM [projectDownload] d
                            where memberId not in
                            (select memberId from powersProject
                            where id = d.projectId and memberId = d.memberId)
                            and memberId != 0
                            and memberId not in
                            (select memberId from notificationVoteForProject
                            where projectId = d.projectId and memberId = d.memberId)
                            and timestamp < getdate() - 1";

            SqlCommand comm = new SqlCommand(
                select, conn);

            conn.Open();

            SqlDataReader dr = comm.ExecuteReader();

            while (dr.Read())
            {
                int projectId = dr.GetInt32(0);
                Member m = new Member(dr.GetInt32(1));

                Document d = new Document(projectId);

                if (m.getProperty("bugMeNot").Value.ToString() != "1")
                {
                    MailMessage mm = new MailMessage();
                    mm.Subject = subject;
                    mm.Body = body;

                    mm.To.Add(m.Email);
                    mm.From = from;

                    c.Send(mm);
                }

                string insert =
                    @"Insert into notificationVoteForProject(projectId, memberID, timestamp)
                    values(@projectId, @memberId, getdate())";

                SqlCommand icomm = new SqlCommand(insert, conn);
                icomm.Parameters.AddWithValue("@projectId", projectId);
                icomm.Parameters.AddWithValue("@memberId", m.Id);
                icomm.ExecuteNonQuery();

            }
            conn.Close();

            return true;
        }
コード例 #27
0
        private string getMemberProperty(Member m, string propertyAlias, bool isBool)
        {
            if (!String.IsNullOrEmpty(propertyAlias))
            {
                if (m.getProperty(propertyAlias) != null &&
                    m.getProperty(propertyAlias).Value != null)
                {
                    if (isBool)
                    {
                        // Umbraco stored true as 1, which means it can be bool.tryParse'd
                        return m.getProperty(propertyAlias).Value.ToString().Replace("1", "true").Replace("0", "false");
                    }
                    else
                    return m.getProperty(propertyAlias).Value.ToString();
                }
            }

            return null;
        }
コード例 #28
0
ファイル: Topic.cs プロジェクト: KevinJump/OurUmbraco
        public void MarkAsHam()
        {
            var markAsHamEventArgs = new MarkAsHamEventArgs();
            FireBeforeMarkAsHam(markAsHamEventArgs);

            if (markAsHamEventArgs.Cancel)
                return;

            var forum = new Forum(ParentId);

            var topic = GetTopic(Id);
            var member = new Member(topic.MemberId);
            var akismetApi = Forum.GetAkismetApi();
            var akismetComment = Forum.ConstructAkismetComment(member, "topic", string.Format("{0} - {1}", Title, Body));
            akismetApi.SubmitHam(akismetComment);

            Data.SqlHelper.ExecuteNonQuery("UPDATE forumTopics SET isSpam = 0 WHERE id = @id", Data.SqlHelper.CreateParameter("@id", Id.ToString(CultureInfo.InvariantCulture)));

            Id = 0;

            forum.Save();

            // Set reputation to at least 50 so their next posts won't be automatically marked as spam
            int reputation;
            int.TryParse(member.getProperty("reputationTotal").Value.ToString(), out reputation);
            if (reputation < 50)
                member.getProperty("reputationTotal").Value = 50;

            int.TryParse(member.getProperty("reputationCurrent").Value.ToString(), out reputation);
            if (reputation < 50)
                member.getProperty("reputationCurrent").Value = 50;

            member.Save();

            FireAfterMarkAsHam(markAsHamEventArgs);
        }
コード例 #29
0
        public override bool SendNotification(System.Xml.XmlNode details, params object[] args)
        {
            try
            {
                
               

                Comment com = (Comment)args[0];
                Topic topic = (Topic)args[1];
                string url = (string)args[2];
                string memberName = (string)args[3];


                if (com.IsSpam)
                {
                    umbraco.BusinessLogic.Log.Add(umbraco.BusinessLogic.LogTypes.Debug, -1, string.Format("[Notifications] Comment Id {{0}} is marked as spam, no notification sent{0}", com.Id));
                    return true;
                }


                //SMTP SETTINGS
                SmtpClient c = new SmtpClient();
                //c.Credentials = new System.Net.NetworkCredential(details.SelectSingleNode("//username").InnerText, details.SelectSingleNode("//password").InnerText);

                //SENDER ADDRESS
                MailAddress from = new MailAddress(
                    details.SelectSingleNode("//from/email").InnerText,
                    details.SelectSingleNode("//from/name").InnerText);

                //Notification details
                var domain = details.SelectSingleNode("//domain").InnerText;
                var subject = string.Format(details.SelectSingleNode("//subject").InnerText, topic.Title);
                var body = details.SelectSingleNode("//body").InnerText;
                body = string.Format(body, topic.Title, "https://" + domain + url + "#comment-" + com.Id, memberName, HttpUtility.HtmlDecode(umbraco.library.StripHtml(com.Body)));

                
                //connect to DB

                SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["umbracoDbDSN"].ConnectionString);
                SqlCommand comm = new SqlCommand("Select memberId from forumTopicSubscribers where topicId = @topicId", conn);
                comm.Parameters.AddWithValue("@topicId", topic.Id);
                conn.Open();
                

                //shit this must be so f*****g slow
                SqlDataReader dr = comm.ExecuteReader();
                while (dr.Read())
                {
                    int mid = dr.GetInt32(0);
                    try
                    {
                        var m = new umbraco.cms.businesslogic.member.Member(mid);

                        if (m.Id != com.MemberId
                            && m.getProperty("bugMeNot").Value.ToString() != "1")
                        {
                            MailMessage mm = new MailMessage();
                            mm.Subject = subject;
                            mm.Body = body;

                            mm.To.Add(m.Email);
                            mm.From = from;

                            c.Send(mm);
                        }
                    }
                    catch (Exception e)
                    {
                        umbraco.BusinessLogic.Log.Add(umbraco.BusinessLogic.LogTypes.Debug, -1, 
                            "[Notifications] Error sending mail to " +  mid.ToString() + " " + e.Message);
                    }
                }

                conn.Close();
            }
            catch (Exception e)
            {
                umbraco.BusinessLogic.Log.Add(umbraco.BusinessLogic.LogTypes.Debug, -1, "[Notifications]" + e.Message);
            }
            return true;

        }
コード例 #30
0
 private void updateMemberProperty(Member m, string propertyAlias, object propertyValue)
 {
     if (!String.IsNullOrEmpty(propertyAlias))
     {
         if (m.getProperty(propertyAlias) != null)
         {
             m.getProperty(propertyAlias).Value =
                 propertyValue;
         }
     }
 }
コード例 #31
0
        public ActionResult HandleEditProfile(ProfileViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return CurrentUmbracoPage();
            }

            //Update the member with our data & save it down
            //Using member ID and not email address in case member has changed their email
            Member updateMember = new Member(model.MemberID);

            updateMember.Text                               = model.Name;
            updateMember.Email                              = model.EmailAddress;
            updateMember.getProperty("description").Value   = model.Description;
            updateMember.getProperty("profileURL").Value    = model.ProfileURL;
            updateMember.getProperty("twitter").Value       = model.Twitter;
            updateMember.getProperty("linkedIn").Value      = model.LinkedIn;
            updateMember.getProperty("skype").Value         = model.Skype;

            //Save the member
            updateMember.Save();

            //Update success flag (in a TempData key)
            TempData["IsSuccessful"] = true;

            //Return the view
            return RedirectToCurrentUmbracoPage();
        }
コード例 #32
0
        private static bool MemberHasEnoughReputation(Member m)
        {
            var reputation = string.Empty;
            if (m.getProperty("reputationTotal") != null && m.getProperty("reputationTotal").Value != null)
                reputation = m.getProperty("reputationTotal").Value.ToString();

            int reputationTotal;
            var enoughReputation = int.TryParse(reputation, out reputationTotal) && reputationTotal > 30;
            return enoughReputation;
        }
コード例 #33
0
ファイル: Forum.cs プロジェクト: KevinJump/OurUmbraco
        public static bool IsSpam(int memberId, string body, string commentType, int topicId)
        {
            var member = new Member(memberId);

            int reputationTotal;
            int.TryParse(member.getProperty("reputationTotal").Value.ToString(), out reputationTotal);
            // Members with over 50 karma are trusted automatically
            if (reputationTotal >= 50)
                return false;

            var akismetApi = GetAkismetApi();
            var comment = ConstructAkismetComment(member, commentType, body);

            var isAkismetSpam = akismetApi.CommentCheck(comment);

            if (isAkismetSpam)
                SendSpamMail(body, topicId, commentType);

            var isSpam = isAkismetSpam || TextContainsSpam(body);

            if(isSpam)
            {
                akismetApi.SubmitSpam(comment);

                // Deduct karma
                member.getProperty("reputationTotal").Value = reputationTotal >= 0 ? reputationTotal - 1 : 0;

                int reputationCurrent;
                int.TryParse(member.getProperty("reputationCurrent").Value.ToString(), out reputationCurrent);
                member.getProperty("reputationCurrent").Value = reputationCurrent >= 0 ? reputationCurrent - 1 : 0;
            }

            return isSpam;
        }
コード例 #34
0
ファイル: NewForumTopic.cs プロジェクト: joshbtn/OurUmbraco
        public override bool SendNotification(System.Xml.XmlNode details, params object[] args)
        {
            try
            {

                var topic = (Topic)args[0];
                if (topic.IsSpam)
                {
                    umbraco.BusinessLogic.Log.Add(umbraco.BusinessLogic.LogTypes.Debug, -1, string.Format("[Notifications] Topic ID {0} is marked as spam, no notification sent{0}", topic.Id));
                    return true;
                }

                SmtpClient c = new SmtpClient(details.SelectSingleNode("//smtp").InnerText);
                c.Credentials = new System.Net.NetworkCredential(details.SelectSingleNode("//username").InnerText, details.SelectSingleNode("//password").InnerText);

                MailAddress from = new MailAddress(
                    details.SelectSingleNode("//from/email").InnerText,
                    details.SelectSingleNode("//from/name").InnerText);

                string subject = details.SelectSingleNode("//subject").InnerText;
                string body = details.SelectSingleNode("//body").InnerText;

                Member member = (Member)args[2];

                //currently using document api instead of nodefactory
                Document forum = new Document(topic.ParentId);

                subject = string.Format(subject, forum.Text);

                var domain = details.SelectSingleNode("//domain").InnerText;

                body = string.Format(body, forum.Text, "http://" + domain + args[1], member.Text, topic.Title, HttpUtility.HtmlDecode(umbraco.library.StripHtml(topic.Body)));

                SqlConnection conn = new SqlConnection(details.SelectSingleNode("//conn").InnerText);

                SqlCommand comm = new SqlCommand("Select memberId from forumSubscribers where forumId = @forumId", conn);
                comm.Parameters.AddWithValue("@forumId", topic.ParentId);
                conn.Open();

                SqlDataReader dr = comm.ExecuteReader();

                while (dr.Read())
                {

                    int mid = dr.GetInt32(0);
                    try
                    {

                        Member m = new Member(mid);

                        if (m.Id != topic.MemberId
                            && (m.getProperty("bugMeNot").Value.ToString() != "1"))
                        {
                            MailMessage mm = new MailMessage();
                            mm.Subject = subject;
                            mm.Body = body;

                            mm.To.Add(m.Email);
                            mm.From = from;

                            c.Send(mm);
                        }

                    }
                    catch(Exception e)
                    {
                        umbraco.BusinessLogic.Log.Add(umbraco.BusinessLogic.LogTypes.Debug, -1,
                           "[Notifications] Error sending mail to " + mid.ToString() + " " + e.Message);
                    }
                }

                conn.Close();

            }
            catch (Exception e)
            {
                umbraco.BusinessLogic.Log.Add(umbraco.BusinessLogic.LogTypes.Debug, -1, "[Notifications]" + e.Message);
            }
            return true;
        }
コード例 #35
0
ファイル: Forum.cs プロジェクト: KevinJump/OurUmbraco
        public static void MarkAsHam(int memberId, string body, string commentType)
        {
            var akismetApi = new Akismet(AkismetApiKey, "http://our.umbraco.org", "Test/1.0");
            if (akismetApi.VerifyKey() == false)
                throw new Exception("Akismet API key could not be verified");

            var member = new Member(memberId);

            var comment = new AkismetComment
                          {
                              Blog = "http://our.umbraco.org",
                              UserIp = member.getProperty("ip").Value.ToString(),
                              CommentAuthor = member.Text,
                              CommentAuthorEmail = member.Email,
                              CommentType = commentType,
                              CommentContent = body
                          };

            akismetApi.SubmitHam(comment);
        }