Пример #1
0
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;
}
Пример #2
0
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;
}