function save($mask)
{
+ if (array_key_exists('save', $mask))
+ return $mask['save']($mask);
+
if (empty($_POST['id']))
return array('error' => 'Missing ID');
"sys_edit = now()");
foreach ($mask['edit'] as $field => $info) {
- if ($info['required'] === true && empty($_POST[$field]))
+ if ($info['required'] === true && !strlen($_POST[$field]))
return array('error' => sprintf('Pflichtfeld %s nicht ausgefüllt', $info['name']),
'errormsg' => 'Pflichtfelder nicht ausgefüllt');
$update[] = sprintf("%s=%s", $field, format_decimal($_POST[$field]));
} elseif ($info['type'] == 'passwd') {
if (!empty($_POST[$field]))
- $update[] = sprintf("%s='%s'", $field, pg_escape_string(passwd($_SESSION['sys']['login'],$_POST[$field])));
+ $update[] = sprintf("%s='%s'", $field,
+ pg_escape_string(passwd(empty($_POST['login'])?$_SESSION['sys']['login']:$_POST['login'],
+ $_POST[$field])));
} else {
if (empty($_POST[$field]) && $info['null'] === true)
$update[] = sprintf("%s=NULL", $field);
function insert($mask)
{
+ if (array_key_exists('insert', $mask))
+ return $mask['insert']($mask);
+
$fields = array('sys_user','sys_edit');
$values = array("'".pg_escape_string($_SESSION['sys']['login'])."'", 'now()');
foreach ($mask['edit'] as $field => $info) {
- if ($info['required'] === true && empty($_POST[$field]))
+ if ($info['required'] === true && !strlen($_POST[$field]))
return array('error' => sprintf('Pflichtfeld %s nicht ausgefüllt', $info['name']),
'errormsg' => 'Pflichtfelder nicht ausgefüllt');
} elseif ($info['type'] == 'passwd') {
if (!empty($_POST[$field])) {
$fields[] = $field;
- $values[] = sprintf("'%s'", pg_escape_string(passwd($_SESSION['sys']['login'],$_POST[$field])));
+ $values[] = sprintf("'%s'", pg_escape_string(passwd(empty($_POST['login'])?$_SESSION['sys']['login']:$_POST['login'],
+ $_POST[$field])));
}
} else {
$fields[] = $field;
return array('status' => true);
}
-function delete_or_copy($mask)
+function delete_or_copy_row($table,$id)
{
- if (empty($_POST['id']))
- return array('error' => 'Missing ID');
-
- if (!empty($mask['edit_table']))
- return array('error' => 'Cannot handle deletion for secondary table');
-
if (DELETE_COPY === true) {
$sql = sprintf("INSERT INTO %s_deleted SELECT * FROM %s WHERE id = %d",
- $mask['table'], $mask['table'], $_POST['id']);
+ $table, $table, $id);
$sth = pg_query($sql);
}
$sql = sprintf("UPDATE %s_deleted SET sys_user='%s',sys_edit=now() WHERE id = %d",
- $mask['table'], $_SESSION['sys']['login'], $_POST['id']);
+ $table, $_SESSION['sys']['login'], $id);
$sth = pg_query($sql);
}
}
- $sql = sprintf("DELETE FROM %s WHERE id = %d", $mask['table'], $_POST['id']);
+ $sql = sprintf("DELETE FROM %s WHERE id = %d", $table, $_POST['id']);
$sth = pg_query($sql);
return array('status' => true);
}
+function delete_or_copy($mask)
+{
+ if (empty($_POST['id']))
+ return array('error' => 'Missing ID');
+
+ if (array_key_exists('delete', $mask))
+ return $mask['delete']($mask);
+
+ if (!empty($mask['edit_table']))
+ return array('error' => 'Cannot handle deletion for secondary table');
+
+ return delete_or_copy_row($mask['table'],$_POST['id']);
+}
+
function set_variable($name,$mask)
{
if (!array_key_exists('variables',$mask))
while (preg_match('/\{([^\}]*)\}/', $sql, $matches))
$sql = str_replace('{'.$matches[1].'}', $_POST[$matches[1]], $sql);
- return array('info' => query_db($sql));
+ return array('info' => query_db($sql),
+ 'parameter' => $_POST);
}
if (empty($_POST['func']))