private static function hostgroup($action, $params) { CHostGroup::$error = array(); switch ($action) { case 'add': $result = CHostGroup::add($params); break; case 'get': $result = CHostGroup::get($params); break; case 'getById': $result = CHostGroup::getById($params); break; case 'getId': $result = CHostGroup::getId($params); break; case 'update': $result = CHostGroup::update($params); break; case 'addHosts': $result = CHostGroup::addHosts($params); break; case 'removeHosts': $result = CHostGroup::removeHosts($params); break; case 'addGroupsToHost': $result = CHostGroup::addGroupsToHost($params); break; case 'updateGroupsToHost': $result = CHostGroup::updateGroupsToHost($params); break; case 'delete': $result = CHostGroup::delete($params); break; default: self::$result = array('error' => ZBX_API_ERROR_NO_METHOD, 'data' => 'Method: "' . $action . '" doesn\'t exist.'); return; //exit function } if ($result !== false) { self::$result = array('result' => $result); } else { self::$result = CHostGroup::$error; } }
} } /*** <--- ACTIONS ---> ***/ if (isset($_REQUEST['clone']) && isset($_REQUEST['groupid'])) { unset($_REQUEST['groupid']); $_REQUEST['form'] = 'clone'; } else { if (isset($_REQUEST['save'])) { $objects = get_request('hosts', array()); $hosts = CHost::get(array('hostids' => $objects, 'output' => API_OUTPUT_SHORTEN)); $templates = CTemplate::get(array('templateids' => $objects, 'output' => API_OUTPUT_SHORTEN)); if (isset($_REQUEST['groupid'])) { DBstart(); $old_group = CHostGroup::get(array('groupids' => $_REQUEST['groupid'], 'output' => API_OUTPUT_EXTEND)); $old_group = reset($old_group); $result = CHostGroup::update(array('groupid' => $_REQUEST['groupid'], 'name' => $_REQUEST['gname'])); if ($result) { $options = array('groupids' => $result['groupids'], 'output' => API_OUTPUT_EXTEND); $groups = CHostGroup::get($options); $data = array('hosts' => $hosts, 'templates' => $templates, 'groups' => $groups); $result = CHostGroup::massUpdate($data); } $result = DBend($result); if ($result) { $group = reset($groups); add_audit_ext(AUDIT_ACTION_UPDATE, AUDIT_RESOURCE_HOST_GROUP, $group['groupid'], $group['name'], 'groups', array('name' => $old_group['name']), array('name' => $group['name'])); } $msg_ok = S_GROUP_UPDATED; $msg_fail = S_CANNOT_UPDATE_GROUP; } else { if (!count(get_accessible_nodes_by_user($USER_DETAILS, PERM_READ_WRITE, PERM_RES_IDS_ARRAY))) {