summaryrefslogtreecommitdiff
path: root/includes/cron.inc
blob: 4cfb74fb866ddd5f3b1868c4df1172ade62fd7d4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?

include "includes/theme.inc";

function cron_set($module, $scheduled, $message = "") {
  if (empty($module) || empty($scheduled)) {
    $message = "failed: information missing";
  }
  else if (db_fetch_object(db_query("SELECT * FROM cron WHERE module = '$module'"))) {
    db_query("UPDATE cron SET scheduled = $scheduled WHERE module = '$module'");
  }
  else {
    db_query("INSERT INTO cron (module, scheduled, timestamp) VALUES ('". check_input($module) ."', '". check_input($scheduled) ."', '42')");
  } 
}

function cron_get($module) {
  return db_fetch_object(db_query("SELECT * FROM cron WHERE module = '$module'"), 0);
}

function cron_delete($module) {
  $result = db_query("DELETE FROM cron WHERE module = '$module'");
}

function cron_run($cron) {
  $time = time();
  
  $result = db_query("SELECT * FROM cron WHERE $time - timestamp > scheduled");

  while ($task = db_fetch_object($result)) {
    include "modules/". $task->module .".module";
    if ($function = $module["cron"]) {
      watchdog("message", "cron: executed '". $task->module ."_cron()'"); 
      $function();
    }
  }

  db_query("UPDATE cron SET timestamp = $time WHERE $time - timestamp > scheduled");
}

?>