private void StartOrResumeTasks() { // NOTE: In IIS 7 using integrated mode, HttpContext.Current will always be null in Application_Start // http://weblogs.asp.net/jgaylord/archive/2008/09/04/iis7-integrated-mode-and-global-asax.aspx if (WebConfigSettings.UseAppKeepAlive) { AppKeepAliveTask keepAlive; try { try { if ((HttpContext.Current != null) && (HttpContext.Current.Request != null)) { keepAlive = new AppKeepAliveTask(); keepAlive.UrlToRequest = WebUtils.GetSiteRoot(); keepAlive.MaxRunTimeMinutes = WebConfigSettings.AppKeepAliveMaxRunTimeMinutes; keepAlive.MinutesToSleep = WebConfigSettings.AppKeepAliveSleepMinutes; keepAlive.QueueTask(); } } catch (HttpException) { //this error will be thrown when using IIS 7 Integrated pipeline mode //since we have no context.Request to get the site root, in IIS 7 Integrated pipeline mode //we need to use an additional config setting to get the url to request for keep alive if (WebConfigSettings.AppKeepAliveUrl.Length > 0) { keepAlive = new AppKeepAliveTask(); keepAlive.UrlToRequest = WebConfigSettings.AppKeepAliveUrl; keepAlive.MaxRunTimeMinutes = WebConfigSettings.AppKeepAliveMaxRunTimeMinutes; keepAlive.MinutesToSleep = WebConfigSettings.AppKeepAliveSleepMinutes; keepAlive.QueueTask(); } } } catch (Exception ex) { // if a new installation the table will not exist yet so just log and swallow log.Error(ex); } } WebTaskManager.StartOrResumeTasks(true); }
public static void SendRejectionNotification( SmtpSettings smtpSettings, SiteSettings siteSettings, SiteUser rejectingUser, ContentWorkflow rejectedWorkflow, string rejectionReason ) { EmailMessageTask messageTask = new EmailMessageTask(smtpSettings); messageTask.SiteGuid = siteSettings.SiteGuid; messageTask.EmailFrom = siteSettings.DefaultEmailFromAddress; messageTask.EmailReplyTo = rejectingUser.Email; messageTask.EmailTo = rejectedWorkflow.RecentActionByUserEmail; CultureInfo defaultCulture = SiteUtils.GetDefaultCulture(); messageTask.Subject = ResourceHelper.GetMessageTemplate(defaultCulture, "ApprovalRequestRejectionNotificationSubject.config").Replace("{SiteName}", siteSettings.SiteName); StringBuilder message = new StringBuilder(); message.Append(ResourceHelper.GetMessageTemplate(defaultCulture, "ApprovalRequestRejectionNotification.config")); message.Replace("{ModuleTitle}", rejectedWorkflow.ModuleTitle); message.Replace("{ApprovalRequestedDate}", rejectedWorkflow.RecentActionOn.ToShortDateString()); message.Replace("{RejectionReason}", rejectionReason); message.Replace("{RejectedBy}", rejectingUser.Name); if (!Email.IsValidEmailAddressSyntax(rejectedWorkflow.RecentActionByUserEmail)) { //invalid address log it log.Error("Failed to send workflow rejection message, invalid recipient email " + rejectedWorkflow.RecentActionByUserEmail + " message was " + message.ToString()); return; } messageTask.TextBody = message.ToString(); messageTask.QueueTask(); WebTaskManager.StartOrResumeTasks(); }
public override void UserRegisteredHandler(object sender, UserRegisteredEventArgs e) { //if (sender == null) return; if (e == null) { return; } if (e.SiteUser == null) { return; } if (!WebConfigSettings.NotifyAdminsOnNewUserRegistration) { return; } log.Debug("NotifyAdminUserRegisteredHandler called for new user " + e.SiteUser.Email); if (HttpContext.Current == null) { return; } //lookup admin users and send notification email with link to manage user SiteSettings siteSettings = CacheHelper.GetCurrentSiteSettings(); CultureInfo defaultCulture = ResourceHelper.GetDefaultCulture(); //Role adminRole = Role.GetRoleByName(siteSettings.SiteId, "Admins"); //if (adminRole == null) //{ // // TODO: log it? // return; //} //DataTable admins = SiteUser.GetRoleMembers(adminRole.RoleId); string subjectTemplate = ResourceHelper.GetMessageTemplate(defaultCulture, "NotifyAdminofNewUserRegistationSubject.config"); string textBodyTemplate = ResourceHelper.GetMessageTemplate(defaultCulture, "NotifyAdminofNewUserRegistationMessage.config"); string siteRoot = SiteUtils.GetNavigationSiteRoot(); SmtpSettings smtpSettings = SiteUtils.GetSmtpSettings(); List <string> adminEmails = SiteUser.GetEmailAddresses(siteSettings.SiteId, "Admins;"); //foreach (DataRow row in admins.Rows) foreach (string email in adminEmails) { if (WebConfigSettings.EmailAddressesToExcludeFromAdminNotifications.IndexOf(email, StringComparison.InvariantCultureIgnoreCase) > -1) { continue; } EmailMessageTask messageTask = new EmailMessageTask(smtpSettings); messageTask.EmailFrom = siteSettings.DefaultEmailFromAddress; //messageTask.EmailTo = row["Email"].ToString(); messageTask.EmailTo = email; messageTask.Subject = string.Format( defaultCulture, subjectTemplate, e.SiteUser.Email, siteRoot ); string manageUserLink = siteRoot + "/Admin/ManageUsers.aspx?userid=" + e.SiteUser.UserId.ToString(CultureInfo.InvariantCulture); messageTask.TextBody = string.Format( defaultCulture, textBodyTemplate, siteSettings.SiteName, siteRoot, manageUserLink ); messageTask.SiteGuid = siteSettings.SiteGuid; messageTask.QueueTask(); } WebTaskManager.StartOrResumeTasks(); }
public static void SendApprovalRequestNotification( SmtpSettings smtpSettings, SiteSettings siteSettings, SiteUser submittingUser, ContentWorkflow draftWorkflow, string approvalRoles, string contentUrl ) { if (string.IsNullOrEmpty(approvalRoles)) { approvalRoles = "Admins;Content Administrators;Content Publishers;"; } List <string> emailAddresses = SiteUser.GetEmailAddresses(siteSettings.SiteId, approvalRoles); int queuedMessageCount = 0; CultureInfo defaultCulture = SiteUtils.GetDefaultCulture(); string messageTemplate = ResourceHelper.GetMessageTemplate(defaultCulture, "ApprovalRequestNotification.config"); string messageSubject = ResourceHelper.GetMessageTemplate(defaultCulture, "ApprovalRequestNotificationSubject.config").Replace("{SiteName}", siteSettings.SiteName); foreach (string email in emailAddresses) { if (WebConfigSettings.EmailAddressesToExcludeFromAdminNotifications.IndexOf(email, StringComparison.InvariantCultureIgnoreCase) > -1) { continue; } if (!Email.IsValidEmailAddressSyntax(email)) { continue; } EmailMessageTask messageTask = new EmailMessageTask(smtpSettings); messageTask.SiteGuid = siteSettings.SiteGuid; messageTask.EmailFrom = siteSettings.DefaultEmailFromAddress; messageTask.EmailReplyTo = submittingUser.Email; messageTask.EmailTo = email; messageTask.Subject = messageSubject; StringBuilder message = new StringBuilder(); message.Append(messageTemplate); message.Replace("{ModuleTitle}", draftWorkflow.ModuleTitle); message.Replace("{ApprovalRequestedDate}", draftWorkflow.RecentActionOn.ToShortDateString()); message.Replace("{SubmittedBy}", submittingUser.Name); message.Replace("{ContentUrl}", contentUrl); if (!Email.IsValidEmailAddressSyntax(draftWorkflow.RecentActionByUserEmail)) { //invalid address log it log.Error("Failed to send workflow rejection message, invalid recipient email " + draftWorkflow.RecentActionByUserEmail + " message was " + message.ToString()); return; } messageTask.TextBody = message.ToString(); messageTask.QueueTask(); queuedMessageCount += 1; } if (queuedMessageCount > 0) { WebTaskManager.StartOrResumeTasks(); } }