From 73e3c24c042ac29316a5b0bff60ec73b97572ced Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Wed, 7 Sep 2016 15:35:34 +0200 Subject: [roomplanner] Sanity checks/fixups when saving computers, more user feedback, smaller grid --- modules-available/roomplanner/page.inc.php | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'modules-available/roomplanner/page.inc.php') 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']]); -- cgit v1.2.3-55-g7522