Esempio n. 1
0
if (getRequest('itemid') && !API::Item()->isWritable([$_REQUEST['itemid']]) || getRequest('triggerid') && !API::Trigger()->isWritable([$_REQUEST['triggerid']])) {
    access_deny();
}
$itemid = getRequest('itemid', 0);
$constructor = new CTextTriggerConstructor(new CTriggerExpression());
/**
 * Save a trigger
 */
if (hasRequest('add') || hasRequest('update')) {
    $item = API::Item()->get(['output' => ['key_'], 'selectHosts' => ['host'], 'itemids' => $itemid, 'limit' => 1]);
    $item = reset($item);
    $host = reset($item['hosts']);
    show_messages();
    $exprs = getRequest('expressions', false);
    if ($exprs && ($expression = $constructor->getExpressionFromParts($host['host'], $item['key_'], $exprs))) {
        if (!check_right_on_trigger_by_expression(PERM_READ_WRITE, $expression)) {
            access_deny();
        }
        $now = time();
        $status = hasRequest('status') ? TRIGGER_STATUS_DISABLED : TRIGGER_STATUS_ENABLED;
        $type = TRIGGER_MULT_EVENT_ENABLED;
        if (hasRequest('triggerid')) {
            $triggerId = getRequest('triggerid');
            $description = getRequest('description', '');
            $db_triggers = API::Trigger()->get(['output' => ['description', 'expression', 'templateid'], 'triggerids' => [$triggerId]]);
            if ($db_triggers[0]['templateid'] != 0) {
                $db_triggers = CMacrosResolverHelper::resolveTriggerExpressions($db_triggers);
                $description = $db_triggers[0]['description'];
                $expression = $db_triggers[0]['expression'];
            }
            $trigger = [];
Esempio n. 2
0
function check_right_on_trigger_by_triggerid($permission, $triggerid)
{
    $trigger_data = DBfetch(DBselect('select expression from triggers where triggerid=' . $triggerid));
    if (!$trigger_data) {
        return false;
    }
    return check_right_on_trigger_by_expression($permission, explode_exp($trigger_data['expression'], 0));
}
Esempio n. 3
0
     $_REQUEST['expr_action'] = '|';
 } else {
     if (isset($_REQUEST['replace_expression'])) {
         $_REQUEST['expr_action'] = 'r';
     } else {
         if (isset($_REQUEST['remove_expression']) && zbx_strlen($_REQUEST['remove_expression'])) {
             $_REQUEST['expr_action'] = 'R';
             $_REQUEST['expr_target_single'] = $_REQUEST['remove_expression'];
         } else {
             if (isset($_REQUEST['clone']) && isset($_REQUEST['triggerid'])) {
                 unset($_REQUEST['triggerid']);
                 $_REQUEST['form'] = 'clone';
             } else {
                 if (isset($_REQUEST['save'])) {
                     show_messages();
                     if (!check_right_on_trigger_by_expression(PERM_READ_WRITE, $_REQUEST['expression'])) {
                         if (isset($_REQUEST['triggerid'])) {
                             show_messages(false, null, S_CANNOT_UPDATE_TRIGGER);
                         } else {
                             show_messages(false, null, S_CANNOT_ADD_TRIGGER);
                         }
                     } else {
                         $status = isset($_REQUEST['status']) ? TRIGGER_STATUS_DISABLED : TRIGGER_STATUS_ENABLED;
                         $deps = get_request('dependencies', array());
                         if (isset($_REQUEST['triggerid'])) {
                             $triggerData = get_trigger_by_triggerid($_REQUEST['triggerid']);
                             if ($triggerData['templateid']) {
                                 $_REQUEST['description'] = $triggerData['description'];
                                 $_REQUEST['expression'] = explode_exp($triggerData['expression'], 0);
                             }
                             $current_deps = get_trigger_dependencies_by_triggerid($_REQUEST['triggerid']);