Revert "Fix encoding"
[infodrom/hallinta] / ajax / ricoUpdateBoolean.php
1 <?php
2
3 require_once('../init.php');
4
5 function build_simple_query($mask, $refcol, $column)
6 {
7   $sql = sprintf("UPDATE %s SET %s = %d WHERE %s = %d",
8                  $mask['table'],
9                  $column,
10                  $_POST['value'],
11                  $refcol,
12                  $_POST['reference']);
13
14   return $sql;
15 }
16
17 function build_query($mask, $refcol, $column)
18 {
19   global $db;
20
21   $where = '';
22   $keys = array_keys($mask['list']);
23   for ($i=0; $i<count($keys); $i++)
24     if (array_key_exists('filter_'.$i, $_POST)) {
25       $filter = explode('|', $_POST['filter_'.$i]);
26       if (strlen($where)) $where .= ' AND ';
27       if ($filter[0] === 'LIKE') $filter[1] = '%'.$filter[1].'%';
28       elseif ($filter[0] === 'EQ') $filter[0] = '=';
29       $where .= sprintf("%s %s '%s'",
30                         empty($mask['list'][$keys[$i]]['sql'])?$keys[$i]:$mask['list'][$keys[$i]]['sql'],
31                         $filter[0], $filter[1]);
32     }
33
34   $sql = sprintf("UPDATE %s SET %s = %d %s",
35                  $mask['table'],
36                  $column,
37                  $_POST['value'],
38                  empty($where) ? '' : 'WHERE ' . $where);
39
40   return $sql;
41 }
42
43 function refcol($mask, $column) {
44   preg_match('/Rico.TableColumn.checkboxDB\(\s*(\d+)\s*,/', $mask['list'][$column]['control'], $matches);
45
46   $fields = array_keys($mask['list']);
47   $colname = $fields[$matches[1]];
48
49   if (array_key_exists('sql', $mask['list'][$colname]))
50     $colname = $mask['list'][$colname]['sql'];
51
52   return $colname;
53 }
54
55 if (empty($_POST['table']))
56   exit;
57
58 db_connect();
59 if (load_mask(substr($_POST['table'],5)) === false) exit;
60
61 $fields = array_keys($mask['list']);
62 $column = $fields[$_POST['column']];
63 $refcol = refcol($mask, $column);
64
65 if (empty($column)) exit;
66
67 if (isset($_POST['reference']))
68   $sql = build_simple_query($mask, $refcol, $column);
69 else 
70   $sql = build_query($mask, $refcol, $column);
71
72 $sth = $db->query($sql);
73
74 if ($sth === false)
75   error_log($sql . ': ' . db_error());
76
77 ?>