MINOR: Small code improvements
[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 - 2012 by Mailer Developer Team                   *
20  * For more information visit: http://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 getRequestElement ($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 (isGetRequestElementSet($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 isGetRequestElementSet ($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 unsetGetRequestElement ($element) {
81         unset($GLOBALS['cache_request']['get'][$element]);
82         unset($GLOBALS['raw_request']['get'][$element]);
83 }
84
85 // Getter for whole $_GET array
86 function getRequestArray () {
87         return $GLOBALS['raw_request']['get'];
88 }
89
90 // Counts entries in $_GET or returns false if not an array
91 function countRequestGet () {
92         // By default this is not an array
93         $count = FALSE;
94
95         // Get the array
96         $GET = getRequestArray();
97
98         // Is it an array?
99         if (is_array($GET)) {
100                 // Then count it
101                 $count = count($GET);
102         } // END - if
103
104         // Return value
105 }
106
107 // Setter for element in $_GET
108 function setGetRequestElement ($element, $value) {
109         // Escape both
110         $element = SQL_ESCAPE($element);
111         $value   = SQL_ESCAPE($value);
112
113         // Set in $_GET
114         $GLOBALS['raw_request']['get'][$element] = $value;
115
116         // Update cache
117         $GLOBALS['cache_request']['get'][$element] = $value;
118 }
119
120 // Wrapper for elements in $_POST
121 function postRequestElement ($element, $subElement = NULL) {
122         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element[' . gettype($element) . ']=' . $element . ',subElement[' . gettype($subElement) . ']=' . $subElement . ' - ENTERED!');
123         // By default no element is there
124         $value = NULL;
125
126         // Is the element in cache?
127         if (isset($GLOBALS['cache_request']['post'][$element][$subElement])) {
128                 // Then use it
129                 $value = $GLOBALS['cache_request']['post'][$element][$subElement];
130                 //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element[' . gettype($element) . ']=' . $element . ',subElement[' . gettype($subElement) . ']=' . $subElement . ',value[' . gettype($value) . ']=' . $value . ' - CACHE!');
131         } elseif (isPostRequestElementSet($element)) {
132                 // Then use it
133                 $value = $GLOBALS['raw_request']['post'][$element];
134
135                 // Is $subElement set?
136                 if ((!is_null($subElement)) && (isPostRequestElementSet($element, $subElement))) {
137                         // Then use this
138                         $value = SQL_ESCAPE($value[$subElement]);
139                         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',subElement=' . $subElement . ' - SUB!');
140                 } elseif (!is_array($value)) {
141                         // Escape it here
142                         $value = SQL_ESCAPE($value);
143                         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ' - REGULAR!');
144                 }
145
146                 // Set it in cache
147                 //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',subElement=' . $subElement . ',value=' . $value.' - ADDED!');
148                 $GLOBALS['cache_request']['post'][$element][$subElement] = $value;
149         } // END - if
150
151         // Return value
152         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element[' . gettype($element) . ']=' . $element . ',subElement[' . gettype($subElement) . ']=' . $subElement . ',value[' . gettype($value) . ']=' . $value . ' - EXIT!');
153         return $value;
154 }
155
156 // Checks if an element in $_POST exists
157 function isPostRequestElementSet ($element, $subElement = NULL) {
158         /*
159          * Always check that $element is a string and that $subElement is NULL or
160          * a string as numerical indexes are not wanted in POST data (in this
161          * project).
162          */
163         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element[]=' . gettype($element) . ',subElement[]=' . gettype($subElement));
164         assert(is_string($element) && ((is_null($subElement)) || (is_string($subElement)) || (is_int($subElement)) || (is_double($subElement))));
165
166         // Is a sub element set?
167         if (is_null($subElement)) {
168                 // No, then only check $element
169                 return ((isset($GLOBALS['raw_request']['post'][$element])) && ((is_array($GLOBALS['raw_request']['post'][$element])) || (('' . $GLOBALS['raw_request']['post'][$element] . '') != '')));
170         } else {
171                 // Yes, then check both together
172                 return ((isset($GLOBALS['raw_request']['post'][$element][$subElement])) && (('' . $GLOBALS['raw_request']['post'][$element][$subElement] . '') != ''));
173         }
174 }
175
176 // Removes an element from $_POST
177 function unsetPostRequestElement ($element) {
178         unset($GLOBALS['raw_request']['post'][$element]);
179         unset($GLOBALS['cache_request']['post'][$element]);
180 }
181
182 // Getter for whole $_POST array
183 function postRequestArray () {
184         return $GLOBALS['raw_request']['post'];
185 }
186
187 // Setter for whole $_POST array
188 function setPostRequestArray ($postData) {
189         $GLOBALS['raw_request']['post'] = $postData;
190 }
191
192 // Counts entries in $_POST or returns false if not an array
193 function countRequestPost () {
194         // By default this is not an array
195         $count = FALSE;
196
197         // Get the array
198         $postData = postRequestArray();
199
200         // Is it an array?
201         if (is_array($postData)) {
202                 // Then count it
203                 $count = count($postData);
204         } // END - if
205
206         // Return value
207         return $count;
208 }
209
210 // Setter for element in $_POST
211 function setPostRequestElement ($element, $value) {
212         // Is $element or $value an array?
213         if (is_array($element)) {
214                 // Set array
215                 $eval = "\$GLOBALS['raw_request']['post']['";
216
217                 // Add all entries
218                 $eval .= implode("']['", $element);
219
220                 // Finish eval() command
221                 $eval .= sprintf("'] = \"%s\";", SQL_ESCAPE($value));
222
223                 // And run it
224                 eval($eval);
225         } elseif (is_array($value)) {
226                 // Escape element
227                 $element = SQL_ESCAPE($element);
228
229                 // Value is an array so set it directly
230                 $GLOBALS['raw_request']['post'][$element] = $value;
231         } else {
232                 // Debug message
233                 //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',value=' . $value . ' - BEFORE!');
234
235                 // Escape both
236                 $element = SQL_ESCAPE($element);
237                 $value   = SQL_ESCAPE($value);
238
239                 // Debug message
240                 //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'element=' . $element . ',value=' . $value . ' - AFTER!');
241
242                 // Set regular entry
243                 $GLOBALS['raw_request']['post'][$element] = $value;
244         }
245
246         // Update cache
247         $GLOBALS['cache_request']['post'][$element][NULL] = $value;
248 }
249
250 // Checks whether a form was sent. If so, the $_POST['ok'] element must be set
251 function isFormSent ($requestParameter = 'ok') {
252         // Simply wrap it!
253         return isPostRequestElementSet($requestParameter);
254 }
255
256 // Getter for request URI
257 function getRequestUri () {
258         // Is it not set?
259         if (!isset($_SERVER['REQUEST_URI'])) {
260                 // Return empty string
261                 return '';
262         } // END - if
263
264         // Return it
265         return $_SERVER['REQUEST_URI'];
266 }
267
268 // Add all GET parameters to a string (without leading sign)
269 function addAllGetRequestParameters () {
270         // Init variable
271         $return = '';
272
273         // Now add all parameters
274         foreach (getRequestArray() as $key => $value) {
275                 // Add it secured
276                 $return .= SQL_ESCAPE($key) . '=' . SQL_ESCAPE($value) . '&amp;';
277         } // END - foreach
278
279         // Remove trailing &amp;
280         $return = substr($return, 0, -5);
281
282         // Return it
283         return $return;
284 }
285
286 // [EOF]
287 ?>