add init, last_modified to actions

darcs-hash:20081202034736-5ed1f-e096ab5e9a77d2bb74c949659966d400cbc9a149.gz
This commit is contained in:
Evan Prodromou 2008-12-01 22:47:36 -05:00
parent d55318eaed
commit d268703d69
2 changed files with 35 additions and 2 deletions

View File

@ -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'));

View File

@ -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) {