summaryrefslogtreecommitdiffstats
path: root/modules-available
diff options
context:
space:
mode:
authorSimon Rettberg2019-08-01 15:09:32 +0200
committerSimon Rettberg2019-08-01 15:09:32 +0200
commit2dbe5a86b26f118e8ce717fcaedfc3ae52b1b06c (patch)
tree373b51f3e05d44f3b7e08733eb6e1eeb7ea501d6 /modules-available
parent[permissionmanager] Implement caching for permission checks (diff)
downloadslx-admin-2dbe5a86b26f118e8ce717fcaedfc3ae52b1b06c.tar.gz
slx-admin-2dbe5a86b26f118e8ce717fcaedfc3ae52b1b06c.tar.xz
slx-admin-2dbe5a86b26f118e8ce717fcaedfc3ae52b1b06c.zip
[roomplanner] Search only returns clients allowed in that room
Don't return clients that wouldn't be allowed to be assigned to that location according to the rules in the Location class.
Diffstat (limited to 'modules-available')
-rw-r--r--modules-available/roomplanner/clientscript.js2
-rw-r--r--modules-available/roomplanner/page.inc.php10
2 files changed, 9 insertions, 3 deletions
diff --git a/modules-available/roomplanner/clientscript.js b/modules-available/roomplanner/clientscript.js
index 823c212a..48311a09 100644
--- a/modules-available/roomplanner/clientscript.js
+++ b/modules-available/roomplanner/clientscript.js
@@ -83,7 +83,7 @@ function loadMachines(query, callback) {
}
}
$.ajax({
- url: '?do=roomplanner&action=getmachines&query=' + encodeURIComponent(query),
+ url: '?do=roomplanner&action=getmachines&query=' + encodeURIComponent(query) + '&locationid=' + locationId,
type: 'GET',
dataType: 'json',
error: function() {
diff --git a/modules-available/roomplanner/page.inc.php b/modules-available/roomplanner/page.inc.php
index d22c0054..52ad34f3 100644
--- a/modules-available/roomplanner/page.inc.php
+++ b/modules-available/roomplanner/page.inc.php
@@ -168,6 +168,7 @@ class Page_Roomplanner extends Page
die('{"machines":[]}');
}
+ $roomLocationId = Request::any('locationid', 0, 'int');
$query = Request::get('query', false, 'string');
$aquery = preg_replace('/[^\x01-\x7f]+/', '%', $query);
if (strlen(str_replace('%', '', $aquery)) < 2) {
@@ -179,21 +180,26 @@ class Page_Roomplanner extends Page
$condition .= ' OR locationid IS NULL';
}
- $result = Database::simpleQuery("SELECT machineuuid, macaddr, clientip, hostname, fixedlocationid
+ $result = Database::simpleQuery("SELECT machineuuid, macaddr, clientip, hostname, fixedlocationid, subnetlocationid
FROM machine
WHERE ($condition) AND machineuuid LIKE :aquery
OR macaddr LIKE :aquery
OR clientip LIKE :aquery
OR hostname LIKE :query
- LIMIT 100", ['query' => "%$query%", 'aquery' => "%$aquery%", 'locations' => $locations]);
+ LIMIT 500", ['query' => "%$query%", 'aquery' => "%$aquery%", 'locations' => $locations]);
$returnObject = ['machines' => []];
while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
+ error_log("$roomLocationId, {$row['subnetlocationid']}");
+ if (!Location::isFixedLocationValid($roomLocationId, $row['subnetlocationid']))
+ continue;
if (empty($row['hostname'])) {
$row['hostname'] = $row['clientip'];
}
$returnObject['machines'][] = $row;
+ if (count($returnObject['machines']) > 100)
+ break;
}
echo json_encode($returnObject);
} elseif ($this->action === 'save') {