A lot has been rewritten, ext-teams added, ext-forced continued:
[mailer.git] / inc / request-functions.php
1 <?php
2 /************************************************************************
3  * Mailer v0.2.1-FINAL                                Start: 02/28/2009 *
4  * ===================                          Last change: 02/28/2009 *
5  *                                                                      *
6  * -------------------------------------------------------------------- *
7  * File              : request-functions.php                            *
8  * -------------------------------------------------------------------- *
9  * Short description : Special functions for request handling           *
10  * -------------------------------------------------------------------- *
11  * Kurzbeschreibung  : Spezialle Funktionen fuer die Anfragebehandlung  *
12  * -------------------------------------------------------------------- *
13  * $Revision::                                                        $ *
14  * $Date::                                                            $ *
15  * $Tag:: 0.2.1-FINAL                                                 $ *
16  * $Author::                                                          $ *
17  * -------------------------------------------------------------------- *
18  * Copyright (c) 2003 - 2009 by Roland Haeder                           *
19  * Copyright (c) 2009 - 2011 by Mailer Developer Team                   *
20  * For more information visit: http://www.mxchange.org                  *
21  *                                                                      *
22  * This program is free software; you can redistribute it and/or modify *
23  * it under the terms of the GNU General Public License as published by *
24  * the Free Software Foundation; either version 2 of the License, or    *
25  * (at your option) any later version.                                  *
26  *                                                                      *
27  * This program is distributed in the hope that it will be useful,      *
28  * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
29  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
30  * GNU General Public License for more details.                         *
31  *                                                                      *
32  * You should have received a copy of the GNU General Public License    *
33  * along with this program; if not, write to the Free Software          *
34  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,               *
35  * MA  02110-1301  USA                                                  *
36  ************************************************************************/
37
38 // Some security stuff...
39 if (!defined('__SECURITY')) {
40         die();
41 } // END - if
42
43 // Initialize the request elements
44 function initRequest () {
45         $GLOBALS['raw_request']['get']  = (array) $_GET;
46         $GLOBALS['raw_request']['post'] = (array) $_POST;
47 }
48
49 // Wrapper for elements in $_GET
50 function getRequestParameter ($element) {
51         // By default no element is there
52         $value = NULL;
53
54         // Is the element cached or there?
55         if (isset($GLOBALS['cache_request']['get'][$element])) {
56                 // Then use the cache
57                 $value = $GLOBALS['cache_request']['get'][$element];
58         } elseif (isGetRequestParameterSet($element)) {
59                 // Then get it directly
60                 $value = SQL_ESCAPE($GLOBALS['raw_request']['get'][$element]);
61
62                 // Store it in cache
63                 $GLOBALS['cache_request']['get'][$element] = $value;
64         } // END - if
65
66         // Return value
67         return $value;
68 }
69
70 // Checks if an element in $_GET exists
71 function isGetRequestParameterSet ($element, $subElement = '') {
72         if (empty($subElement)) {
73                 return ((isset($GLOBALS['raw_request']['get'][$element])) && ('' . ($GLOBALS['raw_request']['get'][$element] . '') != ''));
74         } else {
75                 return ((isset($GLOBALS['raw_request']['get'][$element][$subElement])) && ('' . ($GLOBALS['raw_request']['get'][$element][$subElement] . '') != ''));
76         }
77 }
78
79 // Removes an element from $_GET
80 function unsetGetRequestParameter ($element) {
81         unset($GLOBALS['raw_request']['get'][$element]);
82 }
83
84 // Getter for whole $_GET array
85 function getRequestArray () {
86         return $GLOBALS['raw_request']['get'];
87 }
88
89 // Counts entries in $_GET or returns false if not an array
90 function countRequestGet () {
91         // By default this is not an array
92         $count = false;
93
94         // Get the array
95         $GET = getRequestArray();
96
97         // Is it an array?
98         if (is_array($GET)) {
99                 // Then count it
100                 $count = count($GET);
101         } // END - if
102
103         // Return value
104 }
105
106 // Setter for element in $_GET
107 function setGetRequestParameter ($element, $value) {
108         // Escape both
109         $element = SQL_ESCAPE($element);
110         $value   = SQL_ESCAPE($value);
111
112         // Set in $_GET
113         $GLOBALS['raw_request']['get'][$element] = $value;
114
115         // Update cache
116         $GLOBALS['cache_request']['get'][$element] = $value;
117 }
118
119 // Wrapper for elements in $_POST
120 function postRequestParameter ($element, $subElement=null) {
121         // By default no element is there
122         $value = NULL;
123
124         // Is the element in cache?
125         if (isset($GLOBALS['cache_request']['post'][$element][$subElement])) {
126                 // Then use it
127                 $value = $GLOBALS['cache_request']['post'][$element][$subElement];
128         } elseif (isPostRequestParameterSet($element)) {
129                 // Then use it
130                 $value = $GLOBALS['raw_request']['post'][$element];
131
132                 // Is $subElement set?
133                 if ((!is_null($subElement)) && (isPostRequestParameterSet($element, $subElement))) {
134                         // Then use this
135                         $value = SQL_ESCAPE($value[$subElement]);
136                 } elseif (!is_array($value)) {
137                         // Escape it here
138                         $value = SQL_ESCAPE($value);
139                 }
140
141                 // Set it in cache
142                 $GLOBALS['cache_request']['post'][$element][$subElement] = $value;
143         } // END - if
144
145         // Return value
146         return $value;
147 }
148
149 // Checks if an element in $_POST exists
150 function isPostRequestParameterSet ($element, $subElement=null) {
151         if (is_null($subElement)) {
152                 return ((isset($GLOBALS['raw_request']['post'][$element])) && (('' . $GLOBALS['raw_request']['post'][$element] . '') != ''));
153         } else {
154                 return ((isset($GLOBALS['raw_request']['post'][$element][$subElement])) && (('' . $GLOBALS['raw_request']['post'][$element][$subElement] . '') != ''));
155         }
156 }
157
158 // Removes an element from $_POST
159 function unsetPostRequestParameter ($element) {
160         unset($GLOBALS['raw_request']['post'][$element]);
161 }
162
163 // Getter for whole $_POST array
164 function postRequestArray () {
165         return $GLOBALS['raw_request']['post'];
166 }
167
168 // Setter for whole $_POST array
169 function setPostRequestArray ($postData) {
170         $GLOBALS['raw_request']['post'] = $postData;
171 }
172
173 // Counts entries in $_POST or returns false if not an array
174 function countRequestPost () {
175         // By default this is not an array
176         $count = false;
177
178         // Get the array
179         $postData = postRequestArray();
180
181         // Is it an array?
182         if (is_array($postData)) {
183                 // Then count it
184                 $count = count($postData);
185         } // END - if
186
187         // Return value
188 }
189
190 // Setter for element in $_POST
191 function setPostRequestParameter ($element, $value) {
192         // Is $element or $value an array?
193         if (is_array($element)) {
194                 // Set array
195                 $eval = "\$GLOBALS['raw_request']['post']['";
196
197                 // Add all entries
198                 $eval .= implode("']['", $element);
199
200                 // Finish eval() command
201                 $eval .= sprintf("'] = \"%s\";", SQL_ESCAPE($value));
202
203                 // And run it
204                 eval($eval);
205         } elseif (is_array($value)) {
206                 // Escape element
207                 $element = SQL_ESCAPE($element);
208
209                 // Value is an array so set it directly
210                 $GLOBALS['raw_request']['post'][$element] = $value;
211         } else {
212                 // Escape both
213                 $element = SQL_ESCAPE($element);
214                 $value   = SQL_ESCAPE($value);
215
216                 // Set regular entry
217                 $GLOBALS['raw_request']['post'][$element] = $value;
218         }
219
220         // Update cache
221         $GLOBALS['cache_request']['post'][$element][null] = $value;
222 }
223
224 // Checks wether a form was sent. If so, the $_POST['ok'] element must be set
225 function isFormSent ($requestParameter = 'ok') {
226         // Simply wrap it!
227         return isPostRequestParameterSet($requestParameter);
228 }
229
230 // Checks if 'content_type' is set
231 function isContentTypeSet () {
232         return isset($GLOBALS['content_type']);
233 }
234
235 // Setter for content type
236 function setContentType ($contentType) {
237         $GLOBALS['content_type'] = (string) $contentType;
238 }
239
240 // Getter for content type
241 function getContentType () {
242         return $GLOBALS['content_type'];
243 }
244
245 // Getter for request URI
246 function getRequestUri () {
247         return $_SERVER['REQUEST_URI'];
248 }
249
250 // [EOF]
251 ?>