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