internal static ScheduledTask NewInstance() { var disableImageOptimizationAppSetting = System.Configuration.ConfigurationManager.AppSettings[ImageOptimizationConstants.DisableImageOptimizationAppSettingKey]; bool disableImageOptimization; if (bool.TryParse(disableImageOptimizationAppSetting, out disableImageOptimization) && disableImageOptimization) { return(null); } if (ObjectFactory.GetArgsByName(typeof(ImageOptimizationConfig).Name, typeof(ImageOptimizationConfig)) == null) { return(null); } ImageOptimizationConfig imageOptimizationConfig = Config.Get <ImageOptimizationConfig>(); if (!imageOptimizationConfig.EnableImageOptimization) { return(null); } if (!ImageOptimizationProcessorsHelper.ValidateImageOptimizationProcessorsConfigurations()) { return(null); } // Schedule a task only if required IsOptimized field is present Type contentType = typeof(Image); MetadataManager metadataManager = MetadataManager.GetManager(); MetaType metaType = metadataManager.GetMetaType(contentType); if (metaType != null) { MetaField metaField = metaType.Fields.SingleOrDefault(f => string.Compare(f.FieldName, ImageOptimizationConstants.IsOptimizedFieldName, true, CultureInfo.InvariantCulture) == 0); if (metaField == null) { return(null); } } string crontabConfig = imageOptimizationConfig.ImageOptimizationCronSpec; if (string.IsNullOrEmpty(crontabConfig)) { crontabConfig = ImageOptimizationTask.DefaultCronExpression; } ImageOptimizationTask task = new ImageOptimizationTask() { Id = Guid.NewGuid(), ExecuteTime = DateTime.UtcNow, ScheduleSpecType = CrontabScheduleCalculator.ScheduleSpecType, ScheduleSpec = crontabConfig }; return(task); }
internal static void Schedule() { ImageOptimizationTask.RemoveScheduledTasks(); ScheduledTask newTask = ImageOptimizationTask.NewInstance(); if (newTask != null) { ImageOptimizationTask.AddScheduledTask(newTask); } }
private static void ConfigUpdated(ICacheDependencyHandler caller, Type trackedItemType, string trackedItemKey) { ImageOptimizationTask.Schedule(); }
internal static void RemoveScheduledTasks() { SchedulingManager manager = SchedulingManager.GetManager(); IList <ScheduledTaskData> scheduledItems = SchedulingManager.GetTasksFromAllProviders(t => t.TaskName == ImageOptimizationTask.GetTaskName()); foreach (ScheduledTaskData task in scheduledItems) { manager.DeleteItem(task); } manager.SaveChanges(); }