function check_right_on_trigger_by_expression($permission, $expression) { global $USER_DETAILS; $available_hosts = get_accessible_hosts_by_user($USER_DETAILS, $permission, null, get_current_nodeid(true)); $db_hosts = get_hosts_by_expression($expression); while ($host_data = DBfetch($db_hosts)) { if (!isset($available_hosts[$host_data['hostid']])) { return false; } } return true; }
function validate_trigger_dependency($expression, $deps) { $result = true; if (!empty($deps)) { $templates = array(); $templateids = array(); $db_triggerhosts = get_hosts_by_expression($expression); while ($triggerhost = DBfetch($db_triggerhosts)) { if ($triggerhost['status'] == HOST_STATUS_TEMPLATE) { //template $templates[$triggerhost['hostid']] = $triggerhost; $templateids[$triggerhost['hostid']] = $triggerhost['hostid']; } } $dep_templateids = array(); $db_dephosts = get_hosts_by_triggerid($deps); while ($dephost = DBfetch($db_dephosts)) { if ($dephost['status'] == HOST_STATUS_TEMPLATE) { //template $templates[$dephost['hostid']] = $dephost; $dep_templateids[$dephost['hostid']] = $dephost['hostid']; } } if (!empty($templateids) && !empty($dep_templateids)) { $tpls = array_merge($templateids, $dep_templateids); $sql = 'SELECT DISTINCT h.host, h.hostid, ht.templateid ' . ' FROM hosts h, hosts_templates ht ' . ' WHERE h.hostid=ht.hostid ' . ' AND h.status=' . HOST_STATUS_TEMPLATE . ' AND ' . DBcondition('ht.templateid', $tpls); $db_lowlvltpl = DBselect($sql); while ($lovlvltpl = DBfetch($db_lowlvltpl)) { error($templates[$lovlvltpl['templateid']]['host'] . ' is not the highest level template'); $result = false; } } } return $result; }