Changeset 5453 for sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/jobs/class-manager.php
- Timestamp:
- 05/01/2017 11:00:53 AM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/jobs/class-manager.php
r5451 r5453 43 43 44 44 /** 45 * Returns the latest time that the scheduled hook will run 46 47 48 49 50 45 * Returns the latest time that the scheduled hook will run. 46 * 47 * @param string $hook The hook to look for. 48 * @param string $when 'last' or 'next' for when the hook runs. 49 * @return bool|int False on failure, The timestamp on success. 50 */ 51 51 public static function get_scheduled_time( $hook, $when = 'last' ) { 52 52 … … 64 64 if ( isset( $cron[ $hook ] ) ) { 65 65 foreach ( $cron[ $hook ] as $key => $cron_item ) { 66 // Cavalcade should present this field, if not, bail. 67 if ( empty( $cron_item['_job'] ) ) { 68 continue; 69 } 70 66 71 if ( 'waiting' === $cron_item['_job']->status ) { 67 72 $timestamps[] = $timestamp; … … 84 89 85 90 /** 86 * Reschedules a cavalcade job. 87 * This requires the usage of Cavalcade, and will fail without it. 88 * 89 * @param string $hook The Hook to reschedule. 90 * @param int $new_timestamp The time to reschedule it to. 91 * @param int $old_timestamp The specific job to schedule. Optional, will affect first job otherwise. 92 */ 91 * Returns the current scheduled events of a hook. 92 * 93 * @param string $hook The hook to look for. 94 * @param int|bool $next_timestamp Optional. Returns events for a specific timestamp. 95 * @return array Scheduled events. 96 */ 97 public static function get_scheduled_events( $hook, $next_timestamp = false ) { 98 99 // Flush the Cavalcade jobs cache, we need fresh data from the database. 100 wp_cache_delete( 'jobs', 'cavalcade-jobs' ); 101 102 $crons = _get_cron_array(); 103 if ( empty( $crons ) ) { 104 return []; 105 } 106 107 $events = []; 108 109 foreach ( $crons as $timestamp => $cron ) { 110 if ( isset( $cron[ $hook ] ) ) { 111 foreach ( $cron[ $hook ] as $key => $cron_item ) { 112 // Cavalcade should present this field, if not, bail. 113 if ( empty( $cron_item['_job'] ) ) { 114 continue; 115 } 116 117 if ( 'waiting' !== $cron_item['_job']->status ) { 118 continue; 119 } 120 121 if ( ! $next_timestamp || $next_timestamp === $timestamp ) { 122 $events[] = [ 123 'hook' => $cron_item['_job']->hook, 124 'args' => $cron_item['_job']->args, 125 'nextrun' => $timestamp, 126 ]; 127 } 128 } 129 } 130 } 131 132 return $events; 133 } 134 135 /** 136 * Updates a cavalcade job. 137 * 138 * This requires the usage of Cavalcade, and will fail without it. 139 * 140 * @param string $hook The hook to update. 141 * @param int $next_timestamp The time of the schedule to update. 142 * @param array $data The data to update. 143 * @return bool True on success, false on error. 144 */ 145 public static function update_scheduled_event( $hook, $next_timestamp, $data ) { 146 // Flush the Cavalcade jobs cache, we need fresh data from the database 147 wp_cache_delete( 'jobs', 'cavalcade-jobs' ); 148 149 $crons = _get_cron_array(); 150 foreach ( $crons as $timestamp => $cron ) { 151 if ( $next_timestamp !== $timestamp ) { 152 continue; 153 } 154 155 if ( isset( $cron[ $hook ] ) ) { 156 foreach ( $cron[ $hook ] as $key => $event ) { 157 // Cavalcade should present this field, if not, bail. 158 if ( empty( $event['_job'] ) ) { 159 return false; 160 } 161 162 if ( 'waiting' !== $event['_job']->status ) { 163 return false; 164 } 165 166 $event['_job']->args = $data['args']; 167 $event['_job']->nextrun = $data['nextrun']; 168 $event['_job']->save(); 169 170 return true; 171 } 172 } 173 } 174 175 return false; 176 } 177 178 /** 179 * Reschedules a cavalcade job. 180 * This requires the usage of Cavalcade, and will fail without it. 181 * 182 * @param string $hook The hook to reschedule. 183 * @param int|bool $new_timestamp The time to reschedule it to. 184 * @param int|bool $old_timestamp The specific job to schedule. Optional, will affect first job otherwise. 185 * @return bool True on success, false on error. 186 */ 93 187 public static function reschedule_event( $hook, $new_timestamp = false, $old_timestamp = false ) { 94 188 $new_timestamp = $new_timestamp ?: time(); … … 105 199 if ( isset( $cron[ $hook ] ) ) { 106 200 foreach ( $cron[ $hook ] as $key => $event ) { 107 // Cavalcade should present this field, if not, bail.201 // Cavalcade should present this field, if not, bail. 108 202 if ( empty( $event['_job'] ) ) { 109 203 return false;
Note: See TracChangeset
for help on using the changeset viewer.