ソースを参照

Functions - persistent_form_values: Update to support greater flexibility.

fusionate 4 年 前
コミット
f99651dd72
1 ファイル変更20 行追加10 行削除
  1. 20 10
      resources/functions.php

+ 20 - 10
resources/functions.php

@@ -2153,19 +2153,29 @@ function number_pad($number,$n) {
 		function persistent_form_values($action, $array = null) {
 			switch ($action) {
 				case 'store':
+					// $array is expected to be an array of key / value pairs to store in the session
 					if (is_array($array) && @sizeof($array) != 0) {
-						$_SESSION[$_SERVER['PHP_SELF']] = $array;
+						$_SESSION['persistent'][$_SERVER['PHP_SELF']] = $array;
 					}
 					break;
 				case 'exists':
-					return is_array($_SESSION[$_SERVER['PHP_SELF']]) && @sizeof($_SESSION[$_SERVER['PHP_SELF']]) != 0 ? true : false;
+					return is_array($_SESSION['persistent'][$_SERVER['PHP_SELF']]) && @sizeof($_SESSION['persistent'][$_SERVER['PHP_SELF']]) != 0 ? true : false;
 					break;
 				case 'load':
-					if (is_array($_SESSION[$_SERVER['PHP_SELF']]) && @sizeof($_SESSION[$_SERVER['PHP_SELF']]) != 0) {
-						foreach ($_SESSION[$_SERVER['PHP_SELF']] as $key => $value) {
+					// $array is expected to be the name of the array to create containing the key / value pairs
+					if ($array && !is_array($array)) {
+						global $$array;
+					}
+					if (is_array($_SESSION['persistent'][$_SERVER['PHP_SELF']]) && @sizeof($_SESSION['persistent'][$_SERVER['PHP_SELF']]) != 0) {
+						foreach ($_SESSION['persistent'][$_SERVER['PHP_SELF']] as $key => $value) {
 							if ($key != 'XID' && $key != 'ACT' && $key != 'RET') {
-								global $$key;
-								$$key = $value;
+								if ($array && !is_array($array)) {
+									$$array[$key] = $value;
+								}
+								else {
+									global $$key;
+									$$key = $value;
+								}
 							}
 						}
 						global $unsaved;
@@ -2173,15 +2183,15 @@ function number_pad($number,$n) {
 					}
 					break;
 				case 'view':
-					if (is_array($_SESSION[$_SERVER['PHP_SELF']]) && @sizeof($_SESSION[$_SERVER['PHP_SELF']]) != 0) {
-						view_array($_SESSION[$_SERVER['PHP_SELF']], false);
+					if (is_array($_SESSION['persistent'][$_SERVER['PHP_SELF']]) && @sizeof($_SESSION['persistent'][$_SERVER['PHP_SELF']]) != 0) {
+						view_array($_SESSION['persistent'][$_SERVER['PHP_SELF']], false);
 					}
 					break;
 				case 'clear':
-					unset($_SESSION[$_SERVER['PHP_SELF']]);
+					unset($_SESSION['persistent'][$_SERVER['PHP_SELF']]);
 					break;
 			}
 		}
 	}
 
-?>
+?>