$details['basecol'], $details['baseval'],
$details['refcol'], $_POST['reference']);
else
- $sql = sprintf("INSERT INTO %s (%s,%s,sys_user,sys_edit) VALUES (%d,%d,'%s',now())", $details['table'],
+ $sql = sprintf("INSERT INTO %s (%s,%s,sys_user,sys_edit) VALUES (%d,%d,'%s',now())",
+ $details['table'],
$details['basecol'], $details['refcol'],
$details['baseval'], $_POST['reference'],
pg_escape_string($_SESSION['sys']['login']));
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%s",
+ $sql = sprintf("INSERT INTO %s (%s,%s,sys_user,sys_edit) SELECT %s,%s,'%s',now() FROM %s%s " .
+ "LEFT JOIN %s ON %s.%s = 1 AND %s.%s = %s.id WHERE %s.id IS NULL%s",
$details['table'],
$details['basecol'], $details['refcol'],
$details['baseval'], $details['refid'],
pg_escape_string($_SESSION['sys']['login']),
$details['reftable'],
array_key_exists('join', $mask) ? ' JOIN ' . join(' JOIN ', $mask['join']) : '',
- strlen($where) ? ' WHERE ' . $where : '');
+ $details['table'],
+ $details['table'], $details['basecol'],
+ $details['table'], $details['refcol'],
+ $details['reftable'],
+ $details['table'],
+ strlen($where) ? ' AND ' . $where : '');
return $sql;
}