summaryrefslogtreecommitdiffstats
path: root/modules-available/roomplanner/page.inc.php
diff options
context:
space:
mode:
authorSimon Rettberg2016-09-07 15:35:34 +0200
committerSimon Rettberg2016-09-07 15:35:34 +0200
commit73e3c24c042ac29316a5b0bff60ec73b97572ced (patch)
tree09b9c8490ad9f076f26d13f2b11186d813d78f9e /modules-available/roomplanner/page.inc.php
parent[roomplanner] Location name in h1 (diff)
downloadslx-admin-73e3c24c042ac29316a5b0bff60ec73b97572ced.tar.gz
slx-admin-73e3c24c042ac29316a5b0bff60ec73b97572ced.tar.xz
slx-admin-73e3c24c042ac29316a5b0bff60ec73b97572ced.zip
[roomplanner] Sanity checks/fixups when saving computers, more user feedback, smaller grid
Diffstat (limited to 'modules-available/roomplanner/page.inc.php')
-rw-r--r--modules-available/roomplanner/page.inc.php27
1 files changed, 26 insertions, 1 deletions
diff --git a/modules-available/roomplanner/page.inc.php b/modules-available/roomplanner/page.inc.php
index 9064b848..7043f054 100644
--- a/modules-available/roomplanner/page.inc.php
+++ b/modules-available/roomplanner/page.inc.php
@@ -42,7 +42,7 @@ class Page_Roomplanner extends Page
Util::redirect('?do=locations');
}
if ($this->location === false) {
- Message::addError('invalid-locationid');
+ Message::addError('locations.invalid-location-id', $this->locationid);
Util::redirect('?do=locations');
}
@@ -135,6 +135,15 @@ class Page_Roomplanner extends Page
$this->saveComputerConfig($config['computers'], $machinesOnPlan);
}
+ private function sanitizeNumber(&$number, $lower, $upper)
+ {
+ if (!is_numeric($number) || $number < $lower) {
+ $number = $lower;
+ } elseif ($number > $upper) {
+ $number = $upper;
+ }
+ }
+
protected function saveComputerConfig($computers, $oldComputers)
{
@@ -148,6 +157,22 @@ class Page_Roomplanner extends Page
foreach ($computers as $computer) {
$newUuids[] = $computer['muuid'];
+ // Fix/sanitize properties
+ // TODO: The list of items, computers, etc. in general is copied and pasted in multiple places. We need a central definition with generators for the various formats we need it in
+ if (!isset($computer['itemlook']) || !in_array($computer['itemlook'], ['pc-north', 'pc-south', 'pc-west', 'pc-east', 'copier', 'telephone'])) {
+ $computer['itemlook'] = 'pc-north';
+ }
+ if (!isset($computer['gridRow'])) {
+ $computer['gridRow'] = 0;
+ } else {
+ $this->sanitizeNumber($computer['gridRow'], 0, 32 * 4);
+ }
+ if (!isset($computer['gridCol'])) {
+ $computer['gridCol'] = 0;
+ } else {
+ $this->sanitizeNumber($computer['gridCol'], 0, 32 * 4);
+ }
+
$position = json_encode(['gridRow' => $computer['gridRow'],
'gridCol' => $computer['gridCol'],
'itemlook' => $computer['itemlook']]);