From d268703d693c8f785e0f1e80a2480230c9327703 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Mon, 1 Dec 2008 22:47:36 -0500 Subject: [PATCH] add init, last_modified to actions darcs-hash:20081202034736-5ed1f-e096ab5e9a77d2bb74c949659966d400cbc9a149.gz --- index.php | 1 + lib/action.php | 36 ++++++++++++++++++++++++++++++++++-- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/index.php b/index.php index de39dd020c..7d1eede462 100644 --- a/index.php +++ b/index.php @@ -52,6 +52,7 @@ if (file_exists($actionfile)) { } $config['db']['database'] = $mirror; } + call_user_func(array($action_obj, 'init'), $_REQUEST); call_user_func(array($action_obj, 'handle'), $_REQUEST); } else { common_user_error(_('Unknown action')); diff --git a/lib/action.php b/lib/action.php index c0229cf75f..ba4fc71fb6 100644 --- a/lib/action.php +++ b/lib/action.php @@ -26,6 +26,19 @@ class Action { // lawsuit function Action() { } + # For initializing members of the class + + function init($argarray) { + $this->args =& common_copy_args($argarray); + } + + # For comparison with If-Last-Modified + # If not applicable, return NULL + + function last_modified() { + return NULL; + } + function is_readonly() { return false; } @@ -43,8 +56,27 @@ class Action { // lawsuit return (is_string($arg)) ? trim($arg) : $arg; } - function handle($argarray) { - $this->args =& common_copy_args($argarray); + # Note: argarray ignored, since it's now passed in in init() + + function handle($argarray=NULL) { + + $lm = $this->last_modified(); + + if ($lm) { + header('Last-Modified: ' . date(DATE_RFC822, $dt)); + $if_modified_since = $_SERVER['HTTP_IF_MODIFIED_SINCE']; + if ($if_modified_since) { + $ims = strtotime($if_modified_since); + if ($lm <= $ims) { + $if_none_match = $_SERVER['HTTP_IF_NONE_MATCH']; + if ($if_none_match) { + header('304 Not Modified'); + # Better way to do this? + exit(0); + } + } + } + } } function boolean($key, $def=false) {