1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
<?php
class GetParameters
{
private $_fields;
public function __construct(array $defaults = array())
{
$this->_fields = $defaults;
}
public function __set($key, $value)
{
$this->_fields[$key] = $value;
}
public function __isset($key)
{
return isset($this->_fields[$key]);
}
public function __unset($key)
{
unset($this->_fields[$key]);
}
public function __get($key)
{
return $this->_fields[$key];
}
public function getURL(array $assoc = array(), $html = true, $prefix='?')
{
$arg_sep = ($html?'&':'&');
return $prefix . http_build_query(array_merge($this->_fields, $assoc), '', $arg_sep);
}
public function getLink(array $assoc = array(), $content = '[ link ]', $class = '', $title = '', $target='')
{
return '<a href="' . $this->getURL($assoc) . '"'
. ($class != '' ? ' class="' . $class . '"' : '')
. ($title != '' ? ' title="' . $title . '"' : '')
. ($target != '' ? ' target="' . $target . '"' : '')
. '>' . $content . '</a>';
}
public function getForm(array $assoc = array(), $method = 'post', $upload = false, $name = '', $csrf = true)
{
$hidden = '';
if($method == 'get')
{
$url = '';
foreach(array_merge($this->_fields, $assoc) as $key => $value)
{
if(!is_null($value))
$hidden .= '<input type="hidden" name="'.htmlencode($key).'" value="'.htmlencode($value).'" /> ';
}
}
else
$url = $this->getURL($assoc);
if($csrf && $method == 'post')
$hidden .= '<input type="hidden" name="token" value="'.$_SESSION[COOKIENAME.'token'].'" />';
return "<form action='". $url ."' method='" . $method . "'" .
($name!=''? " name='". $name ."'" : '') .
($upload? " enctype='multipart/form-data'" : '') . ">" .
$hidden;
}
public function redirect(array $assoc = array(), $message="")
{
if($message!="")
{
$_SESSION[COOKIENAME.'messages'][md5($message)] = $message;
$url = $this->getURL(array_merge($assoc, array('message'=>md5($message))), false);
}
else
$url = $this->getURL($assoc, false);
$protocol = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http');
header("Location: ".$protocol."://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].$url, true, 302);
exit;
}
}
|