Passed
Push — add/image-automation ( 5e200c...2f85b4 )
by Warwick
03:29
created
classes/class-cron.php 1 patch
Indentation   +187 added lines, -187 removed lines patch added patch discarded remove patch
@@ -16,192 +16,192 @@
 block discarded – undo
16 16
  */
17 17
 class Cron {
18 18
 
19
-	/**
20
-	 * Holds class instance
21
-	 *
22
-	 * @since 1.0.0
23
-	 *
24
-	 * @var      object|Module_Template
25
-	 */
26
-	protected static $instance = null;
27
-
28
-	/**
29
-	 * Initialize the plugin by setting localization, filters, and administration functions.
30
-	 *
31
-	 * @since 1.0.0
32
-	 *
33
-	 * @access private
34
-	 */
35
-	public function __construct() {
36
-		add_filter( 'cron_schedules', array( $this, 'register_schedule' ), 10, 1 );
37
-		add_action( 'lsx_wetu_importer_settings_before', array( $this, 'watch_for_trigger' ), 200 );
38
-		add_action( 'lsx_wetu_accommodation_images_cron', array( $this, 'process' ), 10, 1 );
39
-		add_action( 'lsx_wetu_accommodation_images_sync', array( $this, 'cron_callback' ), 10, 1 );
40
-	}
41
-
42
-	/**
43
-	 * Return an instance of this class.
44
-	 *
45
-	 * @since 1.0.0
46
-	 *
47
-	 * @return    object Cron()    A single instance of this class.
48
-	 */
49
-	public static function get_instance() {
50
-		// If the single instance hasn't been set, set it now.
51
-		if ( null === self::$instance ) {
52
-			self::$instance = new self();
53
-		}
54
-		return self::$instance;
55
-	}
56
-
57
-	/**
58
-	 * Registers a 5 min schedule for us to use.
59
-	 *
60
-	 * @param  array $schedules
61
-	 * @return array
62
-	 */
63
-	public function register_schedule( $schedules ) {
64
-		$schedules['wetu-5-minutes'] = array(
65
-			'interval' => 5 * MINUTE_IN_SECONDS,
66
-			'display'  => __( 'Every 5 minutes', 'lsx-wetu-importer' ),
67
-		);
68
-		return $schedules;
69
-	}
70
-
71
-	/**
72
-	 * Watches for changes in the button triggers.
73
-	 *
74
-	 * @return void
75
-	 */
76
-	public function watch_for_trigger() {
77
-
78
-		if ( isset( $_GET['page'] ) && 'lsx-wetu-importer' === $_GET['page'] && isset( $_GET['tab'] ) && 'settings' === $_GET['tab'] ) {
79
-			$options = lsx_wetu_get_options();
80
-
81
-			// Check what state the option is in.
82
-			$accommodation_cron = 'deactivate';
83
-			if ( isset( $options['accommodation_images_cron'] ) && '' !== $options['accommodation_images_cron'] ) {
84
-				$accommodation_cron = 'activate';
85
-			}
86
-
87
-			// Check what state the cron is in.
88
-			$schedule = false;
89
-			if ( wp_next_scheduled( 'lsx_wetu_accommodation_images_cron' ) ) {
90
-				$schedule = true;
91
-			}
92
-
93
-			// If activate and its not running.
94
-			if ( false === $schedule && 'activate' === $accommodation_cron ) {
95
-				$schedule = 'daily';
96
-				$this->schedule( 'lsx_wetu_accommodation_images_cron', $schedule );
97
-			} elseif ( true === $schedule && 'deactivate' === $accommodation_cron ) {
98
-				$this->deactivate();
99
-			}
100
-		}
101
-	}
102
-
103
-	/**
104
-	 * Remove our cron from the shedule.
105
-	 *
106
-	 * @return void
107
-	 */
108
-	public function deactivate( $task = 'lsx_wetu_accommodation_images_cron' ) {
109
-		wp_clear_scheduled_hook( $task );
110
-	}
111
-
112
-	/**
113
-	 * This function will schedule the cron event.
114
-	 *
115
-	 * @param string $task
116
-	 * @param string $schedule
117
-	 * @param string $time
118
-	 * @return void
119
-	 */
120
-	public function schedule( $task = 'lsx_wetu_accommodation_images_cron', $schedule = 'daily', $time = '' ) {
121
-		if ( '' === $time ) {
122
-			$time = time();
123
-		}
124
-		wp_schedule_event( $time, $schedule, $task, array( $task ) );
125
-	}
126
-
127
-	/**
128
-	 * This is the function that will be triggered by the cron event.
129
-	 *
130
-	 * @return void
131
-	 */
132
-	public function process( $task = '' ) {
133
-		switch ( $task ) {
134
-			case 'lsx_wetu_accommodation_images_cron':
135
-					$this->register_accommodation_images_sync();
136
-				break;
137
-
138
-			default:
139
-				break;
140
-		}
141
-	}
142
-
143
-	/**
144
-	 * This is the function that will be triggered by the cron event.
145
-	 *
146
-	 * @return void
147
-	 */
148
-	public function register_accommodation_images_sync() {
149
-		$time = strtotime( '+1 min' );
150
-		if ( ! wp_next_scheduled( 'lsx_wetu_accommodation_images_sync' ) ) {
151
-			$this->load_items_to_sync( 'accommodation_images' );
152
-			$this->schedule( 'lsx_wetu_accommodation_images_sync', 'wetu-5-minutes', $time );
153
-		}
154
-	}
155
-
156
-	/**
157
-	 * This is the function that will be triggered by the cron event.
158
-	 *
159
-	 * @return void
160
-	 */
161
-	public function cron_callback( $task = '' ) {
162
-		$has_accommodation = get_option( $task );
163
-		if ( false !== $has_accommodation && ! empty( $has_accommodation ) ) {
164
-			$next_time = array_slice( $has_accommodation, 5 );      // returns "c", "d", and "e"
165
-			$output    = array_slice( $has_accommodation, 0, 4 );   // returns "a", "b", and "c"
166
-
167
-			// Run through the current items.
168
-
169
-			// Save the values for next time.
170
-			if ( ! empty( $next_time ) ) {
171
-				update_option( $task, $next_time );
172
-			} else {
173
-				$this->deactivate( $task );
174
-			}
175
-		} else {
176
-			$this->deactivate( $task );
177
-		}
178
-	}
179
-
180
-	/**
181
-	 * This will grab the accommodation ids and load them up into an option field.
182
-	 *
183
-	 * @param  string $task
184
-	 * @return void
185
-	 */
186
-	public function load_items_to_sync( $task = 'accommodation_images' ) {
187
-		$args = array(
188
-			'post_status'    => 'publish',
189
-			'posts_per_page' => -1,
190
-			'nopagin'        => true,
191
-			'fields'         => 'ids',
192
-		);
193
-		switch ( $task ) {
194
-			case 'accommodation_images':
195
-					$args['post_type'] = 'accommodation';
196
-				break;
197
-
198
-			default:
199
-				break;
200
-		}
201
-		$items = new \WP_Query( $args );
202
-		if ( $items->have_posts() ) {
203
-			update_option( 'lsx_wetu_' . $task . '_sync', $items->posts );
204
-		}
205
-	}
19
+     /**
20
+      * Holds class instance
21
+      *
22
+      * @since 1.0.0
23
+      *
24
+      * @var      object|Module_Template
25
+      */
26
+     protected static $instance = null;
27
+
28
+     /**
29
+      * Initialize the plugin by setting localization, filters, and administration functions.
30
+      *
31
+      * @since 1.0.0
32
+      *
33
+      * @access private
34
+      */
35
+     public function __construct() {
36
+          add_filter( 'cron_schedules', array( $this, 'register_schedule' ), 10, 1 );
37
+          add_action( 'lsx_wetu_importer_settings_before', array( $this, 'watch_for_trigger' ), 200 );
38
+          add_action( 'lsx_wetu_accommodation_images_cron', array( $this, 'process' ), 10, 1 );
39
+          add_action( 'lsx_wetu_accommodation_images_sync', array( $this, 'cron_callback' ), 10, 1 );
40
+     }
41
+
42
+     /**
43
+      * Return an instance of this class.
44
+      *
45
+      * @since 1.0.0
46
+      *
47
+      * @return    object Cron()    A single instance of this class.
48
+      */
49
+     public static function get_instance() {
50
+          // If the single instance hasn't been set, set it now.
51
+          if ( null === self::$instance ) {
52
+               self::$instance = new self();
53
+          }
54
+          return self::$instance;
55
+     }
56
+
57
+     /**
58
+      * Registers a 5 min schedule for us to use.
59
+      *
60
+      * @param  array $schedules
61
+      * @return array
62
+      */
63
+     public function register_schedule( $schedules ) {
64
+          $schedules['wetu-5-minutes'] = array(
65
+               'interval' => 5 * MINUTE_IN_SECONDS,
66
+               'display'  => __( 'Every 5 minutes', 'lsx-wetu-importer' ),
67
+          );
68
+          return $schedules;
69
+     }
70
+
71
+     /**
72
+      * Watches for changes in the button triggers.
73
+      *
74
+      * @return void
75
+      */
76
+     public function watch_for_trigger() {
77
+
78
+          if ( isset( $_GET['page'] ) && 'lsx-wetu-importer' === $_GET['page'] && isset( $_GET['tab'] ) && 'settings' === $_GET['tab'] ) {
79
+               $options = lsx_wetu_get_options();
80
+
81
+               // Check what state the option is in.
82
+               $accommodation_cron = 'deactivate';
83
+               if ( isset( $options['accommodation_images_cron'] ) && '' !== $options['accommodation_images_cron'] ) {
84
+                    $accommodation_cron = 'activate';
85
+               }
86
+
87
+               // Check what state the cron is in.
88
+               $schedule = false;
89
+               if ( wp_next_scheduled( 'lsx_wetu_accommodation_images_cron' ) ) {
90
+                    $schedule = true;
91
+               }
92
+
93
+               // If activate and its not running.
94
+               if ( false === $schedule && 'activate' === $accommodation_cron ) {
95
+                    $schedule = 'daily';
96
+                    $this->schedule( 'lsx_wetu_accommodation_images_cron', $schedule );
97
+               } elseif ( true === $schedule && 'deactivate' === $accommodation_cron ) {
98
+                    $this->deactivate();
99
+               }
100
+          }
101
+     }
102
+
103
+     /**
104
+      * Remove our cron from the shedule.
105
+      *
106
+      * @return void
107
+      */
108
+     public function deactivate( $task = 'lsx_wetu_accommodation_images_cron' ) {
109
+          wp_clear_scheduled_hook( $task );
110
+     }
111
+
112
+     /**
113
+      * This function will schedule the cron event.
114
+      *
115
+      * @param string $task
116
+      * @param string $schedule
117
+      * @param string $time
118
+      * @return void
119
+      */
120
+     public function schedule( $task = 'lsx_wetu_accommodation_images_cron', $schedule = 'daily', $time = '' ) {
121
+          if ( '' === $time ) {
122
+               $time = time();
123
+          }
124
+          wp_schedule_event( $time, $schedule, $task, array( $task ) );
125
+     }
126
+
127
+     /**
128
+      * This is the function that will be triggered by the cron event.
129
+      *
130
+      * @return void
131
+      */
132
+     public function process( $task = '' ) {
133
+          switch ( $task ) {
134
+               case 'lsx_wetu_accommodation_images_cron':
135
+                         $this->register_accommodation_images_sync();
136
+                    break;
137
+
138
+               default:
139
+                    break;
140
+          }
141
+     }
142
+
143
+     /**
144
+      * This is the function that will be triggered by the cron event.
145
+      *
146
+      * @return void
147
+      */
148
+     public function register_accommodation_images_sync() {
149
+          $time = strtotime( '+1 min' );
150
+          if ( ! wp_next_scheduled( 'lsx_wetu_accommodation_images_sync' ) ) {
151
+               $this->load_items_to_sync( 'accommodation_images' );
152
+               $this->schedule( 'lsx_wetu_accommodation_images_sync', 'wetu-5-minutes', $time );
153
+          }
154
+     }
155
+
156
+     /**
157
+      * This is the function that will be triggered by the cron event.
158
+      *
159
+      * @return void
160
+      */
161
+     public function cron_callback( $task = '' ) {
162
+          $has_accommodation = get_option( $task );
163
+          if ( false !== $has_accommodation && ! empty( $has_accommodation ) ) {
164
+               $next_time = array_slice( $has_accommodation, 5 );      // returns "c", "d", and "e"
165
+               $output    = array_slice( $has_accommodation, 0, 4 );   // returns "a", "b", and "c"
166
+
167
+               // Run through the current items.
168
+
169
+               // Save the values for next time.
170
+               if ( ! empty( $next_time ) ) {
171
+                    update_option( $task, $next_time );
172
+               } else {
173
+                    $this->deactivate( $task );
174
+               }
175
+          } else {
176
+               $this->deactivate( $task );
177
+          }
178
+     }
179
+
180
+     /**
181
+      * This will grab the accommodation ids and load them up into an option field.
182
+      *
183
+      * @param  string $task
184
+      * @return void
185
+      */
186
+     public function load_items_to_sync( $task = 'accommodation_images' ) {
187
+          $args = array(
188
+               'post_status'    => 'publish',
189
+               'posts_per_page' => -1,
190
+               'nopagin'        => true,
191
+               'fields'         => 'ids',
192
+          );
193
+          switch ( $task ) {
194
+               case 'accommodation_images':
195
+                         $args['post_type'] = 'accommodation';
196
+                    break;
197
+
198
+               default:
199
+                    break;
200
+          }
201
+          $items = new \WP_Query( $args );
202
+          if ( $items->have_posts() ) {
203
+               update_option( 'lsx_wetu_' . $task . '_sync', $items->posts );
204
+          }
205
+     }
206 206
 }
207 207
 Cron::get_instance();
Please login to merge, or discard this patch.