return $sql;
}
-function build_query($details,$data)
+function build_query($details,$mask)
{
$where = '';
- for ($i=0; $i<count($data); $i++)
+ $keys = array_keys($mask['list']);
+ for ($i=0; $i<count($keys); $i++)
if (array_key_exists('filter_'.$i, $_POST)) {
- $filter = explode('%', $_POST['filter_'.$i]);
+ $filter = explode('|', $_POST['filter_'.$i]);
if (strlen($where)) $where .= ' AND ';
if ($filter[0] === 'LIKE') $filter[1] = '%'.$filter[1].'%';
elseif ($filter[0] === 'EQ') $filter[0] = '=';
- $where .= sprintf("%s %s '%s'", $data[$i]['name'], $filter[0], $filter[1]);
+ $where .= sprintf("%s %s '%s'",
+ empty($mask['list'][$keys[$i]]['sql'])?$keys[$i]:$mask['list'][$keys[$i]]['sql'],
+ $filter[0], $filter[1]);
}
if ($_POST['value'] == 0)
- $sql = sprintf("DELETE FROM %s WHERE %s = %d AND %s IN (SELECT %s FROM %s%s)",
+ $sql = sprintf("DELETE FROM %s WHERE %s = %d AND %s IN (SELECT %s FROM %s%s%s)",
$details['table'],
$details['basecol'], $details['baseval'],
$details['refcol'], $details['refid'],
$details['reftable'],
- strlen($where) ? ' ' . $where : '');
+ array_key_exists('join', $mask) ? ' JOIN ' . join(' JOIN ', $mask['join']) : '',
+ strlen($where) ? ' WHERE ' . $where : '');
else
- $sql = sprintf("INSERT INTO %s (%s,%s,sys_user,sys_edit) SELECT %s,%s,'%s',now() FROM %s%s",
+ $sql = sprintf("INSERT INTO %s (%s,%s,sys_user,sys_edit) SELECT %s,%s,'%s',now() FROM %s%s%s",
$details['table'],
$details['basecol'], $details['refcol'],
$details['baseval'], $details['refid'],
pg_escape_string($_SESSION['sys']['login']),
$details['reftable'],
- strlen($where) ? ' ' . $where : '');
+ array_key_exists('join', $mask) ? ' JOIN ' . join(' JOIN ', $mask['join']) : '',
+ strlen($where) ? ' WHERE ' . $where : '');
return $sql;
}
if (isset($_POST['reference']))
$sql = build_simple_query($mask['list'][$field]['update']);
else
- $sql = build_query($mask['list'][$field]['update'],$mask['list']);
+ $sql = build_query($mask['list'][$field]['update'],$mask);
$sth = pg_query($sql);