/lib/core/functions/_params.funcs.php
PHP | 312 lines | 150 code | 48 blank | 114 comment | 31 complexity | 7c127094511cfcfa534022b624cb285a MD5 | raw file
- <?php
- /**
- * Balupton's Resource Library (balPHP)
- * Copyright (C) 2008 Benjamin Arthur Lupton
- * http://www.balupton.com/
- *
- * This file is part of Balupton's Resource Library (balPHP).
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with Balupton's Resource Library (balPHP). If not, see <http://www.gnu.org/licenses/>.
- *
- * @package balphp
- * @subpackage core
- * @version 0.1.1-final, November 11, 2009
- * @since 0.1.0-final, April 21, 2008
- * @author Benjamin "balupton" Lupton <contact@balupton.com> - {@link http://www.balupton.com/}
- * @copyright Copyright (c) 2008, Benjamin Arthur Lupton - {@link http://www.balupton.com/}
- * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License
- */
-
- require_once (dirname(__FILE__).DIRECTORY_SEPARATOR.'_general.funcs.php');
- require_once (dirname(__FILE__).DIRECTORY_SEPARATOR.'_strings.funcs.php');
-
- if ( function_compare('explode_querystring', 1, true, __FILE__, __LINE__) ) {
-
- /**
- * Do something
- *
- * @version 1
- *
- * @todo figure out what the hell this does
- *
- */
- function explode_querystring ( $query_string, $amp = '&' ) {
- $query_string = explode($amp, $query_string);
- $params = array();
- for($i = 0, $n = sizeof($query_string); $i < $n; ++$i) {
- $param = explode('=', $query_string[$i]);
- if ( sizeof($param) === 2 ) {
- $key = $param[0];
- $value = $param[1];
- $params[$key] = $value;
- }
- }
- return $params;
- }
- }
-
- if ( function_compare('implode_querystring', 1, true, __FILE__, __LINE__) ) {
-
- /**
- * Do something
- *
- * @version 1.1, June 24, 2010 - added urlencode
- * @since 1
- *
- * @todo figure out what the hell this does
- *
- */
- function implode_querystring ( $query_string, $amp = '&' ) {
- $params = '';
- foreach ( $query_string as $key => $value ) {
- $params .= urlencode($key) . '=' . urlencode($value) . $amp;
- }
- return $params;
- }
- }
-
- if ( function_compare('regenerate_params', 2, true, __FILE__, __LINE__) ) {
-
- /**
- * Do something
- *
- * @version 1
- *
- * @todo figure out what the hell this does
- *
- */
- function regenerate_params ( $display = 'form', $params = NULL ) {
- if ( $params === NULL )
- $params = array_merge($_GET, $_POST);
- elseif ( gettype($params) === 'string' ) {
- $params = explode_querystring($params);
- }
-
- $result = '';
-
- switch ( $display ) {
- case 'form' :
- foreach ( $params as $key => $value ) {
- $result .= '<input type="hidden" name="' . $key . '" value="' . $value . '" />';
- }
- break;
-
- default :
- die('Unknown regenerate params display: ' . $display);
- break;
- }
-
- return $result;
- }
- }
-
- if ( function_compare('hydrate_request_init', 1, true, __FILE__, __LINE__) ) {
-
- /**
- * Rebuild and hydrate $_REQUEST
- * @version 1, January 06, 2010
- */
- function hydrate_request_init ( $once = true ) {
- # Init
- if ( defined('REQUEST_HYDRATED') ) {
- if ( $once ) return;
- } else
- define('REQUEST_HYDRATED', 1);
-
- # Prepare
- $stripslashes = ini_get('magic_quotes_gpc') ? true : false;
-
- # Prepare
- $_POST_HYDRATED = $_POST;
- $_GET_HYDRATED = $_GET;
- $_FILES_HYDRATED = array();
-
- # Clean
- array_clean_form($_POST_HYDRATED);
- array_clean_form($_GET_HYDRATED);
- array_clean_form($_FILES_HYDRATED);
-
- # Hydrate
- hydrate_value($_POST_HYDRATED, array('stripslashes'=>$stripslashes));
- hydrate_value($_GET_HYDRATED, array('stripslashes'=>$stripslashes));
- hydrate_value($_FILES_HYDRATED);
-
- # Liberate
- liberate_files($_FILES_HYDRATED);
- unset_empty_files($_FILES_HYDRATED);
-
- # Merge
- $_REQUEST = array_merge_recursive_keys(false, $_FILES_HYDRATED, $_GET_HYDRATED, $_POST_HYDRATED);
-
- # Done
- return true;
- }
- }
-
- if ( function_compare('get_param', 2, true, __FILE__, __LINE__) ) {
-
- /**
- * Get a unhydrated param
- * @version 3, May 05, 2010
- * @since 2
- * @param string $name
- * @param array $options [optional]
- */
- function get_param ( $name, $default = null, $stripslashes = null) {
- # Prepare
- if ( $stripslashes === null )
- $stripslashes = get_magic_quotes_gpc() ? true : false;
-
- # Fetch
- $value = delve($_POST,$name,delve($_GET,$name,delve($_FILES,$name,$default)));
-
- # Stripslashes
- if ( $stripslashes && is_string($value) ) {
- $value = stripslashes($value);
- }
-
- # Return value
- return $value;
- }
- }
-
-
- if ( function_compare('fetch_param', 1, true, __FILE__, __LINE__) ) {
-
- /**
- * Get a hydrated param
- * @version 1, January 06, 2010
- */
- function fetch_param ( $name, $default = null ) {
- # Prepare
- hydrate_request_init();
-
- # Fetch
- $value = delve($_REQUEST, $name, $default);
-
- # Return value
- return $value;
- }
- }
-
- if ( function_compare('has_param', 1, true, __FILE__, __LINE__) ) {
-
- /**
- * Check to see if the param exists
- * @version 1, January 06, 2010
- */
- function has_param ( $name ) {
- # Prepare
- hydrate_request_init();
-
- # Fetch
- $exists = delve($_REQUEST, $name) !== null;
-
- # Return exists
- return $exists;
- }
- }
-
-
- if ( function_compare('liberate_subfiles', 1, true, __FILE__, __LINE__) ) {
-
- /**
- * Liberate subfiles
- * @version 1, January 06, 2010
- */
- function liberate_subfiles ( &$where, $prefix, $suffix, $subvalue ) {
- # Prepare
- $prefix = trim($prefix, '.');
- $suffix = trim($suffix, '.');
-
- # Handle
- if ( !is_array($subvalue) ) {
- # We have reached the bottom
- $name = $prefix.'.'.$suffix;
- array_apply($where, $name, $subvalue, true); // when setting to false, PHP memory reference error occurs...
- }
- else {
- # More sub files
- foreach ( $subvalue as $key => $value ) {
- liberate_subfiles($where, $prefix.'.'.$key, $suffix, $value);
- }
- }
-
- # Done
- return true;
- }
- }
-
-
- if ( function_compare('liberate_files', 1, true, __FILE__, __LINE__) ) {
-
- /**
- * Liberate files
- * The purpose of this is when using $_FILE with param arrays, we want to be able to do this $_FILE['user']['avatar']['tmpname'] instead of $_FILE['user']['tmpname']['avatar']
- * @version 1, January 06, 2010
- */
- function liberate_files ( &$where ) {
- # Handle
- foreach ( $_FILES as $fileKey => $fileValue ) {
- foreach ( $fileValue as $filePartKey => $filePartValue ) {
- if ( is_array($filePartValue) ) {
- # We have a multiple file
- liberate_subfiles($where, $fileKey, $filePartKey, $filePartValue);
- }
- }
- }
- }
- }
-
- if ( function_compare('unset_empty_files', 1, true, __FILE__, __LINE__) ) {
-
- /**
- * Unset empty files
- * The purpose of this function is to unset empty files (error==4)
- * @version 1, February 22, 2010
- */
- function unset_empty_files ( &$files, $current = null, $prefix = '', $last = '' ) {
- # Prepare
- $prefix = trim($prefix, '.');
- if ( $prefix === '' && $current === null ) $current = $files;
-
- # Handle
- if ( is_array($current) ) {
- # Deeper
- foreach ( $current as $key => $value ) {
- if ( is_array($value) ) {
- unset_empty_files($files, $value, $prefix.'.'.$key, $key);
- }
- elseif ( ($key === 'error' && $value === 4) || ($key === 'size' && !$value) ) {
- array_unapply($files, $prefix);
- }
- }
- }
-
- # Done
- return true;
- }
- }
-
- if ( function_compare('fix_magic_quotes', 1, true, __FILE__, __LINE__) ) {
-
- /**
- * Fix magic quotes
- * @version 2, August 22, 2009
- * @since 1, Unknown
- * @package BalPHP {@link http://www.balupton/projects/balphp}
- * @author Benjamin "balupton" Lupton <contact@balupton.com> - {@link http://www.balupton.com/}
- * @copyright Copyright (c) 2008-2010, Benjamin Arthur Lupton - {@link http://www.balupton.com/}
- * @license http://www.gnu.org/licenses/agpl.html GNU Affero General Public License
- */
- function fix_magic_quotes ( ) {
- if ( ini_get('magic_quotes_gpc') ) {
- $_POST = array_map('stripslashes_deep', $_POST);
- $_GET = array_map('stripslashes_deep', $_GET);
- $_COOKIE = array_map('stripslashes_deep', $_COOKIE);
- $_REQUEST = array_map('stripslashes_deep', $_REQUEST);
- ini_set('magic_quotes_gpc', 0);
- }
- }
- }