reasonableframework/system/uri.php

237 lines
5.0 KiB
PHP
Raw Normal View History

2017-12-22 18:39:21 +00:00
<?php
2018-04-13 05:16:52 +00:00
/**
* @file uri.php
* @date 2018-04-13
* @author Go Namhyeon <gnh1201@gmail.com>
* @brief URI module
*/
2017-12-22 18:39:21 +00:00
if(!function_exists("base_url")) {
function base_url() {
2018-03-14 04:35:11 +00:00
return get_config_value("base_url");
}
}
2017-12-22 18:39:21 +00:00
2018-03-14 04:35:11 +00:00
if(!function_exists("base_api_url")) {
function base_api_url() {
return get_config_value("base_api_url");
2017-12-22 18:39:21 +00:00
}
}
2017-12-22 18:41:14 +00:00
if(!function_exists("get_uri")) {
function get_uri() {
2018-03-15 02:53:34 +00:00
$requests = get_requests();
2018-04-13 05:16:52 +00:00
$request_uri = "";
2017-12-31 16:16:24 +00:00
if(!array_key_empty("REQUEST_URI", $_SERVER)) {
$request_uri = $requests["_URI"];
2017-12-22 18:41:14 +00:00
}
return $request_uri;
}
}
2017-12-31 17:24:39 +00:00
2018-03-15 02:53:34 +00:00
if(!function_exists("read_requests")) {
function read_requests() {
2017-12-31 17:24:39 +00:00
$requests = array(
2018-04-13 05:16:52 +00:00
"_ALL" => $_REQUEST,
"_POST" => $_POST,
"_GET" => $_GET,
"_URI" => !array_key_empty("REQUEST_URI", $_SERVER) ? $_SERVER["REQUEST_URI"] : '',
2018-04-01 17:39:30 +00:00
"_FILES" => is_array($_FILES) ? $_FILES : array(),
2017-12-31 17:24:39 +00:00
);
2018-02-21 04:46:50 +00:00
// with security module
if(function_exists("get_clean_xss")) {
foreach($requests['_GET'] as $k=>$v) {
if(is_string($v)) {
$requests['_GET'][$k] = get_clean_xss($v);
}
}
}
2018-04-01 17:39:30 +00:00
// set alias
$requests['all'] = $requests['_ALL'];
$requests['post'] = $requests['_POST'];
$requests['get'] = $requests['_GET'];
$requests['uri'] = $requests['_URI'];
$requests['files'] = $requests['_FILES'];
2017-12-31 17:24:39 +00:00
return $requests;
}
}
2018-03-15 02:53:34 +00:00
if(!function_exists("get_requests")) {
2018-03-15 03:47:15 +00:00
function get_requests() {
2018-04-13 05:16:52 +00:00
$requests = get_scope("requests");
if(!is_array($requests)) {
set_scope("requests", read_requests());
}
return get_scope("requests");
2018-03-15 03:47:15 +00:00
}
2018-03-15 02:53:34 +00:00
}
2018-04-16 02:12:12 +00:00
if(!function_exists("get_final_link")) {
function get_final_link($url, $data=array(), $entity=true) {
$link = "";
$url = urldecode($url);
$params = array();
$base_url = "";
$query_str = "";
2018-04-14 16:31:16 +00:00
2018-04-16 02:12:12 +00:00
$strings = explode("?", $url);
$pos = (count($strings) > 1) ? strlen($strings[0]) : -1;
if($pos < 0) {
$base_url = $url;
} else {
$base_url = substr($url, 0, $pos);
$query_str = substr($url, ($pos + 1));
parse_str($query_str, $params);
}
foreach($data as $k=>$v) {
$params[$k] = $v;
}
if(count($params) > 0) {
$link = $base_url . "?" . http_build_query($params);
} else {
$link = $base_url;
2018-04-14 16:31:16 +00:00
}
2018-04-14 16:23:03 +00:00
if($entity == true) {
$link = str_replace("&", "&amp;", $link);
}
2018-04-14 16:31:16 +00:00
2018-04-14 16:23:03 +00:00
return $link;
2018-04-14 16:24:12 +00:00
}
2018-04-14 16:23:03 +00:00
}
2018-04-16 02:12:12 +00:00
if(!function_exists("get_route_link")) {
function get_route_link($route, $data=array(), $entity=true, $base_url="") {
$data['route'] = $route;
if(empty($base_url)) {
$base_url = base_url();
}
return get_final_link($base_url, $data, $entity);
}
}
2018-02-09 10:57:23 +00:00
if(!function_exists("redirect_uri")) {
function redirect_uri($uri, $permanent=false) {
2018-04-13 05:16:52 +00:00
header("Location: " . $uri, true, $permanent ? 301 : 302);
2018-02-09 10:57:23 +00:00
exit();
}
}
2018-04-16 02:12:12 +00:00
if(!function_exists("redirect_with_params")) {
function redirect_with_params($uri, $data=array(), $permanent=false, $entity=false) {
redirect_uri(get_final_link($uri, $data, $entity), $permanent);
}
}
2018-04-14 16:14:23 +00:00
if(!function_exists("redirect_route")) {
function redirect_route($route, $data=array()) {
2018-04-14 16:23:03 +00:00
redirect_uri(get_route_link($route, $data, false));
2018-04-14 16:14:23 +00:00
}
}
2018-04-13 05:16:52 +00:00
if(!function_exists("read_requests")) {
function read_requests() {
$requests = array(
"_ALL" => $_REQUEST,
"_POST" => $_POST,
"_GET" => $_GET,
"_URI" => !array_key_empty("REQUEST_URI", $_SERVER) ? $_SERVER["REQUEST_URI"] : '',
"_FILES" => is_array($_FILES) ? $_FILES : array(),
);
2018-03-15 03:34:26 +00:00
2018-04-13 05:16:52 +00:00
// with security module
if(function_exists("get_clean_xss")) {
foreach($requests['_GET'] as $k=>$v) {
if(is_string($v)) {
$requests['_GET'][$k] = get_clean_xss($v);
2018-03-15 03:54:19 +00:00
}
2018-03-15 03:37:16 +00:00
}
2018-03-15 03:34:26 +00:00
}
2018-03-15 02:53:34 +00:00
2018-04-13 05:16:52 +00:00
// set alias
$requests['all'] = $requests['_ALL'];
$requests['post'] = $requests['_POST'];
$requests['get'] = $requests['_GET'];
$requests['uri'] = $requests['_URI'];
$requests['files'] = $requests['_FILES'];
return $requests;
2018-03-15 02:53:34 +00:00
}
}
2018-04-13 05:19:16 +00:00
if(!function_exists("get_requested_value")) {
2018-04-16 02:14:10 +00:00
function get_requested_value($name, $method="_ALL", $escape_quotes=true, $escape_tags=false) {
2018-04-16 02:12:12 +00:00
$value = "";
2018-04-16 02:14:10 +00:00
$requests = get_requests();
2018-04-16 02:12:12 +00:00
2018-04-13 05:19:16 +00:00
// set validated value
2018-04-16 02:14:10 +00:00
if(array_key_exists($method, $requests)) {
2018-04-13 05:19:16 +00:00
$value = array_key_empty($name, $requests[$method]) ? $value : $requests[$method][$name];
if(is_string($value)) {
// security: set escape quotes
if($escape_quotes == true) {
$value = addslashes($value);
}
// security: set escape tags
if($escape_tags == true) {
$value = htmlspecialchars($value);
}
}
}
return $value;
}
}
2018-04-16 02:14:10 +00:00
if(!function_exists("get_requested_values")) {
function get_requested_values($names, $method="_ALL", $escape_quotes=true, $escape_tags=false) {
$values = array();
if(is_array($names)) {
foreach($names as $name) {
$values[$name] = get_requested_value($name);
}
}
return $values;
}
}
if(!function_exists("get_binded_requests")) {
function get_binded_requests($rules, $method="_ALL") {
$data = array();
foreach($rules as $k=>$v) {
if(!empty($v)) {
$data[$v] = get_requested_value($k);
}
}
return $data;
}
}
2018-03-22 04:05:09 +00:00
if(!function_exists("get_array")) {
function get_array($arr) {
return is_array($arr) ? $arr : array();
}
}
2018-04-13 05:16:52 +00:00
// set scope
set_scope("requests", read_requests());