Refactored, no more redirects. Improved error messaging system

This commit is contained in:
2023-03-06 19:25:21 +01:00
parent 7cfcaeb9d7
commit 78b97c5094
87 changed files with 1801 additions and 2633 deletions

View File

@@ -46,6 +46,12 @@ function checkchildren($locations, $level) {
}
}
// ========== ADDITIONAL ACTION DEFINITIONS ===================================
define ('ACT_SUBNET_EDIT', 100);
define ('ACT_SUBNET_ADD', 101);
define ('ACT_SUBNET_DEL', 102);
// ========== ACTIONS START ===================================================
switch ($submit = form_get_action()) {
@@ -55,6 +61,17 @@ switch ($submit = form_get_action()) {
case 'view': $action = ACT_VIEW; break;
case 'edit': $action = ACT_EDIT; break;
case 'del': $action = ACT_DELETE; break;
case 'link': $action = ACT_SUBNET_EDIT; break;
case 'exec-link':
if ($_POST['action'] == 'locationsubnetadd') {
$action = ACT_SUBNET_ADD;
} elseif ($_POST['action'] == 'locationsubnetdel') {
$action = ACT_SUBNET_DEL;
} else {
$g_warning->Add('invalid action!'. $_POST['action']);
}
break;
case 'insert':
$name = sanitize($_POST['location_name']);
@@ -84,6 +101,22 @@ switch ($submit = form_get_action()) {
$action = ACT_VIEW;
break;
case 'subnetlink':
$subnet_id = sanitize($_POST['subnet_id']);
$sql = "INSERT INTO subnetlocation (location_id, subnet_id) VALUE (?, ?)";
$sth = $dbh->prepare($sql);
$sth->execute([$id, $subnet_id]);
$action = ACT_VIEW;
break;
case 'subnetunlink':
$subnet_id = sanitize($_POST['subnet_id']);
$sth = $dbh->prepare("DELETE FROM subnetlocation WHERE location_id=? AND subnet_id=?");
$sth->execute([$id, $subnet_id]);
$g_message->Add('Link removed');
$action = ACT_VIEW;
break;
case 'delete':
$sth = $dbh->prepare("DELETE FROM location WHERE location_id=?");
$sth->execute([$id]);
@@ -118,7 +151,7 @@ function build_tree($parent_id, $level) {
unset($location['parent_id']);
$location['children'] = build_tree($location['id'], $level+1);
$location['level'] = $level;
$location['href'] = 'locationview.php?location_id=' . $location['id'];
$location['href'] = 'location.php?f=view&id=' . $location['id'];
$children[] = $location;
}
}
@@ -166,7 +199,7 @@ elseif ($action == ACT_VIEW):
// base location
$sql = "SELECT location_id AS id, location_name AS name,
location_parent AS parent_id, location_info AS info,
CONCAT('locationview.php?location_id=', location_id) AS url
CONCAT('location.php?f=view&id=', location_id) AS url
FROM location
WHERE location_id=?";
$sth = $dbh->prepare($sql);
@@ -178,7 +211,7 @@ $smarty->assign("location", $location);
$crumbs[] = $location;
$sql = "SELECT location_id AS id, location_name AS name,
location_parent AS parent_id,
CONCAT('locationview.php?location_id=', location_id) AS url
CONCAT('location.php?f=view&id=', location_id) AS url
FROM location
WHERE location_id=?";
$sth = $dbh->prepare($sql);
@@ -243,7 +276,7 @@ $location_counter = count($locations);
$smarty->assign("location_counter", $location_counter);
// any loactions?
// any locations?
if ($location_counter>0) {
foreach($locations AS $location) {
$location_names[$location['location_id']] = $location['location_name'];
@@ -259,6 +292,59 @@ $smarty->assign("location_parent", $location_parent);
$smarty->display("locationedit.tpl");
elseif ($action == ACT_SUBNET_EDIT):
// ========== VARIANT: location to subnet =====================================
$sql = "SELECT location_id AS id, location_name AS name
FROM location
WHERE location_id=?";
$sth = $dbh->prepare($sql);
$sth->execute([$id]);
$smarty->assign("location", $sth->fetch(PDO::FETCH_OBJ));
$smarty->display("locationsubnetedit.tpl");
elseif ($action == ACT_SUBNET_ADD):
// ========== VARIANT: add location to subnet =================================
$sql = "SELECT location_id AS id, location_name AS name
FROM location
WHERE location_id=?";
$sth = $dbh->prepare($sql);
$sth->execute([$id]);
$smarty->assign("location", $sth->fetch(PDO::FETCH_OBJ));
// TODO Filter für bereits zugeordnete Subnetze
$smarty->assign("subnet_options", db_get_options_subnet());
$smarty->display("locationsubnetadd.tpl");
elseif ($action == ACT_SUBNET_DEL):
// ========== VARIANT: del location to subnet =================================
// location
$sql = "SELECT location_id AS id, location_name AS name
FROM location
WHERE location_id=?";
$sth = $dbh->prepare($sql);
$sth->execute([$id]);
$smarty->assign("location", $sth->fetch(PDO::FETCH_OBJ));
// subnet
$sql = "SELECT s.subnet_id, CONCAT_WS('/', s.subnet_address, s.subnet_mask)
FROM subnetlocation AS l LEFT JOIN subnet AS s USING (subnet_id)
WHERE l.location_id=?
ORDER BY INET_ATON(s.subnet_address)";
$sth = $dbh->prepare($sql);
$sth->execute([$id]);
$options = array();
foreach ($sth->fetchAll(PDO::FETCH_NUM) as $rec) {
$options[$rec[0]] = $rec[1];
}
$smarty->assign("subnet_options", $options);
$smarty->display("locationsubnetdel.tpl");
elseif ($action == ACT_DELETE):
// ========== VARIANT: delete record ==========================================