3 require_once('../init.php');
5 function build_simple_query($details)
9 if ($_POST['value'] == 0)
10 $sql = sprintf("DELETE FROM %s WHERE %s = %d AND %s = %d", $details['table'],
11 $details['basecol'], $details['baseval'],
12 $details['refcol'], $_POST['reference']);
14 $sql = sprintf("INSERT INTO %s (%s,%s,sys_user,sys_edit) VALUES (%d,%d,%s,now())",
16 $details['basecol'], $details['refcol'],
17 $details['baseval'], $_POST['reference'],
18 $db->quote($_SESSION['sys']['login']));
23 function build_query($details,$mask)
28 $keys = array_keys($mask['list']);
29 for ($i=0; $i<count($keys); $i++)
30 if (array_key_exists('filter_'.$i, $_POST)) {
31 $filter = explode('|', $_POST['filter_'.$i]);
32 if (strlen($where)) $where .= ' AND ';
33 if ($filter[0] === 'LIKE') $filter[1] = '%'.$filter[1].'%';
34 elseif ($filter[0] === 'EQ') $filter[0] = '=';
35 $where .= sprintf("%s %s '%s'",
36 empty($mask['list'][$keys[$i]]['sql'])?$keys[$i]:$mask['list'][$keys[$i]]['sql'],
37 $filter[0], $filter[1]);
40 if ($_POST['value'] == 0)
41 $sql = sprintf("DELETE FROM %s WHERE %s = %d AND %s IN (SELECT %s FROM %s%s%s)",
43 $details['basecol'], $details['baseval'],
44 $details['refcol'], $details['refid'],
46 array_key_exists('join', $mask) ? ' JOIN ' . join(' JOIN ', $mask['join']) : '',
47 strlen($where) ? ' WHERE ' . $where : '');
49 $sql = sprintf("INSERT INTO %s (%s,%s,sys_user,sys_edit) SELECT %s,%s,%s,now() FROM %s%s " .
50 "LEFT JOIN %s ON %s.%s = 1 AND %s.%s = %s.id WHERE %s.id IS NULL%s",
52 $details['basecol'], $details['refcol'],
53 $details['baseval'], $details['refid'],
54 $db->quote($_SESSION['sys']['login']),
56 array_key_exists('join', $mask) ? ' JOIN ' . join(' JOIN ', $mask['join']) : '',
58 $details['table'], $details['basecol'],
59 $details['table'], $details['refcol'],
62 strlen($where) ? ' AND ' . $where : '');
67 if (empty($_POST['table']))
71 if (load_mask(substr($_POST['table'],5)) === false) exit;
73 $fields = array_keys($mask['list']);
74 $field = $fields[$_POST['column']];
76 if (empty($field)) exit;
78 if (!is_array($mask['list'][$field]['update'])) return;
80 if (isset($_POST['reference']))
81 $sql = build_simple_query($mask['list'][$field]['update']);
83 $sql = build_query($mask['list'][$field]['update'],$mask);
85 $sth = $db->query($sql);
88 error_log($sql . ': ' . db_error());