/
Environment.class.php
89 lines (68 loc) · 2.07 KB
/
Environment.class.php
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
87
88
89
<?php
Library::import('recess.http.Request');
Library::import('recess.http.Methods');
Library::import('recess.http.Accepts');
/**
* @author Kris Jordan <krisjordan@gmail.com>
* @contributor Luiz Alberto Zaiats
*
* @copyright 2008, 2009 Kris Jordan
* @package Recess PHP Framework
* @license MIT
* @link http://www.recessframework.org/
*/
class Environment {
public static function getRawRequest() {
$request = new Request();
$request->method = $_SERVER['REQUEST_METHOD'];
$request->format = 'html';
$request->setResource(self::stripQueryString($_SERVER['REQUEST_URI']));
$request->get = $_GET;
$request->post = $_POST;
if( $request->method == Methods::POST ||
$request->method == Methods::PUT )
{
$request->input = file_get_contents('php://input');
if($request->method == Methods::POST) {
$request->post = $_POST;
} else {
$request->put = self::getPutParameters($request->input);
}
}
$request->headers = self::getHttpRequestHeaders();
$request->accepts = new Accepts($request->headers);
$request->username = @$_SERVER['PHP_AUTH_USER'];
$request->password = @$_SERVER['PHP_AUTH_PW'];
$request->cookies = $_COOKIE;
$request->isAjax = isset($request->headers['X_REQUESTED_WITH'])
&& $request->headers['X_REQUESTED_WITH'] == 'XMLHttpRequest';
return $request;
}
private static function stripQueryString($uri) {
$questionMarkPosition = strpos($uri, '?');
if($questionMarkPosition !== false) {
return substr($uri,0,$questionMarkPosition);
}
return $uri;
}
private static function getHttpRequestHeaders() {
$lengthOfHTTP_ = 5;
$httpHeaders = array();
foreach(array_keys($_SERVER) as $key) {
if(substr($key,0,$lengthOfHTTP_) == 'HTTP_') {
$httpHeaders[substr($key, $lengthOfHTTP_)] = $_SERVER[$key];
}
}
return $httpHeaders;
}
private static function getPutParameters($input) {
$putdata = $input;
if(function_exists('mb_parse_str')) {
mb_parse_str($putdata, $outputdata);
} else {
parse_str($putdata, $outputdata);
}
return $outputdata;
}
}
?>