cron.php
author Dan
Tue, 06 Apr 2010 15:55:21 -0400
changeset 1241 99b749da5149
parent 1227 bdac73ed481e
permissions -rw-r--r--
Merged

<?php

/*
 * Enano - an open-source CMS capable of wiki functions, Drupal-like sidebar blocks, and everything in between
 * Copyright (C) 2006-2009 Dan Fuhry
 *
 * This program is Free Software; you can redistribute and/or modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for details.
 */

//
// cron.php - Maintenance tasks that should be run periodically
//

// The cron script is triggered by way of an image. This is a 1x1px transparent GIF.
define('ENANO_GIF_SPACER', base64_decode('R0lGODlhAQABAIAAAP///////yH+FUNyZWF0ZWQgd2l0aCBUaGUgR0lNUAAh+QQBCgABACwAAAAAAQABAAACAkwBADs='));

// Don't need a page to load, all we should need is the Enano API
require('includes/common.php');

global $db, $session, $paths, $template, $plugins; // Common objects

// Hope now that plugins are loaded :-)
global $cron_tasks;

foreach ( $cron_tasks as $interval => $tasks )
{
	$interval = doubleval($interval);
	$last_run = intval(getConfig("cron_lastrun_ivl_$interval"));
	$last_run_threshold = doubleval(time()) - ( 3600.0 * $interval );
	if ( $last_run_threshold >= $last_run )
	{
		foreach ( $tasks as $task )
		{
			call_user_func($task);
		}
		setConfig("cron_lastrun_ivl_$interval", strval(time()));
	}
}

$expiry_date = date('r', get_cron_next_run());

$etag = sha1($expiry_date);

if ( isset($_SERVER['HTTP_IF_NONE_MATCH']) )
{
	if ( "\"$etag\"" == $_SERVER['HTTP_IF_NONE_MATCH'] )
	{
		header('HTTP/1.1 304 Not Modified');
		exit();
	}
}

header("ETag: $etag");

header('Expires: ' . $expiry_date);
header('Content-type: image/gif');

echo ENANO_GIF_SPACER;

?>