Пример #1
0
    CProfile::delete('web.items.filter_type');
    CProfile::delete('web.items.filter_key');
    CProfile::delete('web.items.filter_snmp_community');
    CProfile::delete('web.items.filter_snmpv3_securityname');
    CProfile::delete('web.items.filter_snmp_oid');
    CProfile::delete('web.items.filter_port');
    CProfile::delete('web.items.filter_value_type');
    CProfile::delete('web.items.filter_data_type');
    CProfile::delete('web.items.filter_delay');
    CProfile::delete('web.items.filter_history');
    CProfile::delete('web.items.filter_trends');
    CProfile::delete('web.items.filter_status');
    CProfile::delete('web.items.filter_state');
    CProfile::delete('web.items.filter_templated_items');
    CProfile::delete('web.items.filter_with_triggers');
    CProfile::delete('web.items.filter_ipmi_sensor');
    DBend();
}
$_REQUEST['filter_groupid'] = CProfile::get('web.items.filter_groupid', 0);
$_REQUEST['filter_hostid'] = CProfile::get('web.items.filter_hostid', 0);
$_REQUEST['filter_application'] = CProfile::get('web.items.filter_application', '');
$_REQUEST['filter_name'] = CProfile::get('web.items.filter_name', '');
$_REQUEST['filter_type'] = CProfile::get('web.items.filter_type', -1);
$_REQUEST['filter_key'] = CProfile::get('web.items.filter_key', '');
$_REQUEST['filter_snmp_community'] = CProfile::get('web.items.filter_snmp_community', '');
$_REQUEST['filter_snmpv3_securityname'] = CProfile::get('web.items.filter_snmpv3_securityname', '');
$_REQUEST['filter_snmp_oid'] = CProfile::get('web.items.filter_snmp_oid', '');
$_REQUEST['filter_port'] = CProfile::get('web.items.filter_port', '');
$_REQUEST['filter_value_type'] = CProfile::get('web.items.filter_value_type', -1);
$_REQUEST['filter_data_type'] = CProfile::get('web.items.filter_data_type', -1);
$_REQUEST['filter_delay'] = CProfile::get('web.items.filter_delay', '');
Пример #2
0
    exit;
}
/*
 * Filter
 */
if (hasRequest('filter_set')) {
    CProfile::update('web.hosts.filter_ip', getRequest('filter_ip', ''), PROFILE_TYPE_STR);
    CProfile::update('web.hosts.filter_dns', getRequest('filter_dns', ''), PROFILE_TYPE_STR);
    CProfile::update('web.hosts.filter_host', getRequest('filter_host', ''), PROFILE_TYPE_STR);
    CProfile::update('web.hosts.filter_port', getRequest('filter_port', ''), PROFILE_TYPE_STR);
} elseif (hasRequest('filter_rst')) {
    DBStart();
    CProfile::delete('web.hosts.filter_ip');
    CProfile::delete('web.hosts.filter_dns');
    CProfile::delete('web.hosts.filter_host');
    CProfile::delete('web.hosts.filter_port');
    DBend();
}
$filter['ip'] = CProfile::get('web.hosts.filter_ip', '');
$filter['dns'] = CProfile::get('web.hosts.filter_dns', '');
$filter['host'] = CProfile::get('web.hosts.filter_host', '');
$filter['port'] = CProfile::get('web.hosts.filter_port', '');
// remove inherited macros data (actions: 'add', 'update' and 'form')
$macros = cleanInheritedMacros(getRequest('macros', []));
// remove empty new macro lines
foreach ($macros as $idx => $macro) {
    if (!array_key_exists('hostmacroid', $macro) && $macro['macro'] === '' && $macro['value'] === '') {
        unset($macros[$idx]);
    }
}
/*
Пример #3
0
    order_result($data['iconMaps'], 'name');
    // render view
    $mapView = new CView('monitoring.sysmap.edit', $data);
    $mapView->render();
    $mapView->show();
} else {
    CProfile::delete('web.maps.sysmapid');
    $sortField = getRequest('sort', CProfile::get('web.' . $page['file'] . '.sort', 'name'));
    $sortOrder = getRequest('sortorder', CProfile::get('web.' . $page['file'] . '.sortorder', ZBX_SORT_UP));
    CProfile::update('web.' . $page['file'] . '.sort', $sortField, PROFILE_TYPE_STR);
    CProfile::update('web.' . $page['file'] . '.sortorder', $sortOrder, PROFILE_TYPE_STR);
    if (hasRequest('filter_set')) {
        CProfile::update('web.sysmapconf.filter_name', getRequest('filter_name', ''), PROFILE_TYPE_STR);
    } elseif (hasRequest('filter_rst')) {
        DBStart();
        CProfile::delete('web.sysmapconf.filter_name');
        DBend();
    }
    $config = select_config();
    $data = ['filter' => ['name' => CProfile::get('web.sysmapconf.filter_name', '')], 'sort' => $sortField, 'sortorder' => $sortOrder];
    // get maps
    $data['maps'] = API::Map()->get(['output' => ['sysmapid', 'name', 'width', 'height'], 'sortfield' => $sortField, 'limit' => $config['search_limit'] + 1, 'search' => ['name' => $data['filter']['name'] === '' ? null : $data['filter']['name']], 'preservekeys' => true]);
    $user_type = CWebUser::getType();
    if ($user_type != USER_TYPE_SUPER_ADMIN && $user_type != USER_TYPE_ZABBIX_ADMIN) {
        $editable_maps = API::Map()->get(['output' => [], 'sysmapids' => array_keys($data['maps']), 'editable' => true, 'preservekeys' => true]);
        foreach ($data['maps'] as &$map) {
            $map['editable'] = array_key_exists($map['sysmapid'], $editable_maps);
        }
        unset($map);
    }
    order_result($data['maps'], $sortField, $sortOrder);
Пример #4
0
 /**
  * Delete applications.
  *
  * @param array $applicationIds
  */
 public function delete(array $applicationIds)
 {
     // unset applications from http tests
     DB::update('httptest', array('values' => array('applicationid' => null), 'where' => array('applicationid' => $applicationIds)));
     // remove Monitoring > Latest data toggle profile values related to given applications
     CProfile::delete('web.latest.toggle', $applicationIds);
     DB::delete('applications', array('applicationid' => $applicationIds));
 }
