From: Evan Prodromou Date: Tue, 2 Dec 2008 03:47:36 +0000 (-0500) Subject: add init, last_modified to actions X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=d268703d693c8f785e0f1e80a2480230c9327703;p=quix0rs-gnu-social.git add init, last_modified to actions darcs-hash:20081202034736-5ed1f-e096ab5e9a77d2bb74c949659966d400cbc9a149.gz --- 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) {