public static UserEmail Create(Core core, User owner, string email, EmailAddressTypes type, bool isRegistration) { if (core == null) { throw new NullCoreException(); } if (!User.CheckEmailValid(email)) { throw new EmailInvalidException(); } if (!User.CheckEmailUnique(core, email)) { throw new EmailAlreadyRegisteredException(); } string activateKey = User.GenerateActivationSecurityToken(); InsertQuery iquery = new InsertQuery(UserEmail.GetTable(typeof(UserEmail))); iquery.AddField("email_user_id", owner.Id); iquery.AddField("email_email", email); iquery.AddField("email_type", (byte)type); if (!isRegistration) { iquery.AddField("email_verified", false); } else { iquery.AddField("email_verified", true); } iquery.AddField("email_time_ut", UnixTime.UnixTimeStamp()); iquery.AddField("email_activate_code", activateKey); iquery.AddField("email_simple_permissions", true); long emailId = core.Db.Query(iquery); if (!isRegistration) { string activateUri = string.Format(core.Hyperlink.Uri + "register/?mode=activate-email&id={0}&key={1}", emailId, activateKey); Template emailTemplate = new Template(core.Http.TemplateEmailPath, "email_activation.html"); emailTemplate.Parse("TO_NAME", owner.DisplayName); emailTemplate.Parse("U_ACTIVATE", activateUri); emailTemplate.Parse("USERNAME", owner.UserName); core.Email.SendEmail(email, core.Settings.SiteTitle + " email activation", emailTemplate); } UserEmail newEmail = new UserEmail(core, emailId); Access.CreateGrantForPrimitive(core, newEmail, User.GetCreatorKey(core), "VIEW"); if (!isRegistration) { Access.CreateGrantForPrimitive(core, newEmail, Friend.GetFriendsGroupKey(core), "VIEW"); } Access.CreateGrantForPrimitive(core, newEmail, User.GetEveryoneGroupKey(core), "RECIEVE_FROM"); return newEmail; }
public static UserEmail Create(Core core, string email, EmailAddressTypes type) { return Create(core, core.Session.LoggedInMember, email, type, false); }