Пример #5
0
            CProfile::update('web.events.timelinefixed', getRequest('favid'), PROFILE_TYPE_INT);
        }
    }
}
if ($page['type'] == PAGE_TYPE_JS || $page['type'] == PAGE_TYPE_HTML_BLOCK) {
    require_once dirname(__FILE__) . '/include/page_footer.php';
    exit;
}
/*
 * Filter
 */
if (hasRequest('filter_set')) {
    CProfile::update('web.events.filter.triggerid', getRequest('triggerid', 0), PROFILE_TYPE_ID);
} elseif (hasRequest('filter_rst')) {
    DBStart();
    CProfile::delete('web.events.filter.triggerid');
    DBend();
}
$triggerId = CProfile::get('web.events.filter.triggerid', 0);
$source = $triggerId != 0 && hasRequest('filter_set') ? EVENT_SOURCE_TRIGGERS : getRequest('source', CProfile::get('web.events.source', EVENT_SOURCE_TRIGGERS));
CProfile::update('web.events.source', $source, PROFILE_TYPE_INT);
// calculate stime and period
if ($csvExport) {
    $period = getRequest('period', ZBX_PERIOD_DEFAULT);
    if (hasRequest('stime')) {
        $stime = getRequest('stime');
        if (bccomp($stime + $period, date(TIMESTAMP_FORMAT, time())) == 1) {
            $stime = date(TIMESTAMP_FORMAT, time() - $period);
        }
    } else {
        $stime = date(TIMESTAMP_FORMAT, time() - $period);
Пример #6
0
} else {
    $data = ['config' => select_config(), 'hosts' => [], 'sort' => $sortField, 'sortorder' => $sortOrder];
    // filter
    $data['pageFilter'] = new CPageFilter(['groups' => ['real_hosts' => true], 'groupid' => getRequest('groupid')]);
    /*
     * Filter
     */
    if (hasRequest('filter_set')) {
        CProfile::update('web.hostinventories.filter_field', getRequest('filter_field', ''), PROFILE_TYPE_STR);
        CProfile::update('web.hostinventories.filter_field_value', getRequest('filter_field_value', ''), PROFILE_TYPE_STR);
        CProfile::update('web.hostinventories.filter_exact', getRequest('filter_exact', 0), PROFILE_TYPE_INT);
    } elseif (hasRequest('filter_rst')) {
        DBStart();
        CProfile::delete('web.hostinventories.filter_field');
        CProfile::delete('web.hostinventories.filter_field_value');
        CProfile::delete('web.hostinventories.filter_exact');
        DBend();
    }
    $data['filterField'] = CProfile::get('web.hostinventories.filter_field', '');
    $data['filterFieldValue'] = CProfile::get('web.hostinventories.filter_field_value', '');
    $data['filterExact'] = CProfile::get('web.hostinventories.filter_exact', 0);
    if ($data['pageFilter']->groupsSelected) {
        // which inventory fields we will need for displaying
        $requiredInventoryFields = ['name', 'type', 'os', 'serialno_a', 'tag', 'macaddress_a'];
        // checking if correct inventory field is specified for filter
        $possibleInventoryFields = getHostInventories();
        $possibleInventoryFields = zbx_toHash($possibleInventoryFields, 'db_field');
        if ($data['filterField'] !== '' && $data['filterFieldValue'] !== '' && !isset($possibleInventoryFields[$data['filterField']])) {
            error(_s('Impossible to filter by inventory field "%s", which does not exist.', $data['filterField']));
        } else {
            // if we are filtering by field, this field is also required
Пример #7
0
} else {
    CProfile::delete('web.screens.elementid');
    $sortField = getRequest('sort', CProfile::get('web.' . $page['file'] . '.sort', 'name'));
    $sortOrder = getRequest('sortorder', CProfile::get('web.' . $page['file'] . '.sortorder', ZBX_SORT_UP));
    CProfile::update('web.' . $page['file'] . '.sort', $sortField, PROFILE_TYPE_STR);
    CProfile::update('web.' . $page['file'] . '.sortorder', $sortOrder, PROFILE_TYPE_STR);
    $config = select_config();
    $data = ['templateid' => getRequest('templateid'), 'sort' => $sortField, 'sortorder' => $sortOrder];
    if ($data['templateid']) {
        $data['screens'] = API::TemplateScreen()->get(['output' => ['screenid', 'name', 'hsize', 'vsize'], 'templateids' => $data['templateid'], 'sortfield' => $sortField, 'limit' => $config['search_limit'], 'editable' => true, 'preservekeys' => true]);
    } else {
        if (hasRequest('filter_set')) {
            CProfile::update('web.screenconf.filter_name', getRequest('filter_name', ''), PROFILE_TYPE_STR);
        } elseif (hasRequest('filter_rst')) {
            DBStart();
            CProfile::delete('web.screenconf.filter_name');
            DBend();
        }
        $data['filter'] = ['name' => CProfile::get('web.screenconf.filter_name', '')];
        $data['screens'] = API::Screen()->get(['output' => ['screenid', 'name', 'hsize', 'vsize'], 'sortfield' => $sortField, 'limit' => $config['search_limit'], 'search' => ['name' => $data['filter']['name'] === '' ? null : $data['filter']['name']], 'preservekeys' => true]);
        $user_type = CWebUser::getType();
        if ($user_type != USER_TYPE_SUPER_ADMIN && $user_type != USER_TYPE_ZABBIX_ADMIN) {
            $editable_screens = API::Screen()->get(['output' => [], 'screenids' => array_keys($data['screens']), 'editable' => true, 'preservekeys' => true]);
            foreach ($data['screens'] as &$screen) {
                $screen['editable'] = array_key_exists($screen['screenid'], $editable_screens);
            }
            unset($screen);
        }
    }
    order_result($data['screens'], $sortField, $sortOrder);
    // paging
Пример #8
0
            $data['application_list'][$dbApp['applicationid']] = $dbApp['name'];
        }
    }
    // render view
    $httpView = new CView('configuration.httpconf.edit', $data);
    $httpView->render();
    $httpView->show();
} else {
    $sortField = getRequest('sort', CProfile::get('web.' . $page['file'] . '.sort', 'name'));
    $sortOrder = getRequest('sortorder', CProfile::get('web.' . $page['file'] . '.sortorder', ZBX_SORT_UP));
    CProfile::update('web.' . $page['file'] . '.sort', $sortField, PROFILE_TYPE_STR);
    CProfile::update('web.' . $page['file'] . '.sortorder', $sortOrder, PROFILE_TYPE_STR);
    if (hasRequest('filter_set')) {
        CProfile::update('web.httpconf.filter_status', getRequest('filter_status', -1), PROFILE_TYPE_INT);
    } elseif (hasRequest('filter_rst')) {
        CProfile::delete('web.httpconf.filter_status');
    }
    $pageFilter = new CPageFilter(['groups' => ['editable' => true], 'hosts' => ['editable' => true, 'templated_hosts' => true], 'hostid' => getRequest('hostid'), 'groupid' => getRequest('groupid')]);
    $data = ['hostid' => $pageFilter->hostid, 'pageFilter' => $pageFilter, 'filter_status' => CProfile::get('web.httpconf.filter_status', -1), 'httpTests' => [], 'httpTestsLastData' => [], 'paging' => null, 'sort' => $sortField, 'sortorder' => $sortOrder];
    // show the error column only for hosts
    if (getRequest('hostid') != 0) {
        $data['showInfoColumn'] = (bool) API::Host()->get(['hostids' => getRequest('hostid'), 'output' => ['status']]);
    } else {
        $data['showInfoColumn'] = true;
    }
    if ($data['pageFilter']->hostsSelected) {
        $config = select_config();
        $options = ['editable' => true, 'output' => ['httptestid', $sortField], 'limit' => $config['search_limit'] + 1];
        if ($data['filter_status'] != -1) {
            $options['filter']['status'] = $data['filter_status'];
        }
Пример #9
0
 /**
  * Initialize minimum trigger severities.
  *
  * @param string $severityMin
  * @param array  $options
  * @param int    $options['default']
  * @param string $options['mapId']
  */
 private function _initSeveritiesMin($severityMin, array $options = array())
 {
     $default = isset($options['default']) ? $options['default'] : TRIGGER_SEVERITY_NOT_CLASSIFIED;
     $mapId = isset($options['mapId']) ? $options['mapId'] : 0;
     $severityMinProfile = isset($this->_profileIds['severityMin']) ? $this->_profileIds['severityMin'] : null;
     if ($severityMin === null && $severityMinProfile !== null) {
         $severityMin = $severityMinProfile;
     }
     if ($severityMin !== null) {
         if ($severityMin == $default) {
             CProfile::delete($this->_profileIdx['severityMin'], $mapId);
         } else {
             CProfile::update($this->_profileIdx['severityMin'], $severityMin, PROFILE_TYPE_INT, $mapId);
         }
     }
     $this->data['severitiesMin'] = getSeverityCaption();
     $this->data['severitiesMin'][$default] = $this->data['severitiesMin'][$default] . SPACE . '(' . _('default') . ')';
     $this->ids['severityMin'] = $severityMin === null ? $default : $severityMin;
 }
Пример #10
0
    $triggersView = new CView('configuration.copy.elements', $data);
    $triggersView->render();
    $triggersView->show();
} else {
    $sortField = getRequest('sort', CProfile::get('web.' . $page['file'] . '.sort', 'description'));
    $sortOrder = getRequest('sortorder', CProfile::get('web.' . $page['file'] . '.sortorder', ZBX_SORT_UP));
    CProfile::update('web.' . $page['file'] . '.sort', $sortField, PROFILE_TYPE_STR);
    CProfile::update('web.' . $page['file'] . '.sortorder', $sortOrder, PROFILE_TYPE_STR);
    if (hasRequest('filter_set')) {
        CProfile::update('web.triggers.filter_priority', getRequest('filter_priority', -1), PROFILE_TYPE_INT);
        CProfile::update('web.triggers.filter_state', getRequest('filter_state', -1), PROFILE_TYPE_INT);
        CProfile::update('web.triggers.filter_status', getRequest('filter_status', -1), PROFILE_TYPE_INT);
    } elseif (hasRequest('filter_rst')) {
        CProfile::delete('web.triggers.filter_priority');
        CProfile::delete('web.triggers.filter_state');
        CProfile::delete('web.triggers.filter_status');
    }
    $config = select_config();
    $data = ['filter_priority' => CProfile::get('web.triggers.filter_priority', -1), 'filter_state' => CProfile::get('web.triggers.filter_state', -1), 'filter_status' => CProfile::get('web.triggers.filter_status', -1), 'triggers' => [], 'sort' => $sortField, 'sortorder' => $sortOrder, 'config' => $config];
    $data['pageFilter'] = new CPageFilter(['groups' => ['with_hosts_and_templates' => true, 'editable' => true], 'hosts' => ['templated_hosts' => true, 'editable' => true], 'triggers' => ['editable' => true], 'groupid' => getRequest('groupid'), 'hostid' => getRequest('hostid')]);
    $data['groupid'] = $data['pageFilter']->groupid;
    $data['hostid'] = $data['pageFilter']->hostid;
    // get triggers
    if ($data['pageFilter']->hostsSelected) {
        $options = ['editable' => true, 'sortfield' => $sortField, 'limit' => $config['search_limit'] + 1];
        if ($sortField === 'status') {
            $options['output'] = ['triggerid', 'status', 'state'];
        } else {
            $options['output'] = ['triggerid', $sortField];
        }
        if ($data['filter_priority'] != -1) {
Пример #11
0
        $inventoryValues[] = $field['value'];
    }
    CProfile::updateArray('web.tr_status.filter.inventory.field', $inventoryFields, PROFILE_TYPE_STR);
    CProfile::updateArray('web.tr_status.filter.inventory.value', $inventoryValues, PROFILE_TYPE_STR);
} elseif (hasRequest('filter_rst')) {
    DBStart();
    CProfile::delete('web.tr_status.filter.show_triggers');
    CProfile::delete('web.tr_status.filter.show_details');
    CProfile::delete('web.tr_status.filter.show_maintenance');
    CProfile::delete('web.tr_status.filter.show_events');
    CProfile::delete('web.tr_status.filter.ack_status');
    CProfile::delete('web.tr_status.filter.show_severity');
    CProfile::delete('web.tr_status.filter.txt_select');
    CProfile::delete('web.tr_status.filter.status_change');
    CProfile::delete('web.tr_status.filter.status_change_days');
    CProfile::delete('web.tr_status.filter.application');
    CProfile::deleteIdx('web.tr_status.filter.inventory.field');
    CProfile::deleteIdx('web.tr_status.filter.inventory.value');
    DBend();
}
if (hasRequest('filter_set') && getRequest('show_triggers') == TRIGGERS_OPTION_ALL) {
    $showTriggers = TRIGGERS_OPTION_ALL;
} else {
    $showTriggers = CProfile::get('web.tr_status.filter.show_triggers', TRIGGERS_OPTION_RECENT_PROBLEM);
}
$showDetails = CProfile::get('web.tr_status.filter.show_details', 0);
$showMaintenance = CProfile::get('web.tr_status.filter.show_maintenance', 1);
$showSeverity = CProfile::get('web.tr_status.filter.show_severity', TRIGGER_SEVERITY_NOT_CLASSIFIED);
$txtSelect = CProfile::get('web.tr_status.filter.txt_select', '');
$showChange = CProfile::get('web.tr_status.filter.status_change', 0);
$statusChangeBydays = CProfile::get('web.tr_status.filter.status_change_days', 14);
 protected function doAction()
 {
     $idx = $this->getInput('idx');
     $value_int = $this->getInput('value_int');
     DBstart();
     switch ($idx) {
         case 'web.latest.toggle':
         case 'web.latest.toggle_other':
             if ($value_int == 1) {
                 // default value
                 CProfile::delete($idx, $this->getInput('idx2'));
             } else {
                 foreach ($this->getInput('idx2') as $idx2) {
                     CProfile::update($idx, $value_int, PROFILE_TYPE_INT, $idx2);
                 }
             }
             break;
         default:
             if ($value_int == 1) {
                 // default value
                 CProfile::delete($idx);
             } else {
                 CProfile::update($idx, $value_int, PROFILE_TYPE_INT);
             }
     }
     DBend();
     $this->setResponse(new CControllerResponseData(['main_block' => '']));
 }
Пример #13
0
        }
        $inventoryFields[] = $field['field'];
        $inventoryValues[] = $field['value'];
    }
    CProfile::updateArray('web.overview.filter.inventory.field', $inventoryFields, PROFILE_TYPE_STR);
    CProfile::updateArray('web.overview.filter.inventory.value', $inventoryValues, PROFILE_TYPE_STR);
} elseif (hasRequest('filter_rst')) {
    DBStart();
    CProfile::delete('web.overview.filter.show_triggers');
    CProfile::delete('web.overview.filter.show_maintenance');
    CProfile::delete('web.overview.filter.ack_status');
    CProfile::delete('web.overview.filter.show_severity');
    CProfile::delete('web.overview.filter.txt_select');
    CProfile::delete('web.overview.filter.status_change');
    CProfile::delete('web.overview.filter.status_change_days');
    CProfile::delete('web.overview.filter.application');
    CProfile::deleteIdx('web.overview.filter.inventory.field');
    CProfile::deleteIdx('web.overview.filter.inventory.value');
    DBend();
}
// overview type
if (hasRequest('type')) {
    CProfile::update('web.overview.type', getRequest('type'), PROFILE_TYPE_INT);
}
$type = CProfile::get('web.overview.type', SHOW_TRIGGERS);
// overview style
if (hasRequest('view_style')) {
    CProfile::update('web.overview.view_style', getRequest('view_style'), PROFILE_TYPE_INT);
}
$viewStyle = CProfile::get('web.overview.view_style', STYLE_TOP);
if (hasRequest('filter_set') && getRequest('show_triggers') == TRIGGERS_OPTION_ALL) {
Пример #14
0
 /**
  * Initialize minimum trigger severities.
  *
  * @param string $severityMin			minimum trigger severity
  * @param array  $options				array of options
  * @param int    $options['default']	default severity
  * @param string $options['mapId']		ID of a map
  * @param array	 $config				array of configuration parameters for getting severity names
  *
  * @return void
  */
 private function _initSeveritiesMin($severityMin, array $options, array $config)
 {
     $default = isset($options['default']) ? $options['default'] : TRIGGER_SEVERITY_NOT_CLASSIFIED;
     $mapId = isset($options['mapId']) ? $options['mapId'] : 0;
     $severityMinProfile = isset($this->_profileIds['severityMin']) ? $this->_profileIds['severityMin'] : null;
     if ($severityMin === null && $severityMinProfile !== null) {
         $severityMin = $severityMinProfile;
     }
     if ($severityMin !== null) {
         if ($severityMin == $default) {
             CProfile::delete($this->_profileIdx['severityMin'], $mapId);
         } else {
             CProfile::update($this->_profileIdx['severityMin'], $severityMin, PROFILE_TYPE_INT, $mapId);
         }
     }
     $this->data['severitiesMin'] = [];
     for ($severity = TRIGGER_SEVERITY_NOT_CLASSIFIED; $severity < TRIGGER_SEVERITY_COUNT; $severity++) {
         $severityName = getSeverityName($severity, $config);
         if ($severity == $default) {
             $this->data['severitiesMin'][] = $severityName . SPACE . '(' . _('default') . ')';
         } else {
             $this->data['severitiesMin'][] = $severityName;
         }
     }
     $this->ids['severityMin'] = $severityMin === null ? $default : $severityMin;
 }
Пример #15
0
/*
 * Filter
 */
if (hasRequest('filter_set')) {
    CProfile::update('web.latest.filter.select', getRequest('select', ''), PROFILE_TYPE_STR);
    CProfile::update('web.latest.filter.show_without_data', getRequest('show_without_data', 0), PROFILE_TYPE_INT);
    CProfile::update('web.latest.filter.show_details', getRequest('show_details', 0), PROFILE_TYPE_INT);
    CProfile::update('web.latest.filter.application', getRequest('application', ''), PROFILE_TYPE_STR);
    CProfile::updateArray('web.latest.filter.groupids', getRequest('groupids', array()), PROFILE_TYPE_STR);
    CProfile::updateArray('web.latest.filter.hostids', getRequest('hostids', array()), PROFILE_TYPE_STR);
} elseif (hasRequest('filter_rst')) {
    DBStart();
    CProfile::delete('web.latest.filter.select');
    CProfile::delete('web.latest.filter.show_without_data');
    CProfile::delete('web.latest.filter.show_details');
    CProfile::delete('web.latest.filter.application');
    CProfile::deleteIdx('web.latest.filter.groupids');
    CProfile::deleteIdx('web.latest.filter.hostids');
    DBend();
}
$filter = array('select' => CProfile::get('web.latest.filter.select', ''), 'showWithoutData' => CProfile::get('web.latest.filter.show_without_data', 1), 'showDetails' => CProfile::get('web.latest.filter.show_details'), 'application' => CProfile::get('web.latest.filter.application', ''), 'groupids' => CProfile::getArray('web.latest.filter.groupids'), 'hostids' => CProfile::getArray('web.latest.filter.hostids'));
// we'll need to hide the host column if only one host is selected
$singleHostSelected = count($filter['hostids']) == 1;
$sortField = getRequest('sort', CProfile::get('web.' . $page['file'] . '.sort', 'name'));
$sortOrder = getRequest('sortorder', CProfile::get('web.' . $page['file'] . '.sortorder', ZBX_SORT_UP));
CProfile::update('web.' . $page['file'] . '.sort', $sortField, PROFILE_TYPE_STR);
CProfile::update('web.' . $page['file'] . '.sortorder', $sortOrder, PROFILE_TYPE_STR);
$applications = $items = $hostScripts = array();
// we'll only display the values if the filter is set
$filterSet = $filter['select'] !== '' || $filter['application'] !== '' || $filter['groupids'] || $filter['hostids'];
if ($filterSet) {
Пример #16
0
    unset($slide);
    // render view
    $slideshowView = new CView('monitoring.slideconf.edit', $data);
    $slideshowView->render();
    $slideshowView->show();
} else {
    CProfile::delete('web.slides.elementid');
    $sortField = getRequest('sort', CProfile::get('web.' . $page['file'] . '.sort', 'name'));
    $sortOrder = getRequest('sortorder', CProfile::get('web.' . $page['file'] . '.sortorder', ZBX_SORT_UP));
    CProfile::update('web.' . $page['file'] . '.sort', $sortField, PROFILE_TYPE_STR);
    CProfile::update('web.' . $page['file'] . '.sortorder', $sortOrder, PROFILE_TYPE_STR);
    if (hasRequest('filter_set')) {
        CProfile::update('web.slideconf.filter_name', getRequest('filter_name', ''), PROFILE_TYPE_STR);
    } elseif (hasRequest('filter_rst')) {
        DBStart();
        CProfile::delete('web.slideconf.filter_name');
        DBend();
    }
    $config = select_config();
    $limit = $config['search_limit'] + 1;
    $data = ['filter' => ['name' => CProfile::get('web.slideconf.filter_name', '')], 'sort' => $sortField, 'sortorder' => $sortOrder];
    if ($data['filter']['name'] !== '') {
        // escaping parameter that is about to be used in LIKE statement
        $pattern = str_replace("!", "!!", $data['filter']['name']);
        $pattern = str_replace("%", "!%", $pattern);
        $pattern = str_replace("_", "!_", $pattern);
        $sql_where = ' WHERE UPPER(s.name) LIKE ' . zbx_dbstr('%' . mb_strtoupper($pattern) . '%') . " ESCAPE '!'";
    } else {
        $sql_where = '';
    }
    $data['slides'] = DBfetchArray(DBselect('SELECT s.slideshowid,s.name,s.delay,COUNT(sl.slideshowid) AS cnt' . ' FROM slideshows s' . ' LEFT JOIN slides sl ON sl.slideshowid=s.slideshowid' . $sql_where . ' GROUP BY s.slideshowid,s.name,s.delay' . ' ORDER BY ' . ($sortField === 'cnt' ? 'cnt' : 's.' . $sortField)));
Пример #17
0
 /**
  * Delete Host
  *
  * @param string|array 	$hostIds
  * @param bool			$nopermissions
  *
  * @return array|boolean
  */
 public function delete($hostIds, $nopermissions = false)
 {
     $hostIds = zbx_toArray($hostIds);
     // deprecated input support
     if ($hostIds && is_array($hostIds[0])) {
         $this->deprecated('Passing objects is deprecated, use an array of IDs instead.');
         foreach ($hostIds as $host) {
             if (!check_db_fields(array('hostid' => null), $host)) {
                 self::exception(ZBX_API_ERROR_PARAMETERS, _('No host ID given.'));
             }
         }
         $hostIds = zbx_objectValues($hostIds, 'hostid');
     }
     $this->validateDelete($hostIds, $nopermissions);
     // delete the discovery rules first
     $delRules = API::DiscoveryRule()->get(array('hostids' => $hostIds, 'nopermissions' => true, 'preservekeys' => true));
     if ($delRules) {
         API::DiscoveryRule()->delete(array_keys($delRules), true);
     }
     // delete the items
     $delItems = API::Item()->get(array('templateids' => $hostIds, 'output' => array('itemid'), 'nopermissions' => true, 'preservekeys' => true));
     if ($delItems) {
         API::Item()->delete(array_keys($delItems), true);
     }
     // delete web tests
     $delHttptests = array();
     $dbHttptests = get_httptests_by_hostid($hostIds);
     while ($dbHttptest = DBfetch($dbHttptests)) {
         $delHttptests[$dbHttptest['httptestid']] = $dbHttptest['httptestid'];
     }
     if (!empty($delHttptests)) {
         API::HttpTest()->delete($delHttptests, true);
     }
     // delete screen items
     DB::delete('screens_items', array('resourceid' => $hostIds, 'resourcetype' => SCREEN_RESOURCE_HOST_TRIGGERS));
     // delete host from maps
     if (!empty($hostIds)) {
         DB::delete('sysmaps_elements', array('elementtype' => SYSMAP_ELEMENT_TYPE_HOST, 'elementid' => $hostIds));
     }
     // disable actions
     // actions from conditions
     $actionids = array();
     $sql = 'SELECT DISTINCT actionid' . ' FROM conditions' . ' WHERE conditiontype=' . CONDITION_TYPE_HOST . ' AND ' . dbConditionString('value', $hostIds);
     $dbActions = DBselect($sql);
     while ($dbAction = DBfetch($dbActions)) {
         $actionids[$dbAction['actionid']] = $dbAction['actionid'];
     }
     // actions from operations
     $sql = 'SELECT DISTINCT o.actionid' . ' FROM operations o, opcommand_hst oh' . ' WHERE o.operationid=oh.operationid' . ' AND ' . dbConditionInt('oh.hostid', $hostIds);
     $dbActions = DBselect($sql);
     while ($dbAction = DBfetch($dbActions)) {
         $actionids[$dbAction['actionid']] = $dbAction['actionid'];
     }
     if (!empty($actionids)) {
         $update = array();
         $update[] = array('values' => array('status' => ACTION_STATUS_DISABLED), 'where' => array('actionid' => $actionids));
         DB::update('actions', $update);
     }
     // delete action conditions
     DB::delete('conditions', array('conditiontype' => CONDITION_TYPE_HOST, 'value' => $hostIds));
     // delete action operation commands
     $operationids = array();
     $sql = 'SELECT DISTINCT oh.operationid' . ' FROM opcommand_hst oh' . ' WHERE ' . dbConditionInt('oh.hostid', $hostIds);
     $dbOperations = DBselect($sql);
     while ($dbOperation = DBfetch($dbOperations)) {
         $operationids[$dbOperation['operationid']] = $dbOperation['operationid'];
     }
     DB::delete('opcommand_hst', array('hostid' => $hostIds));
     // delete empty operations
     $delOperationids = array();
     $sql = 'SELECT DISTINCT o.operationid' . ' FROM operations o' . ' WHERE ' . dbConditionInt('o.operationid', $operationids) . ' AND NOT EXISTS(SELECT oh.opcommand_hstid FROM opcommand_hst oh WHERE oh.operationid=o.operationid)';
     $dbOperations = DBselect($sql);
     while ($dbOperation = DBfetch($dbOperations)) {
         $delOperationids[$dbOperation['operationid']] = $dbOperation['operationid'];
     }
     DB::delete('operations', array('operationid' => $delOperationids));
     $hosts = API::Host()->get(array('output' => array('hostid', 'name'), 'hostids' => $hostIds, 'nopermissions' => true));
     // delete host inventory
     DB::delete('host_inventory', array('hostid' => $hostIds));
     // delete host applications
     DB::delete('applications', array('hostid' => $hostIds));
     // delete host
     DB::delete('hosts', array('hostid' => $hostIds));
     // TODO: remove info from API
     foreach ($hosts as $host) {
         info(_s('Deleted: Host "%1$s".', $host['name']));
         add_audit_ext(AUDIT_ACTION_DELETE, AUDIT_RESOURCE_HOST, $host['hostid'], $host['name'], 'hosts', NULL, NULL);
     }
     // remove Monitoring > Latest data toggle profile values related to given hosts
     CProfile::delete('web.latest.toggle_other', $hostIds);
     return array('hostids' => $hostIds);
 }
Пример #18
0
            CProfile::update('web.auditacts.timelinefixed', $_REQUEST['favid'], PROFILE_TYPE_INT);
        }
    }
}
if ($page['type'] == PAGE_TYPE_JS || $page['type'] == PAGE_TYPE_HTML_BLOCK) {
    require_once dirname(__FILE__) . '/include/page_footer.php';
    exit;
}
/*
 * Filter
 */
