You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
2.4 KiB
81 lines
2.4 KiB
<?php
|
|
class PMXE_Input {
|
|
protected $filters = array('stripslashes');
|
|
|
|
public function read($inputArray, $paramName, $default = NULL) {
|
|
if (is_array($paramName) and ! is_null($default)) {
|
|
throw new Exception('Either array of parameter names with default values as the only argument or param name and default value as seperate arguments are expected.');
|
|
}
|
|
if (is_array($paramName)) {
|
|
foreach ($paramName as $param => $def) {
|
|
if (isset($inputArray[$param])) {
|
|
$paramName[$param] = $this->applyFilters($inputArray[$param]);
|
|
}
|
|
}
|
|
return $paramName;
|
|
} else {
|
|
return isset($inputArray[$paramName]) ? $this->applyFilters($inputArray[$paramName]) : $default;
|
|
}
|
|
}
|
|
|
|
public function get($paramName, $default = NULL) {
|
|
$this->addFilter('htmlspecialchars');
|
|
$this->addFilter('strip_tags');
|
|
$this->addFilter('esc_sql');
|
|
$this->addFilter('esc_js');
|
|
$result = $this->read($_GET, $paramName, $default);
|
|
$this->removeFilter('htmlspecialchars');
|
|
$this->removeFilter('strip_tags');
|
|
$this->removeFilter('esc_sql');
|
|
$this->removeFilter('esc_js');
|
|
return $result;
|
|
}
|
|
|
|
public function post($paramName, $default = NULL) {
|
|
return $this->read($_POST, $paramName, $default);
|
|
}
|
|
|
|
public function cookie($paramName, $default = NULL) {
|
|
return $this->read($_COOKIE, $paramName, $default);
|
|
}
|
|
|
|
public function request($paramName, $default = NULL) {
|
|
return $this->read($_GET + $_POST + $_COOKIE, $paramName, $default);
|
|
}
|
|
|
|
public function getpost($paramName, $default = NULL) {
|
|
return $this->read($_GET + $_POST, $paramName, $default);
|
|
}
|
|
|
|
public function server($paramName, $default = NULL) {
|
|
return $this->read($_SERVER, $paramName, $default);
|
|
}
|
|
|
|
public function addFilter($callback) {
|
|
if ( ! is_callable($callback)) {
|
|
throw new Exception(get_class($this) . '::' . __METHOD__ . ' parameter must be a proper callback function reference.');
|
|
}
|
|
if ( ! in_array($callback, $this->filters)) {
|
|
$this->filters[] = $callback;
|
|
}
|
|
return $this;
|
|
}
|
|
|
|
public function removeFilter($callback) {
|
|
$this->filters = array_diff($this->filters, array($callback));
|
|
return $this;
|
|
}
|
|
|
|
protected function applyFilters($val) {
|
|
if (is_array($val)) {
|
|
foreach ($val as $k => $v) {
|
|
$val[$k] = $this->applyFilters($v);
|
|
}
|
|
} else {
|
|
foreach ($this->filters as $filter) {
|
|
$val = call_user_func($filter, $val);
|
|
}
|
|
}
|
|
return $val;
|
|
}
|
|
} |