summaryrefslogtreecommitdiffstats
path: root/modules-available/statistics/page.inc.php
diff options
context:
space:
mode:
Diffstat (limited to 'modules-available/statistics/page.inc.php')
-rw-r--r--modules-available/statistics/page.inc.php20
1 files changed, 16 insertions, 4 deletions
diff --git a/modules-available/statistics/page.inc.php b/modules-available/statistics/page.inc.php
index b51e2956..20ff929a 100644
--- a/modules-available/statistics/page.inc.php
+++ b/modules-available/statistics/page.inc.php
@@ -70,8 +70,10 @@ class Page_Statistics extends Page
));
Message::addSuccess('notes-saved');
Util::redirect('?do=statistics&uuid=' . $uuid);
+ } elseif ($action === 'clear-machines') {
+ $this->deleteMachines(true);
} elseif ($action === 'delmachines') {
- $this->deleteMachines();
+ $this->deleteMachines(false);
Util::redirect('?do=statistics', true);
} elseif ($action === 'rebootmachines') {
$this->rebootControl(true);
@@ -184,7 +186,7 @@ class Page_Statistics extends Page
}
}
- private function deleteMachines()
+ private function deleteMachines($soft)
{
$ids = Request::post('uuid', [], 'array');
$ids = array_values($ids);
@@ -209,8 +211,18 @@ class Page_Statistics extends Page
}
}
if (!empty($delete)) {
- Database::exec('DELETE FROM machine WHERE machineuuid IN (:delete)', compact('delete'));
- Message::addSuccess('deleted-n-machines', count($delete));
+ if ($soft) {
+ // "Soft delete" -- keep all data, but set IP address to 0.0.0.0, so it will not be assigned to its
+ // old location anymore. Upon next boot some time in the future, the machine is hopefully relocated
+ // to somewhere else and will appear in a new location
+ Database::exec("UPDATE machine SET clientip = '0.0.0.0', fixedlocationid = NULL, subnetlocationid = NULL
+ WHERE machineuuid IN (:delete)", compact('delete'));
+ Message::addSuccess('cleared-n-machines', count($delete));
+ } else {
+ // Actually purge from DB
+ Database::exec('DELETE FROM machine WHERE machineuuid IN (:delete)', compact('delete'));
+ Message::addSuccess('deleted-n-machines', count($delete));
+ }
}
if (!empty($ids)) {
Message::addWarning('unknown-machine', implode(', ', array_keys($ids)));