if (hasRequest('filter_set')) {
    CProfile::update('web.auditacts.filter.alias', getRequest('alias', ''), PROFILE_TYPE_STR);
} elseif (hasRequest('filter_rst')) {
    DBStart();
    CProfile::delete('web.auditacts.filter.alias');
    DBend();
}
/*
 * Display
 */
$effectivePeriod = navigation_bar_calc('web.auditacts.timeline', 0, true);
$data = array('stime' => getRequest('stime'), 'alias' => CProfile::get('web.auditacts.filter.alias', ''), 'users' => array(), 'alerts' => array(), 'paging' => null);
$userId = null;
if ($data['alias']) {
    $data['users'] = API::User()->get(array('output' => array('userid', 'alias', 'name', 'surname'), 'filter' => array('alias' => $data['alias']), 'preservekeys' => true));
    if ($data['users']) {
        $user = reset($data['users']);
        $userId = $user['userid'];
    }
}
Пример #19
0
if ($page['type'] == PAGE_TYPE_JS || $page['type'] == PAGE_TYPE_HTML_BLOCK) {
    require_once dirname(__FILE__) . '/include/page_footer.php';
    exit;
}
/*
 * Filter
 */
if (hasRequest('filter_set')) {
    CProfile::update('web.auditlogs.filter.alias', getRequest('alias', ''), PROFILE_TYPE_STR);
    CProfile::update('web.auditlogs.filter.action', getRequest('action', -1), PROFILE_TYPE_INT);
    CProfile::update('web.auditlogs.filter.resourcetype', getRequest('resourcetype', -1), PROFILE_TYPE_INT);
} elseif (hasRequest('filter_rst')) {
    DBStart();
    CProfile::delete('web.auditlogs.filter.alias');
    CProfile::delete('web.auditlogs.filter.action');
    CProfile::delete('web.auditlogs.filter.resourcetype');
    DBend();
}
/*
 * Display
 */
