Add framework for setting variables from frontend stored in the session
authorJoey Schulze <joey@infodrom.org>
Sat, 27 Feb 2010 16:07:22 +0000 (17:07 +0100)
committerJoey Schulze <joey@infodrom.org>
Sat, 27 Feb 2010 16:07:22 +0000 (17:07 +0100)
ajax/ajax.php

index 3431c03..8e92c7b 100644 (file)
@@ -166,6 +166,22 @@ function delete_or_copy($mask)
   return array('status' => true);
 }
 
+function set_variable($name,$mask)
+{
+  if (!array_key_exists('variables',$mask))
+    return array('error' => 'Unknown variable ' . htmlspecialchars($_POST['name']));
+
+  if (!array_key_exists($_POST['name'],$mask['variables']))
+    return array('error' => 'Unknown variable ' . htmlspecialchars($_POST['name']));
+
+  $_SESSION[$name . '.' . $_POST['name']] = $_POST['value'];
+
+  if (array_key_exists('postcall',$mask['variables'][$_POST['name']]))
+    $mask['variables'][$_POST['name']]['postcall']();
+
+  return array('status' => true);
+}
+
 function format_ajax($data)
 {
   header('Content-type: application/json; charset=UTF-8');
@@ -194,6 +210,8 @@ if ($_POST['func'] == 'fetch') {
   $data = insert($mask);
 } elseif ($_POST['func'] == 'delete') {
   $data = delete_or_copy($mask);
+} elseif ($_POST['func'] == 'setvar') {
+  $data = set_variable($_POST['source'],$mask);
 }
 
 format_ajax($data);