pandorafms/pandora_console/include/functions_component_groups.php

78 lines
2.3 KiB
PHP

<?php
// Pandora FMS - https://pandorafms.com
// ==================================================
// Copyright (c) 2005-2023 Pandora FMS
// Please see https://pandorafms.com/community/ for full contribution list
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public License
// as published by the Free Software Foundation; version 2
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
/**
* @package Include
* @subpackage Component groups
*/
/**
* Format components groups in tree way.
*
* @param array $groups The list of groups to create the treefield list.
* @param integer $parent The id_group of parent actual scan branch.
* @param integer $deep The level of profundity in the branch.
*
* @return array The treefield list of components groups.
*/
function component_groups_get_groups_tree_recursive($groups, $parent=0, $deep=0)
{
$return = [];
foreach ($groups as $key => $group) {
if ($group['parent'] == $parent) {
$group['deep'] = $deep;
$branch = component_groups_get_groups_tree_recursive($groups, $key, ($deep + 1));
if (empty($branch)) {
$group['hash_branch'] = false;
} else {
$group['hash_branch'] = true;
}
$return = ($return + [$key => $group] + $branch);
}
}
return $return;
}
/**
* Return a array of id_group of childrens (to branches down)
*
* @param integer $parent The id_group parent to search the childrens.
* @param array $groups The groups, its for optimize the querys to DB.
*/
function component_groups_get_childrens($parent, $groups=null)
{
if (empty($groups)) {
$groups = db_get_all_rows_in_table('tnetwork_component_group');
}
$return = [];
foreach ($groups as $key => $group) {
if ($group['id_sg'] == 0) {
continue;
}
if ($group['parent'] == $parent) {
$return = ($return + [$group['id_sg'] => $group] + component_groups_get_childrens($group['id_sg'], $groups));
}
}
return $return;
}