Lots of changes for variable initialization - clean up, really,
[squirrelmail.git] / functions / global.php
index be7cc55c0533077833da1923536100ed25e7cc18..5ee2ca7e27cd9810e0ec43c3c517f3253e1ad84e 100644 (file)
@@ -158,24 +158,82 @@ function sqsession_is_registered ($name) {
 }
 
 
+define('SQ_INORDER',0);
+define('SQ_GET',1);
+define('SQ_POST',2);
+define('SQ_SESSION',3);
+define('SQ_COOKIE',4);
+define('SQ_SERVER',5);
+
 /**
- *  Search for the var $name in $_SESSION, $_POST, $_GET
- *  (in that order) and register it as a global 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 
+ * a var in one place specifically.
+ *
+ * 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!
+ *
+ * Returns FALSE if variable is not found.
+ * Returns TRUE if it is.
  */
-function sqextractGlobalVar ($name) {
+function sqgetGlobalVar($name, &$value, $search = SQ_INORDER) {
     if ( !check_php_version(4,1) ) {
-        global $_SESSION, $_GET, $_POST;
-    }
-    global  $$name;
-    if( isset($_SESSION[$name]) ) {
-        $$name = $_SESSION[$name];
+        global $_SESSION, $_GET, $_POST, $_COOKIE, $_SERVER;
     }
-    if( isset($_POST[$name]) ) {
-        $$name = $_POST[$name];
-    }
-    else if ( isset($_GET[$name]) ) {
-        $$name =  $_GET[$name];
+
+    /* 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]) ) {
+            $value = $_SESSION[$name];
+            return TRUE;
+        } elseif ( $search == SQ_SESSION ) {
+            break;
+        }
+      case SQ_POST:
+        if( isset($_POST[$name]) ) {
+            $value = $_POST[$name];
+            return TRUE;
+        } elseif ( $search == SQ_POST ) {
+          break;
+        }
+      case SQ_GET:
+        if ( isset($_GET[$name]) ) {
+            $value = $_GET[$name];
+            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;
     }
+    return FALSE;
 }
 
 function sqsession_destroy() {
@@ -205,7 +263,7 @@ function sqsession_destroy() {
         } else {
             $_SESSION = array();
         }
-        @session_destroy;
+        @session_destroy();
     }
 
 }