Beispiel #1
0
        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);
        }
Beispiel #2
0
        internal static void Schedule()
        {
            ImageOptimizationTask.RemoveScheduledTasks();

            ScheduledTask newTask = ImageOptimizationTask.NewInstance();

            if (newTask != null)
            {
                ImageOptimizationTask.AddScheduledTask(newTask);
            }
        }
Beispiel #3
0
 private static void ConfigUpdated(ICacheDependencyHandler caller, Type trackedItemType, string trackedItemKey)
 {
     ImageOptimizationTask.Schedule();
 }
Beispiel #4
0
        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();
        }