Rename mask parameter into source
[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']['list'] as $field => $info)
17     if (array_key_exists('format', $info))
18       $row[$field] = sprintf($info['format'], $row[$field]);
19
20   return $row;
21 }
22
23 function details($mask)
24 {
25   if (empty($_POST['id']))
26     return array('error' => 'Missing ID');
27
28   $sql = sprintf('SELECT id,%s FROM %s WHERE id = %d',
29                  implode(',', array_keys($mask['details']['list'])),
30                  $mask['table'], $_POST['id']);
31
32   $sth = pg_query($sql);
33
34   if (!$sth)
35     return array('error' => pg_last_error(),
36                  'sql' => $sql);
37
38   $row = pg_fetch_assoc($sth);
39
40   foreach ($mask['details']['list'] as $field => $info)
41     if (array_key_exists('format', $info))
42       $row[$field] = sprintf($info['format'], $row[$field]);
43
44   return $row;
45 }
46
47 function format_ajax($data)
48 {
49   header('Content-type: application/json; charset=UTF-8');
50   echo json_encode($data);
51   exit;
52 }
53
54 if (empty($_POST['func']))
55   exit;
56
57 if (empty($_POST['source']))
58   exit;
59
60 connect_db();
61 if (load_mask($_POST['source'], '../') === false) exit;
62
63 $data = array('error' => 'Unknown function');
64
65 if ($_POST['func'] == 'fetch') {
66   $data = fetch($mask);
67 } elseif ($_POST['func'] == 'details') {
68   $data = details($mask);
69 } elseif ($_POST['func'] == 'save') {
70   error_log('save');
71 }
72
73 format_ajax($data);
74
75 ?>