Passed
Push — add/image-automation ( b4ff43...5e200c )
by Warwick
02:57
created

Cron::cron_callback()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 1
Code Lines 0

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 0
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 1
rs 10
1
<?php
2
/**
3
 * The main plugin class.
4
 *
5
 * @package   LSX_WETU_Importer
6
 * @author    LightSpeed
7
 * @license   GPL-2.0+
8
 * @link
9
 * @copyright 2016 LightSpeed
10
 */
11
12
namespace lsx\wetu_importer\classes;
13
14
/**
15
 * The Main plugin class.
16
 */
17
class Cron {
18
19
	/**
20
	 * Holds class instance
21
	 *
22
	 * @since 1.0.0
23
	 *
24
	 * @var      object|Module_Template
0 ignored issues
show
Bug introduced by
The type lsx\wetu_importer\classes\Module_Template was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
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() {
0 ignored issues
show
Coding Style introduced by
Expected 2 blank lines before function; 1 found
Loading history...
36
		add_filter( 'cron_schedules', array( $this, 'register_schedule' ), 10, 1 );
0 ignored issues
show
introduced by
Scheduling crons at 300 sec ( less than 15 minutes ) is discouraged.
Loading history...
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 );
40
	}
0 ignored issues
show
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
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 ) {
0 ignored issues
show
introduced by
The condition null === self::instance is always false.
Loading history...
Coding Style introduced by
Expected 0 spaces after opening bracket; 1 found
Loading history...
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
52
			self::$instance = new self();
53
		}
0 ignored issues
show
Coding Style introduced by
No blank line found after control structure
Loading history...
54
		return self::$instance;
55
	}
0 ignored issues
show
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
56
57
	/**
58
	 * Registers a 5 min schedule for us to use.
59
	 *
60
	 * @param  array $schedules
0 ignored issues
show
Coding Style Documentation introduced by
Missing parameter comment
Loading history...
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
	}
0 ignored issues
show
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
70
71
	/**
72
	 * Watches for changes in the button triggers.
73
	 *
74
	 * @return void
75
	 */
76
	public function watch_for_trigger() {
0 ignored issues
show
Coding Style introduced by
Expected 0 blank lines after opening function brace; 1 found
Loading history...
77
78
		if ( isset( $_GET['page'] ) && 'lsx-wetu-importer' === $_GET['page'] && isset( $_GET['tab'] ) && 'settings' === $_GET['tab'] ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces after opening bracket; 1 found
Loading history...
introduced by
Processing form data without nonce verification.
Loading history...
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
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'] ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces after opening bracket; 1 found
Loading history...
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
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' ) ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces after opening bracket; 1 found
Loading history...
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
90
				$schedule = true;
91
			}
92
93
			// If activate and its not running.
94
			if ( false === $schedule && 'activate' === $accommodation_cron ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces after opening bracket; 1 found
Loading history...
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
95
				$schedule = 'daily';
96
				$this->schedule( 'lsx_wetu_accommodation_images_cron', $schedule );
97
			} elseif ( true === $schedule && 'deactivate' === $accommodation_cron ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces after opening bracket; 1 found
Loading history...
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
98
				$this->deactivate();
99
			}
100
		}
101
	}
0 ignored issues
show
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
102
103
	/**
0 ignored issues
show
Coding Style Documentation introduced by
Doc comment for parameter "$task" missing
Loading history...
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
	}
0 ignored issues
show
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
111
112
	/**
113
	 * This function will schedule the cron event.
114
	 *
115
	 * @param string $task
0 ignored issues
show
Coding Style Documentation introduced by
Missing parameter comment
Loading history...
116
	 * @param string $schedule
0 ignored issues
show
Coding Style Documentation introduced by
Missing parameter comment
Loading history...
117
	 * @param string $time
0 ignored issues
show
Coding Style Documentation introduced by
Missing parameter comment
Loading history...
118
	 * @return void
119
	 */
120
	public function schedule( $task = 'lsx_wetu_accommodation_images_cron', $schedule = 'daily', $time = '' ) {
121
		if ( '' === $time ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces after opening bracket; 1 found
Loading history...
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
122
			$time = time();
123
		}
0 ignored issues
show
Coding Style introduced by
No blank line found after control structure
Loading history...
124
		wp_schedule_event( $time, $schedule, $task, array( $task ) );
0 ignored issues
show
Bug introduced by
It seems like $time can also be of type string; however, parameter $timestamp of wp_schedule_event() does only seem to accept integer, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

124
		wp_schedule_event( /** @scrutinizer ignore-type */ $time, $schedule, $task, array( $task ) );
Loading history...
125
	}
0 ignored issues
show
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
126
127
	/**
0 ignored issues
show
Coding Style Documentation introduced by
Doc comment for parameter "$task" missing
Loading history...
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 ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces after opening bracket; 1 found
Loading history...
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
134
			case 'lsx_wetu_accommodation_images_cron':
135
					$this->register_accommodation_images_sync();
136
				break;
137
138
			default:
139
				break;
140
		}
141
	}
0 ignored issues
show
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
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' ) ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces after opening bracket; 1 found
Loading history...
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
151
			$this->load_items_to_sync( 'accommodation_images' );
152
			$this->schedule( 'lsx_wetu_accommodation_images_sync', 'wetu-5-minutes', $time );
153
		}
154
	}
0 ignored issues
show
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
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() {
162
	}
0 ignored issues
show
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
163
164
	/**
165
	 * This will grab the accommodation ids and load them up into an option field.
166
	 *
167
	 * @param  string $task
0 ignored issues
show
Coding Style Documentation introduced by
Missing parameter comment
Loading history...
168
	 * @return void
169
	 */
170
	public function load_items_to_sync( $task = 'accommodation_images' ) {
171
		$args = array(
172
			'post_status'    => 'publish',
173
			'posts_per_page' => -1,
174
			'nopagin'        => true,
175
			'fields'         => 'ids',
176
		);
177
		switch ( $task ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces after opening bracket; 1 found
Loading history...
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
178
			case 'accommodation_images':
179
					$args['post_type'] = 'accommodation';
180
				break;
181
182
			default:
183
				break;
184
		}
0 ignored issues
show
Coding Style introduced by
No blank line found after control structure
Loading history...
185
		$items = new \WP_Query( $args );
186
		if ( $items->have_posts() ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces after opening bracket; 1 found
Loading history...
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
187
			add_option( 'lsx_wetu_' . $task . '_sync', $items->posts );
188
		}
189
	}
0 ignored issues
show
Coding Style introduced by
Expected 2 blank lines after function; 0 found
Loading history...
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
190
}
191
Cron::get_instance();
192