Wordpress 3.0
[autoinstalls/wordpress.git] / wp-cron.php
1 <?php
2 /**
3  * WordPress Cron Implementation for hosts, which do not offer CRON or for which
4  * the user has not set up a CRON job pointing to this file.
5  *
6  * The HTTP request to this file will not slow down the visitor who happens to
7  * visit when the cron job is needed to run.
8  *
9  * @package WordPress
10  */
11
12 ignore_user_abort(true);
13
14 if ( !empty($_POST) || defined('DOING_AJAX') || defined('DOING_CRON') )
15         die();
16
17 /**
18  * Tell WordPress we are doing the CRON task.
19  *
20  * @var bool
21  */
22 define('DOING_CRON', true);
23
24 if ( !defined('ABSPATH') ) {
25         /** Set up WordPress environment */
26         require_once('./wp-load.php');
27 }
28
29 if ( false === $crons = _get_cron_array() )
30         die();
31
32 $keys = array_keys( $crons );
33 $local_time = time();
34
35 if ( isset($keys[0]) && $keys[0] > $local_time )
36         die();
37
38 foreach ($crons as $timestamp => $cronhooks) {
39         if ( $timestamp > $local_time )
40                 break;
41
42         foreach ($cronhooks as $hook => $keys) {
43
44                 foreach ($keys as $k => $v) {
45
46                         $schedule = $v['schedule'];
47
48                         if ($schedule != false) {
49                                 $new_args = array($timestamp, $schedule, $hook, $v['args']);
50                                 call_user_func_array('wp_reschedule_event', $new_args);
51                         }
52
53                         wp_unschedule_event($timestamp, $hook, $v['args']);
54
55                         do_action_ref_array($hook, $v['args']);
56                 }
57         }
58 }
59
60 die();