X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=functions%2Fglobal.php;h=c20249f55192adcf23e8d0b835b03fce46000d77;hb=10bf80c009d938fc0cf85a70d0a6b3834365b146;hp=ef63d5a9af639e6f222e9835c43bbcc82cadf48a;hpb=4cd8ae7de26f2915a4c98aa45fa528f543b4296a;p=squirrelmail.git diff --git a/functions/global.php b/functions/global.php index ef63d5a9..c20249f5 100644 --- a/functions/global.php +++ b/functions/global.php @@ -1,52 +1,42 @@ = ($a.$b.$c); + return version_compare ( PHP_VERSION, "$a.$b.$c", 'ge' ); } /** - * returns true if the current internal SM version is at minimum a.b.c - * These are plain integer comparisons, as our internal version is + * returns true if the current internal SM version is at minimum a.b.c + * These are plain integer comparisons, as our internal version is * constructed by us, as an array of 3 ints. * * Called: check_sm_version(1,3,3) + * @param int a major version number + * @param int b minor version number + * @param int c release number + * @return bool */ function check_sm_version($a = 0, $b = 0, $c = 0) { global $SQM_INTERNAL_VERSION; if ( !isset($SQM_INTERNAL_VERSION) || $SQM_INTERNAL_VERSION[0] < $a || - $SQM_INTERNAL_VERSION[1] < $b || - ( $SQM_INTERNAL_VERSION[1] == $b && + ( $SQM_INTERNAL_VERSION[0] == $a && + $SQM_INTERNAL_VERSION[1] < $b) || + ( $SQM_INTERNAL_VERSION[0] == $a && + $SQM_INTERNAL_VERSION[1] == $b && $SQM_INTERNAL_VERSION[2] < $c ) ) { return FALSE; - } - return TRUE; + } + return TRUE; } -/* recursively strip slashes from the values of an array */ +/** + * Recursively strip slashes from the values of an array. + * @param array array the array to strip, passed by reference + * @return void + */ function sqstripslashes(&$array) { if(count($array) > 0) { foreach ($array as $index=>$value) { @@ -112,48 +111,49 @@ function sqstripslashes(&$array) { } } +/** + * Add a variable to the session. + * @param mixed $var the variable to register + * @param string $name the name to refer to this variable + * @return void + */ function sqsession_register ($var, $name) { sqsession_is_active(); - if ( !check_php_version(4,1) ) { - global $HTTP_SESSION_VARS; - $HTTP_SESSION_VARS[$name] = $var; - } - else { - $_SESSION["$name"] = $var; - } + $_SESSION["$name"] = $var; + session_register("$name"); } +/** + * Delete a variable from the session. + * @param string $name the name of the var to delete + * @return void + */ function sqsession_unregister ($name) { sqsession_is_active(); - if ( !check_php_version(4,1) ) { - global $HTTP_SESSION_VARS; - unset($HTTP_SESSION_VARS[$name]); - } - else { - unset($_SESSION[$name]); - } + unset($_SESSION[$name]); + session_unregister("$name"); } +/** + * Checks to see if a variable has already been registered + * in the session. + * @param string $name the name of the var to check + * @return bool whether the var has been registered + */ function sqsession_is_registered ($name) { $test_name = &$name; $result = false; - if ( !check_php_version(4,1) ) { - global $HTTP_SESSION_VARS; - if (isset($HTTP_SESSION_VARS[$test_name])) { - $result = true; - } - } - else { - if (isset($_SESSION[$test_name])) { - $result = true; - } + + if (isset($_SESSION[$test_name])) { + $result = true; } + return $result; } @@ -162,74 +162,86 @@ define('SQ_INORDER',0); define('SQ_GET',1); define('SQ_POST',2); define('SQ_SESSION',3); +define('SQ_COOKIE',4); +define('SQ_SERVER',5); +define('SQ_FORM',6); /** - * Search for the var $name in $_SESSION, $_POST, $_GET - * and set it in provided var. + * Search for the var $name in $_SESSION, $_POST, $_GET, + * $_COOKIE, or $_SERVER and set it in provided var. + * * If $search is not provided, or == SQ_INORDER, it will search * $_SESSION, then $_POST, then $_GET. Otherwise, - * use one of the defined constants to look for + * use one of the defined constants to look for * a var in one place specifically. - * Returns FALSE if variable is not found. - * Returns TRUE if it is. + * + * Note: $search is an int value equal to one of the + * constants defined above. + * + * example: + * sqgetGlobalVar('username',$username,SQ_SESSION); + * -- no quotes around last param! + * + * @param string name the name of the var to search + * @param mixed value the variable to return + * @param int search constant defining where to look + * @return bool whether variable is found. */ function sqgetGlobalVar($name, &$value, $search = SQ_INORDER) { - if ( !check_php_version(4,1) ) { - global $_SESSION, $_GET, $_POST; - } - + + /* NOTE: DO NOT enclose the constants in the switch + statement with quotes. They are constant values, + enclosing them in quotes will cause them to evaluate + as strings. */ switch ($search) { - /* we want the default case to be first here, - so that if a valid value isn't specified, - all three arrays will be searched. */ - default: - case SQ_INORDER: - case SQ_SESSION: - if( isset($_SESSION[$name]) ) { + /* we want the default case to be first here, + so that if a valid value isn't specified, + all three arrays will be searched. */ + default: + case SQ_INORDER: // check session, post, get + case SQ_SESSION: + if( isset($_SESSION[$name]) ) { $value = $_SESSION[$name]; - return TRUE; - } elseif ( $search == SQ_SESSION ) { - break; - } - case SQ_POST: - if( isset($_POST[$name]) ) { + return TRUE; + } elseif ( $search == SQ_SESSION ) { + break; + } + case SQ_FORM: // check post, get + case SQ_POST: + if( isset($_POST[$name]) ) { $value = $_POST[$name]; - return TRUE; - } elseif ( $search == SQ_POST ) { - break; - } - case SQ_GET: - if ( isset($_GET[$name]) ) { + return TRUE; + } elseif ( $search == SQ_POST ) { + break; + } + case SQ_GET: + if ( isset($_GET[$name]) ) { $value = $_GET[$name]; - return TRUE; - } elseif ( $search == SQ_GET ) { - break; - } + return TRUE; + } + /* NO IF HERE. FOR SQ_INORDER CASE, EXIT after GET */ + break; + case SQ_COOKIE: + if ( isset($_COOKIE[$name]) ) { + $value = $_COOKIE[$name]; + return TRUE; + } + break; + case SQ_SERVER: + if ( isset($_SERVER[$name]) ) { + $value = $_SERVER[$name]; + return TRUE; + } + break; } + /* Nothing found, return FALSE */ return FALSE; } - /** - * Search for the var $name in $_SESSION, $_POST, $_GET - * (in that order) and register it as a global var. + * Deletes an existing session, more advanced than the standard PHP + * session_destroy(), it explicitly deletes the cookies and global vars. */ -function sqextractGlobalVar ($name) { - if ( !check_php_version(4,1) ) { - global $_SESSION, $_GET, $_POST; - } - global $$name; - if( isset($_SESSION[$name]) ) { - $$name = $_SESSION[$name]; - } - if( isset($_POST[$name]) ) { - $$name = $_POST[$name]; - } - else if ( isset($_GET[$name]) ) { - $$name = $_GET[$name]; - } -} - function sqsession_destroy() { /* @@ -251,18 +263,13 @@ function sqsession_destroy() { $sessid = session_id(); if (!empty( $sessid )) { - if ( !check_php_version(4,1) ) { - global $HTTP_SESSION_VARS; - $HTTP_SESSION_VARS = array(); - } else { - $_SESSION = array(); - } - @session_destroy; + $_SESSION = array(); + @session_destroy(); } } -/* +/** * Function to verify a session has been started. If it hasn't * start a session up. php.net doesn't tell you that $_SESSION * (even though autoglobal), is not created unless a session is @@ -277,5 +284,5 @@ function sqsession_is_active() { } } - -?> +// vim: et ts=4 +?> \ No newline at end of file