Newer
Older
Digital_Repository / Repositories / statistics / includes / inc.fns.input_check.es.php
<?php
/*
	Check all the input. We are only using _REQUEST which may or may not
	be a good idea. Unsetting GET and POST.
*/

$checkit = new checkit();
$short = $GLOBALS["config_vars"]["input_filter"]["keys"][$GLOBALS["config_vars"]["thisrequest"]];
unset($_GET);
unset($_POST);
foreach ($_REQUEST as $k=>$v) {
	if (is_array($v)) {
		foreach($v as $k1=>$v1) {
			if(is_array($v1)) {
				foreach($v1 as $k2=>$v2) {
					if(is_array($v2)) {
						$logger->setLog("Array too deep under $k>$k1>$k2",__LINE__,__FILE__);
					} else {
						// do something
						$logger->setLog("IGNORE: $k>$k1>$k2",__LINE__,__FILE__);
					}
				}
			} else {
				if (isset($short[$k]['keys'][$k1])) {
					$checkit->setConfig($short[$k]['keys'][$k1]);
					$checkit->doCheck($v1);
					$response = $checkit->getResponse();
					if($response == UNSET_REPLACE) {
						$newval = $checkit->getNewValue();
						$_REQUEST[$k][$k1] = $newval;
						$logger->setLog("REPLACE $v1 with $newval",__LINE__,__FILE__);
					} else {
						handle_response($response);
					}
					
					$logger->setLog("Acting on key:(".$short[$k]['keys'][$k1]['type'].") ($response) $k1",__LINE__,__FILE__);
				} else {
					unset($_REQUEST[$k]);
					$logger->setLog("Unsetting [$k][$k1]",__LINE__,__FILE__);
				}
			}
		}
	} else {
		if (isset($short[$k])) {
			$checkit->setConfig($short[$k]);
			$checkit->doCheck($v);
			$response = $checkit->getResponse();
			if($response == UNSET_REPLACE) {
				$newval = $checkit->getNewValue();
				$_REQUEST[$k][$k1] = $newval;
				$logger->setLog("REPLACE $v1 with $newval",__LINE__,__FILE__);
			} else {
				handle_response($response);
			}			
			$logger->setLog("Acting on key:(".$short[$k]['type'].") ($response) $k",__LINE__,__FILE__);
		} else {
			unset($_REQUEST[$k]);
			$logger->setLog("Unsetting $k",__LINE__,__FILE__);
		}
	}
}

function handle_response($response)
{
		if ($response == UNSET_CONTINUE)  { /* Take no action. */ }
		if ($response == UNSET_REQUEST)   { unset($_REQUEST); }
		if ($response == UNSET_KEY)       { unset($_REQUEST[$k]); }
		if ($response == UNSET_ACTION)    { unset($_REQUEST["action"]); }
		if ($response == UNSET_REPLACE)   { unset($_REQUEST["action"]); }
}
?>