Support boolean fields alias checkboxes
[misc/kostenrechnung] / ajax / ajax.php
1 <?php
2
3 require_once('../init.php');
4
5 function fetch($mask)
6 {
7   $sql = sprintf('SELECT id,%s FROM %s WHERE id = %d',
8                  implode(',', array_keys($mask['edit'])),
9                  $mask['table'], $_POST['id']);
10
11   $sth = pg_query($sql);
12   if ($sth === false) return false;
13
14   $row = pg_fetch_assoc($sth);
15
16   foreach ($mask['edit'] as $field => $info)
17     if ($info['type'] == 'boolean')
18       $row[$field] = $row[$field]?true:false;
19     elseif (array_key_exists('format', $info))
20       $row[$field] = sprintf($info['format'], $row[$field]);
21
22   return $row;
23 }
24
25 function details($mask)
26 {
27   if (empty($_POST['id']))
28     return array('error' => 'Missing ID');
29
30   $sql = sprintf('SELECT id,%s FROM %s WHERE id = %d',
31                  implode(',', array_keys($mask['details']['list'])),
32                  $mask['table'], $_POST['id']);
33
34   $sth = pg_query($sql);
35
36   if (!$sth)
37     return array('error' => pg_last_error(),
38                  'sql' => $sql);
39
40   $row = pg_fetch_assoc($sth);
41
42   foreach ($mask['details']['list'] as $field => $info)
43     if (array_key_exists('format', $info))
44       $row[$field] = sprintf($info['format'], $row[$field]);
45
46   return $row;
47 }
48
49 function format_ajax($data)
50 {
51   header('Content-type: application/json; charset=UTF-8');
52   echo json_encode($data);
53   exit;
54 }
55
56 if (empty($_POST['func']))
57   exit;
58
59 if (empty($_POST['source']))
60   exit;
61
62 connect_db();
63 if (load_mask($_POST['source'], '../') === false) exit;
64
65 $data = array('error' => 'Unknown function');
66
67 if ($_POST['func'] == 'fetch') {
68   $data = fetch($mask);
69 } elseif ($_POST['func'] == 'details') {
70   $data = details($mask);
71 } elseif ($_POST['func'] == 'save') {
72   error_log('save');
73 }
74
75 format_ajax($data);
76
77 ?>