/// <summary> /// Deletes staging tasks. Called when the "Delete tasks" button is pressed. /// Expects the CreateStagingServer method to be run first. /// </summary> private bool DeleteTasks() { // Get server ServerInfo server = ServerInfoProvider.GetServerInfo("MyNewServer", CMSContext.CurrentSiteID); if (server != null) { // Get tasks for the server DataSet tasks = TaskInfoProvider.SelectTaskList(CMSContext.CurrentSiteID, server.ServerID, null, null); if (!DataHelper.DataSourceIsEmpty(tasks)) { foreach (DataRow taskDr in tasks.Tables[0].Rows) { // Create task info object from data row TaskInfo deleteTask = new TaskInfo(taskDr); // Delete the task TaskInfoProvider.DeleteTaskInfo(deleteTask); } return(true); } apiDeleteTasks.ErrorMessage = "No tasks found."; } return(false); }
/// <summary> /// Deletes scheduled task. Called when the "Delete task" button is pressed. /// Expects the CreateScheduledTask method to be run first. /// </summary> private bool DeleteScheduledTask() { // Get the scheduled task TaskInfo deleteTask = TaskInfoProvider.GetTaskInfo("MyNewTask", CMSContext.CurrentSiteID); // Delete the scheduled task TaskInfoProvider.DeleteTaskInfo(deleteTask); return(deleteTask != null); }
/// <summary> /// Immediately recalculates score. /// </summary> /// <param name="score">Score to recalculate</param> private void StartRecalculationNow(ScoreInfo score) { if (score.ScoreStatus == ScoreStatusEnum.Recalculating) { // Score is already being recalculated return; } // Delete already scheduled task, it is not needed if (score.ScoreScheduledTaskID > 0) { TaskInfoProvider.DeleteTaskInfo(score.ScoreScheduledTaskID); score.ScoreScheduledTaskID = 0; } // Set score as recalculating before running the async recalculator, so the change is displayed at the UI immediatelly ScoreInfoProvider.MarkScoreAsRecalculating(score); // Recalculate the score ScoreAsyncRecalculator recalculator = new ScoreAsyncRecalculator(score); Task result = recalculator.RunAsync(); LogTaskException(result); }
/// <summary> /// Handles the UniGrid's OnAction event. /// </summary> /// <param name="actionName">Name of item (button) that threw event</param> /// <param name="actionArgument">ID (value of Primary key) of corresponding data row</param> protected void gridElem_OnAction(string actionName, object actionArgument) { switch (actionName.ToLowerCSafe()) { case "edit": if (!String.IsNullOrEmpty(EditURL)) { URLHelper.Redirect(UrlResolver.ResolveUrl(String.Format(EditURL, actionArgument))); } break; case "delete": { // Check "modify" permission if (!MembershipContext.AuthenticatedUser.IsAuthorizedPerResource("CMS.ScheduledTasks", "Modify")) { RedirectToAccessDenied("CMS.ScheduledTasks", "Modify"); } // Delete the task try { int taskId = Convert.ToInt32(actionArgument); TaskInfo ti = TaskInfoProvider.GetTaskInfo(taskId); if (ti != null) { ti.Generalized.LogSynchronization = SynchronizationTypeEnum.LogSynchronization; ti.Generalized.LogIntegration = true; ti.Generalized.LogEvents = true; TaskInfoProvider.DeleteTaskInfo(ti); } } catch (Exception ex) { ShowError(GetString("Task_List.DeleteError"), ex.Message); } } break; case "execute": { // Check "modify" permission if (!MembershipContext.AuthenticatedUser.IsAuthorizedPerResource("CMS.ScheduledTasks", "Modify")) { RedirectToAccessDenied("CMS.ScheduledTasks", "Modify"); } TaskInfo taskInfo = TaskInfoProvider.GetTaskInfo(Convert.ToInt32(actionArgument)); if (taskInfo != null) { SiteInfo siteInfo = SiteInfoProvider.GetSiteInfo(SiteID); if (!taskInfo.TaskEnabled) { // Task is not enabled (won't be executed at the end of request), run it now SchedulingExecutor.ExecuteTask(taskInfo, (siteInfo != null) ? siteInfo.SiteName : SiteContext.CurrentSiteName); } else { if (!taskInfo.TaskIsRunning) { taskInfo.TaskNextRunTime = DateTime.Now; // Update the task TaskInfoProvider.SetTaskInfo(taskInfo); // Run the task SchedulingTimer.RunSchedulerImmediately = true; if (siteInfo != null) { SchedulingTimer.SchedulerRunImmediatelySiteName = siteInfo.SiteName; } } else { ShowWarning(GetString("ScheduledTask.TaskAlreadyrunning")); return; } } ShowConfirmation(GetString("ScheduledTask.WasExecuted")); } } break; } }
/// <summary> /// Handles the UniGrid's OnAction event. /// </summary> /// <param name="actionName">Name of item (button) that threw event</param> /// <param name="actionArgument">ID (value of Primary key) of corresponding data row</param> protected void UniGridTasks_OnAction(string actionName, object actionArgument) { switch (actionName.ToLower()) { case "edit": URLHelper.Redirect("Task_Edit.aspx?taskname=" + actionArgument.ToString() + "&" + GetSiteOrSelectedSite()); break; case "delete": { // Check "modify" permission if (!CMSContext.CurrentUser.IsAuthorizedPerResource("CMS.ScheduledTasks", "Modify")) { RedirectToAccessDenied("CMS.ScheduledTasks", "Modify"); } // Delete the task try { int taskId = Convert.ToInt32(actionArgument); TaskInfo ti = TaskInfoProvider.GetTaskInfo(taskId); if (ti != null) { ti.Generalized.LogSynchronization = SynchronizationTypeEnum.LogSynchronization; ti.Generalized.LogIntegration = true; ti.Generalized.LogEvents = true; TaskInfoProvider.DeleteTaskInfo(ti); } } catch (Exception ex) { lblError.Visible = true; lblError.Text = GetString("Task_List.DeleteError") + " Original exception: " + ex.Message; } } break; case "execute": { // Check "modify" permission if (!CMSContext.CurrentUser.IsAuthorizedPerResource("CMS.ScheduledTasks", "Modify")) { RedirectToAccessDenied("CMS.ScheduledTasks", "Modify"); } TaskInfo ti = TaskInfoProvider.GetTaskInfo(Convert.ToInt32(actionArgument)); if (ti != null) { if (ti.TaskEnabled) { TaskInterval interval = new TaskInterval(); interval = SchedulingHelper.DecodeInterval(ti.TaskInterval); if ((ti.TaskNextRunTime != DateTimeHelper.ZERO_TIME) || (interval.Period == SchedulingHelper.PERIOD_ONCE)) { ti.TaskNextRunTime = DateTime.Now; // Update the task TaskInfoProvider.SetTaskInfo(ti); // Run the task SchedulingTimer.RunSchedulerImmediately = true; if (si != null) { SchedulingTimer.SchedulerRunImmediatelySiteName = si.SiteName; } string url = URLHelper.Url.AbsoluteUri; url = URLHelper.AddParameterToUrl(url, "selectedsiteid", SelectedSiteID.ToString()); lblInfo.Text = GetString("ScheduledTask.WasExecuted"); lblInfo.Visible = true; //ScriptHelper.RegisterStartupScript(this, typeof(string), "InformExecuted", // "alert('" + GetString("ScheduledTask.WasExecuted") + "'); \n" + // "document.location = '" + url + "'; \n", true); } else { lblInfo.Text = GetString("ScheduledTask.TaskAlreadyrunning"); lblInfo.Visible = true; } } else { lblError.Text = GetString("ScheduledTask.TaskNotEnabled"); lblError.Visible = true; } } } break; } }
/// <summary> /// Saves configuration changes. /// </summary> protected void SaveData() { // Check "configure" permission if (!MembershipContext.AuthenticatedUser.IsAuthorizedPerResource("cms.newsletter", "configure")) { RedirectToAccessDenied("cms.newsletter", "configure"); } string scheduledInterval = null; if (isDynamic && chkSchedule.Checked) { // Get scheduled interval for dynamic newsletter scheduledInterval = schedulerInterval.ScheduleInterval; } string errorMessage = ValidateNewsletterValues(); if (!string.IsNullOrEmpty(errorMessage)) { ShowError(errorMessage); return; } NewsletterInfo newsletterObj = NewsletterInfoProvider.GetNewsletterInfo(txtNewsletterName.Text.Trim(), SiteContext.CurrentSiteID); // Newsletter's code name must be unique if (newsletterObj != null && newsletterObj.NewsletterID != EditedNewsletter.NewsletterID) { ShowError(GetString("Newsletter_Edit.NewsletterNameExists")); return; } if (newsletterObj == null) { newsletterObj = NewsletterInfoProvider.GetNewsletterInfo(EditedNewsletter.NewsletterID); } SetNewsletterValues(newsletterObj); // Check if subscription template was selected int subscriptionTemplateValue = ValidationHelper.GetInteger(subscriptionTemplate.Value, 0); if (EditedFeedIsNewsletter() && subscriptionTemplateValue == 0) { ShowError(GetString("Newsletter_Edit.NoSubscriptionTemplateSelected")); return; } newsletterObj.NewsletterSubscriptionTemplateID = subscriptionTemplateValue; // Check if double opt-in template was selected if (chkEnableOptIn.Checked) { int optInTemplateValue = ValidationHelper.GetInteger(optInSelector.Value, 0); if (optInTemplateValue == 0) { ShowError(GetString("Newsletter_Edit.NoOptInTemplateSelected")); return; } newsletterObj.NewsletterOptInTemplateID = optInTemplateValue; } else { newsletterObj.NewsletterOptInTemplateID = 0; } // Check if unsubscription template was selected int unsubscriptionTemplateValue = ValidationHelper.GetInteger(unsubscriptionTemplate.Value, 0); if (unsubscriptionTemplateValue == 0) { ShowError(GetString("Newsletter_Edit.NoUnsubscriptionTemplateSelected")); return; } newsletterObj.NewsletterUnsubscriptionTemplateID = unsubscriptionTemplateValue; // ID of scheduled task which should be deleted int deleteScheduledTaskId = 0; if (isDynamic) { newsletterObj.NewsletterSource = NewsletterSource.Dynamic; newsletterObj.NewsletterDynamicURL = txtNewsletterDynamicURL.Value.ToString(); newsletterObj.NewsletterDynamicSubject = radFollowing.Checked ? txtSubject.Text : string.Empty; if ((String.IsNullOrEmpty(txtNewsletterDynamicURL.Value.ToString()))) { // Dynamic URL cannot be empty ShowError(GetString("newsletter_edit.sourcepageurlempty")); return; } if (chkSchedule.Checked) { if (!schedulerInterval.CheckOneDayMinimum()) { // If problem occurred while setting schedule interval ShowError(GetString("Newsletter_Edit.NoDaySelected")); return; } TaskInterval taskInterval = SchedulingHelper.DecodeInterval(scheduledInterval); if (!DataTypeManager.IsValidDate(taskInterval.StartTime)) { ShowError(GetString("Newsletter.IncorrectDate")); return; } UpdateDynamicNewsletterTask(newsletterObj, taskInterval); } else { if (newsletterObj.NewsletterDynamicScheduledTaskID > 0) { // Store task ID for deletion deleteScheduledTaskId = newsletterObj.NewsletterDynamicScheduledTaskID; } newsletterObj.NewsletterDynamicScheduledTaskID = 0; schedulerInterval.Visible = false; } } else { newsletterObj.NewsletterSource = NewsletterSource.TemplateBased; // Check if at least one template is selected if (string.IsNullOrEmpty(ValidationHelper.GetString(usTemplates.Value, null))) { ShowError(GetString("Newsletter_Edit.NoEmailTemplateSelected")); usTemplates.Value = mCurrentTemplates; return; } SaveTemplates(); } // Save changes to DB NewsletterInfoProvider.SetNewsletterInfo(newsletterObj); if (deleteScheduledTaskId > 0) { // Delete scheduled task if schedule mail-outs were unchecked TaskInfoProvider.DeleteTaskInfo(deleteScheduledTaskId); } ShowChangesSaved(); // Update breadcrumbs ScriptHelper.RefreshTabHeader(Page, newsletterObj.NewsletterDisplayName); }
/// <summary> /// Saves configuration changes. /// </summary> protected void SaveData() { // Check "configure" permission if (!CMSContext.CurrentUser.IsAuthorizedPerResource("cms.newsletter", "configure")) { RedirectToCMSDeskAccessDenied("cms.newsletter", "configure"); } string scheduledInterval = null; if (isDynamic && chkSchedule.Checked) { // Get scheduled interval for dynamic newsletter scheduledInterval = schedulerInterval.ScheduleInterval; } string errorMessage = ValidateNewsletterValues(); if (!string.IsNullOrEmpty(errorMessage)) { ShowError(errorMessage); return; } NewsletterInfo newsletterObj = NewsletterInfoProvider.GetNewsletterInfo(txtNewsletterName.Text.Trim(), CMSContext.CurrentSiteID); // Newsletter's code name must be unique if (newsletterObj != null && newsletterObj.NewsletterID != newsletterId) { ShowError(GetString("Newsletter_Edit.NewsletterNameExists")); return; } if (newsletterObj == null) { newsletterObj = NewsletterInfoProvider.GetNewsletterInfo(newsletterId); } SetNewsletterValues(newsletterObj); // Check if subscription template was selected int subscriptionTemplateValue = ValidationHelper.GetInteger(subscriptionTemplate.Value, 0); if (subscriptionTemplateValue == 0) { ShowError(GetString("Newsletter_Edit.NoSubscriptionTemplateSelected")); return; } newsletterObj.NewsletterSubscriptionTemplateID = subscriptionTemplateValue; // Check if double opt-in template was selected int optInTemplateValue = ValidationHelper.GetInteger(optInSelector.Value, 0); if (newsletterObj.NewsletterEnableOptIn && optInTemplateValue == 0) { ShowError(GetString("Newsletter_Edit.NoOptInTemplateSelected")); return; } newsletterObj.NewsletterOptInTemplateID = optInTemplateValue; // Check if unsubscription template was selected int unsubscriptionTemplateValue = ValidationHelper.GetInteger(unsubscriptionTemplate.Value, 0); if (unsubscriptionTemplateValue == 0) { ShowError(GetString("Newsletter_Edit.NoUnsubscriptionTemplateSelected")); return; } newsletterObj.NewsletterUnsubscriptionTemplateID = unsubscriptionTemplateValue; // ID of scheduled task which should be deleted int deleteScheduledTaskId = 0; if (isDynamic) { newsletterObj.NewsletterType = NewsletterType.Dynamic; newsletterObj.NewsletterDynamicSubject = radFollowing.Checked ? txtSubject.Text : string.Empty; if ((String.IsNullOrEmpty(txtNewsletterDynamicURL.Text.Trim()))) { // Dynamic URL cannot be empty ShowError(GetString("menuitem_edit.errorpageurlempty")); return; } newsletterObj.NewsletterDynamicURL = txtNewsletterDynamicURL.Text.Trim(); if (chkSchedule.Checked) { // Set info for scheduled task TaskInfo task = GetDynamicNewsletterTask(newsletterObj); if (!schedulerInterval.CheckOneDayMinimum()) { // If problem occurred while setting schedule interval ShowError(GetString("Newsletter_Edit.NoDaySelected")); return; } if (!IsValidDate(SchedulingHelper.DecodeInterval(scheduledInterval).StartTime)) { ShowError(GetString("Newsletter.IncorrectDate")); return; } task.TaskInterval = scheduledInterval; task.TaskNextRunTime = SchedulingHelper.GetNextTime(task.TaskInterval, new DateTime(), new DateTime()); task.TaskDisplayName = GetString("DynamicNewsletter.TaskName") + newsletterObj.NewsletterDisplayName; task.TaskName = "DynamicNewsletter_" + newsletterObj.NewsletterName; // Set task for processing in external service task.TaskAllowExternalService = true; task.TaskUseExternalService = (SchedulingHelper.UseExternalService && NewsletterHelper.UseExternalServiceForDynamicNewsletters(CMSContext.CurrentSiteName)); TaskInfoProvider.SetTaskInfo(task); newsletterObj.NewsletterDynamicScheduledTaskID = task.TaskID; } else { if (newsletterObj.NewsletterDynamicScheduledTaskID > 0) { // Store task ID for deletion deleteScheduledTaskId = newsletterObj.NewsletterDynamicScheduledTaskID; } newsletterObj.NewsletterDynamicScheduledTaskID = 0; schedulerInterval.Visible = false; } } else { newsletterObj.NewsletterType = NewsletterType.TemplateBased; // Check if issue template was selected int issueTemplateValue = ValidationHelper.GetInteger(issueTemplate.Value, 0); if (issueTemplateValue == 0) { ShowError(GetString("Newsletter_Edit.NoEmailTemplateSelected")); return; } newsletterObj.NewsletterTemplateID = issueTemplateValue; } // Save changes to DB NewsletterInfoProvider.SetNewsletterInfo(newsletterObj); if (deleteScheduledTaskId > 0) { // Delete scheduled task if schedule mail-outs were unchecked TaskInfoProvider.DeleteTaskInfo(deleteScheduledTaskId); } ShowChangesSaved(); // Refresh header with display name ScriptHelper.RefreshTabHeader(Page, GetString("Newsletter_Header.Configuration")); }
/// <summary> /// OnAfterSave event handler. /// </summary> protected void EditForm_OnAfterSave(object sender, EventArgs e) { // Get edited contact group ContactGroupInfo cgi = (ContactGroupInfo)EditForm.EditedObject; if (chkDynamic.Checked) { // Set info for scheduled task task = GetScheduledTask(cgi); // Update scheduled task if (chkSchedule.Checked) { if (!schedulerInterval.CheckOneDayMinimum()) { // If problem occurred while setting schedule interval EditForm.ErrorLabel.Text = GetString("Newsletter_Edit.NoDaySelected"); EditForm.ErrorLabel.Visible = true; EditForm.StopProcessing = true; return; } if (!DataTypeManager.IsValidDate(SchedulingHelper.DecodeInterval(scheduleInterval).StartTime)) { // Start date is not in valid format EditForm.ErrorLabel.Text = GetString("Newsletter.IncorrectDate"); EditForm.ErrorLabel.Visible = true; EditForm.StopProcessing = true; return; } task.TaskInterval = scheduleInterval; task.TaskNextRunTime = SchedulingHelper.GetNextTime(task.TaskInterval, new DateTime(), new DateTime()); task.TaskEnabled = true; } else { task.TaskInterval = scheduleInterval; task.TaskNextRunTime = TaskInfoProvider.NO_TIME; task.TaskEnabled = false; } TaskInfoProvider.SetTaskInfo(task); cgi.ContactGroupScheduledTaskID = task.TaskID; pnlInfo.Visible = true; InitInfoPanel(cgi, true); } else { if (cgi.ContactGroupScheduledTaskID > 0) { // Store task ID for deletion deleteScheduledTaskId = cgi.ContactGroupScheduledTaskID; } cgi.ContactGroupScheduledTaskID = 0; cgi.ContactGroupStatus = ContactGroupStatusEnum.Unspecified; schedulerInterval.Visible = false; pnlInfo.Visible = false; } // Update contact group ContactGroupInfoProvider.SetContactGroupInfo(cgi); if (deleteScheduledTaskId > 0) { // Delete scheduled task if schedule evaluation was unchecked TaskInfoProvider.DeleteTaskInfo(deleteScheduledTaskId); } InitHeaderActions(false); ((CMSPage)Page).CurrentMaster.HeaderActions.ReloadData(); // Refresh breadcrumbs var append = cgi.IsGlobal ? " " + GetString("general.global") : ""; ScriptHelper.RefreshTabHeader(Page, cgi.ContactGroupDisplayName + append); }