PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.0.1
Jetpack – WP Security, Backup, Speed, & Growth v16.0.1
16.0.1 16.1-a.1 16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / modules / videopress / class.videopress-scheduler.php
jetpack / modules / videopress Last commit date
css 1 month ago js 1 month ago class-videopress-attachment-metadata.php 1 month ago class.jetpack-videopress.php 7 months ago class.videopress-cli.php 1 month ago class.videopress-edit-attachment.php 1 month ago class.videopress-gutenberg.php 7 months ago class.videopress-options.php 7 months ago class.videopress-player.php 1 week ago class.videopress-scheduler.php 7 months ago class.videopress-video.php 7 months ago class.videopress-xmlrpc.php 7 months ago editor-media-view.php 4 months ago shortcode.php 1 month ago videopress-admin-rtl.css 7 months ago videopress-admin-rtl.min.css 7 months ago videopress-admin.css 7 months ago videopress-admin.min.css 7 months ago
class.videopress-scheduler.php
210 lines
1 <?php // phpcs:ignore WordPress.Files.FileName
2 /**
3 * VideoPress cron scheduler.
4 *
5 * @package automattic/jetpack
6 */
7
8 if ( ! defined( 'ABSPATH' ) ) {
9 exit( 0 );
10 }
11
12 /**
13 * VideoPress Cron Scheduler.
14 */
15 class VideoPress_Scheduler {
16
17 /**
18 * The name of the function used to run the cleanup cron.
19 */
20 const CLEANUP_CRON_METHOD = 'videopress_cleanup_media_library';
21
22 /**
23 * Singleton instance.
24 *
25 * @var VideoPress_Scheduler $instance A VideoPress_Scheduler singleton instance (default null)
26 **/
27 private static $instance = null;
28
29 /**
30 * A list of all of the crons that are to be activated, along with their interval timings.
31 *
32 * @var array
33 */
34 protected $crons = array(
35 // phpcs:ignore Squiz.PHP.CommentedOutCode.Found
36 // 'cleanup' => array(
37 // 'method' => self::CLEANUP_CRON_METHOD,
38 // 'interval' => 'minutes_30',
39 // ),
40 );
41
42 /**
43 * Private VideoPress_Scheduler constructor.
44 *
45 * Use the VideoPress_Scheduler::init() method to get an instance.
46 */
47 private function __construct() {
48 add_filter( 'cron_schedules', array( $this, 'add_30_minute_cron_interval' ) );
49
50 // Activate the cleanup cron if videopress is enabled, jetpack is activated, or jetpack is updated.
51 add_action( 'jetpack_activate_module_videopress', array( $this, 'activate_all_crons' ) );
52 add_action( 'updating_jetpack_version', array( $this, 'activate_all_crons' ) );
53 add_action( 'activated_plugin', array( $this, 'activate_crons_on_jetpack_activation' ) );
54
55 // Deactivate the cron if either videopress is disabled or Jetpack is disabled.
56 add_action( 'jetpack_deactivate_module_videopress', array( $this, 'deactivate_all_crons' ) );
57 register_deactivation_hook( plugin_basename( JETPACK__PLUGIN_FILE ), array( $this, 'deactivate_all_crons' ) );
58 }
59
60 /**
61 * Initialize the VideoPress_Scheduler and get back a singleton instance.
62 *
63 * @return VideoPress_Scheduler
64 */
65 public static function init() {
66 if ( self::$instance === null ) {
67 self::$instance = new VideoPress_Scheduler();
68 }
69
70 return self::$instance;
71 }
72
73 /**
74 * Adds 30 minute running interval to the cron schedules.
75 *
76 * @param array $current_schedules Currently defined schedules list.
77 *
78 * @return array
79 */
80 public function add_30_minute_cron_interval( $current_schedules ) {
81
82 // Only add the 30 minute interval if it wasn't already set.
83 if ( ! isset( $current_schedules['minutes_30'] ) ) {
84 $current_schedules['minutes_30'] = array(
85 'interval' => 30 * MINUTE_IN_SECONDS,
86 'display' => 'Every 30 minutes',
87 );
88 }
89
90 return $current_schedules;
91 }
92
93 /**
94 * Activate a single cron
95 *
96 * @param string $cron_name The name of the cron to activate.
97 *
98 * @return bool
99 */
100 public function activate_cron( $cron_name ) {
101
102 if ( ! $this->is_cron_valid( $cron_name ) ) {
103 return false;
104 }
105
106 if ( ! $this->check_cron( $cron_name ) ) {
107 wp_schedule_event( time(), $this->crons[ $cron_name ]['interval'], $this->crons[ $cron_name ]['method'] );
108 }
109 }
110
111 /**
112 * Activates widget update cron task.
113 */
114 public function activate_all_crons() {
115
116 if ( ! Jetpack::is_module_active( 'videopress' ) ) {
117 return false;
118 }
119
120 foreach ( $this->crons as $cron_name => $cron ) {
121 if ( ! $this->check_cron( $cron_name ) ) {
122 wp_schedule_event( time(), $cron['interval'], $cron['method'] );
123 }
124 }
125 }
126
127 /**
128 * Only activate the crons if it is Jetpack that was activated.
129 *
130 * @param string $plugin_file_name The name of the plugin that was activated.
131 */
132 public function activate_crons_on_jetpack_activation( $plugin_file_name ) {
133
134 if ( plugin_basename( JETPACK__PLUGIN_FILE ) === $plugin_file_name ) {
135 $this->activate_all_crons();
136 }
137 }
138
139 /**
140 * Deactivates any crons associated with the VideoPress module.
141 *
142 * @param string $cron_name Name of the cron to deactivate.
143 *
144 * @return bool
145 */
146 public function deactivate_cron( $cron_name ) {
147
148 if ( ! $this->is_cron_valid( $cron_name ) ) {
149 return false;
150 }
151
152 $next_scheduled_time = $this->check_cron( $cron_name );
153 wp_unschedule_event( $next_scheduled_time, $this->crons[ $cron_name ]['method'] );
154
155 return true;
156 }
157
158 /**
159 * Deactivates any crons associated with the VideoPress module..
160 */
161 public function deactivate_all_crons() {
162
163 foreach ( $this->crons as $cron_name => $cron ) {
164 $this->deactivate_cron( $cron_name );
165 }
166 }
167
168 /**
169 * Is the given cron job currently active?
170 *
171 * If so, return when it will next run,
172 *
173 * @param string $cron_name Cron job name.
174 *
175 * @return int|bool Timestamp of the next run time OR false.
176 */
177 public function check_cron( $cron_name ) {
178 if ( ! $this->is_cron_valid( $cron_name ) ) {
179 return false;
180 }
181
182 return wp_next_scheduled( $this->crons[ $cron_name ]['method'] );
183 }
184
185 /**
186 * Check that the given cron job name is valid.
187 *
188 * @param string $cron_name Cron job name.
189 *
190 * @return bool
191 */
192 public function is_cron_valid( $cron_name ) {
193
194 if ( ! isset( $this->crons[ $cron_name ]['method'] ) || ! isset( $this->crons[ $cron_name ]['interval'] ) ) {
195 return false;
196 }
197
198 return true;
199 }
200
201 /**
202 * Get a list of all of the crons that are available.
203 *
204 * @return array
205 */
206 public function get_crons() {
207 return $this->crons;
208 }
209 }
210