$effectivePeriod = navigation_bar_calc('web.auditlogs.timeline', 0, true);
$data = ['stime' => getRequest('stime'), 'actions' => [], 'action' => CProfile::get('web.auditlogs.filter.action', -1), 'resourcetype' => CProfile::get('web.auditlogs.filter.resourcetype', -1), 'alias' => CProfile::get('web.auditlogs.filter.alias', '')];
$from = zbxDateToTime($data['stime']);
$till = $from + $effectivePeriod;
// get audit
$config = select_config();
$sqlWhere = [];
if (!empty($data['alias'])) {
    $sqlWhere['alias'] = ' AND u.alias=' . zbx_dbstr($data['alias']);
}
Пример #20
0
$timeTill = hasRequest('filter_till') ? zbxDateToTime(getRequest('filter_till')) : $tomorrow;
if (hasRequest('filter_set')) {
    // prepare severity array
    $severities = hasRequest('severities') ? array_keys(getRequest('severities')) : [];
    CProfile::updateArray('web.toptriggers.filter.severities', $severities, PROFILE_TYPE_STR);
    CProfile::updateArray('web.toptriggers.filter.groupids', getRequest('groupids', []), PROFILE_TYPE_STR);
    CProfile::updateArray('web.toptriggers.filter.hostids', getRequest('hostids', []), PROFILE_TYPE_STR);
    CProfile::update('web.toptriggers.filter.from', $timeFrom, PROFILE_TYPE_STR);
    CProfile::update('web.toptriggers.filter.till', $timeTill, PROFILE_TYPE_STR);
} elseif (hasRequest('filter_rst')) {
    DBstart();
    CProfile::deleteIdx('web.toptriggers.filter.severities');
    CProfile::deleteIdx('web.toptriggers.filter.groupids');
    CProfile::deleteIdx('web.toptriggers.filter.hostids');
    CProfile::delete('web.toptriggers.filter.from');
    CProfile::delete('web.toptriggers.filter.till');
    DBend();
}
if (!hasRequest('filter_set')) {
    for ($severity = TRIGGER_SEVERITY_NOT_CLASSIFIED; $severity < TRIGGER_SEVERITY_COUNT; $severity++) {
        $defaultSeverities[$severity] = $severity;
    }
} else {
    $defaultSeverities = [];
}
$data['filter'] = ['severities' => CProfile::getArray('web.toptriggers.filter.severities', $defaultSeverities), 'groupids' => CProfile::getArray('web.toptriggers.filter.groupids'), 'hostids' => CProfile::getArray('web.toptriggers.filter.hostids'), 'filter_from' => CProfile::get('web.toptriggers.filter.from', $today), 'filter_till' => CProfile::get('web.toptriggers.filter.till', $tomorrow)];
// multiselect host groups
$data['multiSelectHostGroupData'] = [];
if ($data['filter']['groupids'] !== null) {
    $filterGroups = API::HostGroup()->get(['output' => ['groupid', 'name'], 'groupids' => $data['filter']['groupids']]);
    foreach ($filterGroups as $filterGroup) {