diff --git a/html/includes/api_functions.inc.php b/html/includes/api_functions.inc.php
index a6ca25723..5a0cead14 100644
--- a/html/includes/api_functions.inc.php
+++ b/html/includes/api_functions.inc.php
@@ -1024,7 +1024,7 @@ function get_device_groups() {
// use hostname as device_id if it's all digits
$device_id = ctype_digit($hostname) ? $hostname : getidbyname($hostname);
if (is_numeric($device_id)) {
- $groups = GetFullGroupsFromDevice($device_id);
+ $groups = GetGroupsFromDevice($device_id,1);
}
else {
$groups = GetDeviceGroups();
diff --git a/includes/device-groups.inc.php b/includes/device-groups.inc.php
index bb703f2cd..3624db490 100644
--- a/includes/device-groups.inc.php
+++ b/includes/device-groups.inc.php
@@ -31,7 +31,7 @@
* @param string $search What to searchid for
* @return string
*/
-function GenGroupSQL($pattern, $search='') {
+function GenGroupSQL($pattern, $search='',$extra=0) {
$pattern = RunGroupMacros($pattern);
if ($pattern === false) {
return false;
@@ -66,7 +66,11 @@ function GenGroupSQL($pattern, $search='') {
$search .= ' &&';
}
- $sql = 'SELECT DISTINCT('.str_replace('(', '', $tables[0]).'.device_id),`devices`.* FROM '.implode(',', $tables).' WHERE '.$search.' ('.str_replace(array('%', '@', '!~', '~'), array('', '.*', 'NOT REGEXP', 'REGEXP'), $pattern).')';
+ $sql_extra = '';
+ if ($extra === 1) {
+ $sql_extra = ",`devices`.*";
+ }
+ $sql = 'SELECT DISTINCT('.str_replace('(', '', $tables[0]).'.device_id)'.$sql_extra.' FROM '.implode(',', $tables).' WHERE '.$search.' ('.str_replace(array('%', '@', '!~', '~'), array('', '.*', 'NOT REGEXP', 'REGEXP'), $pattern).')';
return $sql;
}//end GenGroupSQL()
@@ -104,28 +108,16 @@ function GetDeviceGroups() {
* @param integer $device Device-ID
* @return array
*/
-function GetGroupsFromDevice($device) {
+function GetGroupsFromDevice($device,$extra=0) {
$ret = array();
foreach (GetDeviceGroups() as $group) {
- if (dbFetchCell(GenGroupSQL($group['pattern'], 'device_id=?').' LIMIT 1', array($device)) == $device) {
- $ret[] = $group['id'];
- }
- }
-
- return $ret;
-
-}//end GetGroupsFromDevice()
-
-/**
- * Get all groups of Device
- * @param integer $device Device-ID
- * @return array
- */
-function GetFullGroupsFromDevice($device) {
- $ret = array();
- foreach (GetDeviceGroups() as $group) {
- if (dbFetchCell(GenGroupSQL($group['pattern'], 'device_id=?').' LIMIT 1', array($device)) == $device) {
- $ret[] = $group;
+ if (dbFetchCell(GenGroupSQL($group['pattern'], 'device_id=?',$extra).' LIMIT 1', array($device)) == $device) {
+ if ($extra === 0) {
+ $ret[] = $group['id'];
+ }
+ else {
+ $ret[] = $group;
+ }
}
}