Webgui: ongoing development
This commit is contained in:
+110
-119
@@ -71,7 +71,9 @@ if ($g_scriptname != 'login.php') {
|
||||
try {
|
||||
$pdo = new PDO("mysql:host=$g_db_host;dbname=$g_db_schema;charset=utf8mb4", $g_db_username, $g_db_password);
|
||||
} catch (PDOException $e) {
|
||||
echo '<pre>';
|
||||
echo "<!DOCTYPE html>\n";
|
||||
echo '<html>';
|
||||
echo '<body><pre>';
|
||||
switch ($e->getCode()) {
|
||||
case 2002:
|
||||
echo "Unable to connect to database, perhaps host info is wrong.\n";
|
||||
@@ -87,7 +89,8 @@ try {
|
||||
default:
|
||||
print_r($e);
|
||||
}
|
||||
echo '</pre>';
|
||||
echo '</pre></body>';
|
||||
echo '</html>';
|
||||
exit(1);
|
||||
}
|
||||
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
||||
@@ -100,7 +103,7 @@ try {
|
||||
echo '<pre>';
|
||||
echo 'Settings table not found! Perhaps database is not initialized';
|
||||
echo '</pre>';
|
||||
exit(1)
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
$g_db_scheme_version = $sth->fetchColumn();
|
||||
@@ -378,6 +381,49 @@ function db_exec_update($table, $params, $pk) {
|
||||
return true;
|
||||
}
|
||||
|
||||
function db_exec_delete($table, $condition, $params) {
|
||||
// WIP untested!
|
||||
// condition contains the where part of the sql statement
|
||||
// params are values for placeholders in condition
|
||||
// returns the number of deleted records
|
||||
global $pdo;
|
||||
global $g_error;
|
||||
// convert params to array if single value is given
|
||||
if (!is_array($params)) {
|
||||
$params = [$params];
|
||||
}
|
||||
$sql = "DELETE FROM $table";
|
||||
if (!empty($condition)) {
|
||||
$sql .= ' WHERE ' . $condition;
|
||||
}
|
||||
$sth = $pdo->prepare($sql);
|
||||
try {
|
||||
$sth->execute($params);
|
||||
} catch (PDOexception $e) {
|
||||
$g_error->Add('SQL-Error: '. $e->getMessage());
|
||||
$g_error->Add($sql);
|
||||
$g_error->Add(print_r($params, true));
|
||||
return -1;
|
||||
}
|
||||
return $sth->rowCount();
|
||||
}
|
||||
|
||||
function db_clear_filter($sno) {
|
||||
global $user;
|
||||
global $pdo;
|
||||
$sql = "DELETE FROM settings WHERE userid=? AND sno=?";
|
||||
$sth = $pdo->prepare($sql);
|
||||
try {
|
||||
$sth->execute([$user->id, $sno]);
|
||||
} catch (PDOexception $e) {
|
||||
$g_warning->Add('SQL-Error: '. $e->getMessage());
|
||||
$g_warning->Add($sql);
|
||||
$g_warning->Add('Setting: ', $sno);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function db_save_filter($flt, $sno) {
|
||||
global $user;
|
||||
global $pdo;
|
||||
@@ -400,8 +446,10 @@ function get_enum($enum) {
|
||||
// translate and beautify enums
|
||||
$lookup = array(
|
||||
'NULL' => _('n/a'),
|
||||
'active' => _('Active'),
|
||||
'bad' => _('Bad'),
|
||||
'box' => _('Box'),
|
||||
'cable' => _('Cable'),
|
||||
'cat' => _('Catamaran'),
|
||||
'completed' => _('Completed'),
|
||||
'closed' => _('Closed'),
|
||||
@@ -414,6 +462,7 @@ function get_enum($enum) {
|
||||
'estimated' => _('Estimated'),
|
||||
'finished' => _('Finished'),
|
||||
'fixed' => _('Fixed'),
|
||||
'fuse' => _('Fuse'),
|
||||
'generic' => _('Generic'),
|
||||
'good' => _('Good'),
|
||||
'high' => _('High'),
|
||||
@@ -428,12 +477,14 @@ function get_enum($enum) {
|
||||
'normal' => _('Normal'),
|
||||
'ongoing' => _('Ongoing'),
|
||||
'open' => _('Open'),
|
||||
'ordered' => _('Ordered'),
|
||||
'paused' => _('Paused'),
|
||||
'pending' => _('Pending'),
|
||||
'picture' => _('Picture'),
|
||||
'planned' => _('Planned'),
|
||||
'precise' => _('Precise'),
|
||||
'project' => _('Project'),
|
||||
'removed' => _('Removed'),
|
||||
'repairable' => _('Repairable'),
|
||||
'rough' => _('Rough'),
|
||||
'storage' => _('Storage'),
|
||||
@@ -629,7 +680,8 @@ function db_get_opt_storage($vid) {
|
||||
global $pdo;
|
||||
global $g_error;
|
||||
$list = array();
|
||||
$sql = "SELECT sid, sname FROM storage WHERE vid=? ORDER BY sname";
|
||||
// exclude storage type "tank" from list
|
||||
$sql = "SELECT sid, sname FROM storage WHERE vid=? AND stype<>1 ORDER BY sname";
|
||||
$sth = $pdo->prepare($sql);
|
||||
try {
|
||||
$sth->execute([$vid]);
|
||||
@@ -713,6 +765,21 @@ function db_get_opt_supp($default=NULL) {
|
||||
return $list;
|
||||
}
|
||||
|
||||
function db_get_opt_user($userid, $default=NULL) {
|
||||
global $pdo;
|
||||
if (isset($default)) {
|
||||
$list = $default;
|
||||
} else {
|
||||
$list = array();
|
||||
}
|
||||
$sql = "SELECT userid, displayname FROM user WHERE userid>0 ORDER BY displayname";
|
||||
$sth = $pdo->query($sql);
|
||||
foreach ($sth->fetchAll(PDO::FETCH_NUM) as $row) {
|
||||
$list[$row[0]] = $row[1];
|
||||
}
|
||||
return $list;
|
||||
}
|
||||
|
||||
function db_get_opt_proj($vid, $default=NULL) {
|
||||
global $pdo;
|
||||
global $g_error;
|
||||
@@ -802,10 +869,22 @@ function form_get_action() {
|
||||
return strtolower($submit);
|
||||
}
|
||||
|
||||
function form_create_select($fieldname, $label, $optlist, $selval=NULL) {
|
||||
function form_create_input($fieldname, $label, $value) {
|
||||
// TODO WIP
|
||||
echo '<div class="mb-3">', "\n";
|
||||
echo "</div>\n";
|
||||
}
|
||||
|
||||
function form_create_text($fieldname, $label, $value) {
|
||||
// TODO WIP
|
||||
echo '<div class="mb-3">', "\n";
|
||||
echo "</div>\n";
|
||||
}
|
||||
|
||||
function form_create_select($fieldname, $label, $optlist, $selval=NULL, $multiple=FALSE) {
|
||||
echo '<div class="mb-3">', "\n";
|
||||
echo '<label for="', $fieldname, '">', $label, "</label>\n";
|
||||
echo '<select class="form-select" name="', $fieldname,'" id="', $fieldname, '">', "\n";
|
||||
echo '<select class="form-select" name="', $fieldname,'" id="', $fieldname, $multiple ? ' multiple' : '', '">', "\n";
|
||||
foreach ($optlist as $k => $v) {
|
||||
echo '<option value="', $k, '"';
|
||||
if (isset($selval) and ($k == $selval)) {
|
||||
@@ -817,6 +896,13 @@ function form_create_select($fieldname, $label, $optlist, $selval=NULL) {
|
||||
echo "</div>\n";
|
||||
}
|
||||
|
||||
function form_create_checks($fieldname, $label, $optlist, $selected) {
|
||||
echo '<div class="mb-3">', "\n";
|
||||
echo '<label>', $label, "</label>\n";
|
||||
print_r($optlist);
|
||||
echo "</div>\n";
|
||||
}
|
||||
|
||||
function form_action_buttons($script, $id) {
|
||||
echo "<td>";
|
||||
echo '<a title="', _('View'), '" href="', $script, '?f=view&id=', $id, '"><i class="bi-eye"></i></a>', "\n";
|
||||
@@ -885,9 +971,16 @@ function form_tag_assignment($script, $id, $tags) {
|
||||
echo "</tr>";
|
||||
}
|
||||
|
||||
function filter_create_select($fieldname, $label, $optlist, $selval=NULL) {
|
||||
function filter_create_select($fieldname, $label, $optlist, $selval=NULL, $multiple=FALSE) {
|
||||
// - Wenn multiple gesetzt ist, muß selval ein array sein
|
||||
// ansonsten ein einfacher String
|
||||
/* if ($multiple) {
|
||||
if (!is_array($selval)) {
|
||||
}
|
||||
} */
|
||||
echo '<div class="d-flex flex-nowrap gap-2">', "\n";
|
||||
echo '<label for="', $fieldname,'">', $label,'</label>', "\n";
|
||||
echo '<select id="', $fieldname, '" name="', $fieldname, '">', "\n";
|
||||
echo '<select id="', $fieldname, '" name="', $fieldname, '"', $multiple ? ' multiple' : '', ">\n";
|
||||
foreach ($optlist as $k => $v) {
|
||||
echo '<option value="', $k, '"';
|
||||
if ($k == $selval) {
|
||||
@@ -896,109 +989,7 @@ function filter_create_select($fieldname, $label, $optlist, $selval=NULL) {
|
||||
echo '>', $v, '</option>', "\n";
|
||||
}
|
||||
echo "</select>\n";
|
||||
}
|
||||
|
||||
// ========== GPC FUNCTIONS ===================================================
|
||||
|
||||
function gpc_get_string(&$GPC, $varname, $maxlen = NULL, $default = NULL) {
|
||||
// TODO Parameter nullval: single value or array of values which considered as null
|
||||
// Default value for nullval is "-1"
|
||||
if (!isset($GPC[$varname]) or (strlen(trim($GPC[$varname])) == 0)) {
|
||||
return $default;
|
||||
}
|
||||
$s = trim($GPC[$varname]);
|
||||
if (isset($maxlen)) {
|
||||
return substr($s, 0, $maxlen);
|
||||
}
|
||||
return $s;
|
||||
}
|
||||
|
||||
function gpc_get_int(&$GPC, $varname, $default = NULL) {
|
||||
if (!isset($GPC[$varname])) {
|
||||
return $default;
|
||||
}
|
||||
return (int)$GPC[$varname];
|
||||
}
|
||||
|
||||
function gpc_get_float(&$GPC, $varname, $default = NULL) {
|
||||
global $g_lconv;
|
||||
if (!isset($GPC[$varname]) or (strlen(trim($GPC[$varname])) == 0)) {
|
||||
return $default;
|
||||
}
|
||||
$var = str_replace($g_lconv['thousands_sep'], '', $GPC[$varname]);
|
||||
if ($g_lconv['decimal_point'] != '.') {
|
||||
$var = str_replace($g_lconv['decimal_point'], '.', $var);
|
||||
}
|
||||
return (double)$var;
|
||||
}
|
||||
|
||||
function gpc_get_currency(&$GPC, $varname, $default = NULL) {
|
||||
global $g_lconv;
|
||||
if (!isset($GPC[$varname]) or (strlen(trim($GPC[$varname])) == 0)) {
|
||||
return $default;
|
||||
}
|
||||
$var = str_replace($g_lconv['thousands_sep'], '', $GPC[$varname]);
|
||||
if ($g_lconv['decimal_point'] != '.') {
|
||||
$var = str_replace($g_lconv['decimal_point'], '.', $var);
|
||||
}
|
||||
return (double)$var;
|
||||
}
|
||||
|
||||
function gpc_get_bool(&$GPC, $varname, $default = FALSE) {
|
||||
if (!isset($GPC[$varname])) {
|
||||
return $default;
|
||||
}
|
||||
$gpcvar = trim($GPC[$varname]);
|
||||
if (strcasecmp('off', $gpcvar) == 0 ||
|
||||
strcasecmp('no', $gpcvar) == 0 ||
|
||||
strcasecmp('false', $gpcvar) == 0 ||
|
||||
strcasecmp('no', $gpcvar) == 0 ||
|
||||
strcasecmp('0', $gpcvar) == 0 ||
|
||||
strcasecmp('nein', $gpcvar) == 0)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
function gpc_get_date(&$GPC, $varname, $default = NULL) {
|
||||
// TODO improve
|
||||
if (!isset($GPC[$varname]) || $GPC[$varname] == '') {
|
||||
return $default;
|
||||
}
|
||||
return $GPC[$varname];
|
||||
}
|
||||
|
||||
function gpc_get_datetime(&$GPC, $varname, $default = NULL) {
|
||||
// TODO improve
|
||||
if (!isset($GPC[$varname]) || $GPC[$varname] == '') {
|
||||
return $default;
|
||||
}
|
||||
return $GPC[$varname];
|
||||
}
|
||||
|
||||
function gpc_get_color(&$GPC, $varname, $default = NULL) {
|
||||
if (!isset($GPC[$varname]) or (strlen(trim($GPC[$varname])) == 0)) {
|
||||
return $default;
|
||||
}
|
||||
$color = $GPC[$varname];
|
||||
if ((strlen($color) == 7) and (substr($color, 0, 1) == '#')) {
|
||||
$color = substr($color, 1);
|
||||
}
|
||||
if ((strlen($color) != 6) or (! ctype_xdigit($color))) {
|
||||
return $default;
|
||||
}
|
||||
return strtoupper($color);
|
||||
}
|
||||
|
||||
function gpc_get_enum(&$GPC, $varname, $values, $default = NULL) {
|
||||
if (!isset($GPC[$varname]) or (strlen(trim($GPC[$varname])) == 0)) {
|
||||
return $default;
|
||||
}
|
||||
if (! in_array($GPC[$varname], $values)) {
|
||||
return $default;
|
||||
}
|
||||
return $GPC[$varname];
|
||||
echo "</div>";
|
||||
}
|
||||
|
||||
// ========== FORMAT FUNCTIONS ================================================
|
||||
@@ -1162,11 +1153,11 @@ function get_pagination($script, $param, $page, $lastpage, $small=false) {
|
||||
|
||||
if ($page > 1) {
|
||||
// Go to first page or previous page
|
||||
$out .= '<li class="page-item"><a class="page-link" href="'. $script. $psep. 'p=1">First</a></li>'. "\n";
|
||||
$out .= '<li class="page-item"><a class="page-link" href="'. $script. $psep. 'p='. ($page - 1). '">Previous</a></li>'. "\n";
|
||||
$out .= '<li class="page-item"><a class="page-link" href="'. $script. $psep. 'p=1">'. _('First'). '</a></li>'. "\n";
|
||||
$out .= '<li class="page-item"><a class="page-link" href="'. $script. $psep. 'p='. ($page - 1). '">'. _('Previous'). '</a></li>'. "\n";
|
||||
} else {
|
||||
$out .= '<li class="page-item disabled"><a class="page-link href="#">First</a></li>'. "\n";
|
||||
$out .= '<li class="page-item disabled"><a class="page-link href="#">Previous</a></li>'. "\n";
|
||||
$out .= '<li class="page-item disabled"><a class="page-link href="#">'. _('First'). '</a></li>'. "\n";
|
||||
$out .= '<li class="page-item disabled"><a class="page-link href="#">'. _('Previous'). '</a></li>'. "\n";
|
||||
}
|
||||
|
||||
if ($lastpage < 10) {
|
||||
@@ -1181,11 +1172,11 @@ function get_pagination($script, $param, $page, $lastpage, $small=false) {
|
||||
|
||||
if ($page < $lastpage) {
|
||||
// go to last page or next page
|
||||
$out .= '<li class="page-item"><a class="page-link" href="'. $script. $psep. 'p='. ($page + 1). '">Next</a></li>'. "\n";
|
||||
$out .= '<li class="page-item"><a class="page-link" href="'. $script. $psep. 'p='. $lastpage. '">Last</a></li>'. "\n";
|
||||
$out .= '<li class="page-item"><a class="page-link" href="'. $script. $psep. 'p='. ($page + 1). '">'. _('Next'). '</a></li>'. "\n";
|
||||
$out .= '<li class="page-item"><a class="page-link" href="'. $script. $psep. 'p='. $lastpage. '">'. _('Last'). '</a></li>'. "\n";
|
||||
} else {
|
||||
$out .= '<li class="page-item disabled"><a class="page-link href="#">Next</a></li>'. "\n";
|
||||
$out .= '<li class="page-item disabled"><a class="page-link href="#">Last</a></li>'. "\n";
|
||||
$out .= '<li class="page-item disabled"><a class="page-link href="#">'. _('Next'). '</a></li>'. "\n";
|
||||
$out .= '<li class="page-item disabled"><a class="page-link href="#">'. _('Last'). '</a></li>'. "\n";
|
||||
}
|
||||
|
||||
// idea: small entry to input page number
|
||||
|
||||
Reference in New Issue
Block a user