Example #1
0
        foreach ($data['drules'] as $druleid => $drule) {
            // checks
            $checks = array();
            foreach ($drule['dchecks'] as $check) {
                $checks[$check['type']] = discovery_check_type2str($check['type']);
            }
            order_result($checks);
            $data['drules'][$druleid]['checks'] = $checks;
            // description
            $data['drules'][$druleid]['description'] = array();
            if (!empty($drule['proxy_hostid'])) {
                $proxy = get_host_by_hostid($drule['proxy_hostid']);
                array_push($data['drules'][$druleid]['description'], $proxy['host'] . NAME_DELIMITER);
            }
        }
        order_result($data['drules'], getPageSortOrder());
    }
    // get paging
    $data['paging'] = getPagingLine($data['drules'], array('druleid'));
    // nodes
    if ($data['displayNodes'] = is_array(get_current_nodeid())) {
        foreach ($data['drules'] as &$drule) {
            $drule['nodename'] = get_node_name_by_elid($drule['druleid'], true);
        }
        unset($drule);
    }
    // render view
    $discoveryView = new CView('configuration.discovery.list', $data);
    $discoveryView->render();
    $discoveryView->show();
}
                $item['applications_list'] = '';
            }
        }
        unset($item);
    }
    $data['flicker'] = getItemFilterForm($data['items']);
    // remove subfiltered items
    if (!empty($data['items'])) {
        foreach ($data['items'] as $number => $item) {
            foreach ($item['subfilters'] as $subfilter => $value) {
                if (!$value) {
                    unset($data['items'][$number]);
                    break;
                }
            }
        }
    }
    order_result($data['items'], $data['sortfield'], getPageSortOrder());
    $data['paging'] = getPagingLine($data['items']);
    $itemTriggerIds = array();
    foreach ($data['items'] as $item) {
        $itemTriggerIds = array_merge($itemTriggerIds, zbx_objectValues($item['triggers'], 'triggerid'));
    }
    $data['itemTriggers'] = API::Trigger()->get(array('triggerids' => $itemTriggerIds, 'output' => API_OUTPUT_EXTEND, 'selectHosts' => array('hostid', 'name', 'host'), 'selectFunctions' => API_OUTPUT_EXTEND, 'selectItems' => API_OUTPUT_EXTEND, 'preservekeys' => true));
    $data['triggerRealHosts'] = getParentHostsByTriggers($data['itemTriggers']);
    // render view
    $itemView = new CView('configuration.item.list', $data);
    $itemView->render();
    $itemView->show();
}
require_once dirname(__FILE__) . '/include/page_footer.php';
Example #3
0
/**
 * Returns paging line.
 *
 * @param array $items list of items
 * @param array $removeUrlParams params to remove from URL
 * @param array $urlParams params to add in URL
 *
 * @return CTable
 */
function getPagingLine(&$items, array $removeUrlParams = array(), array $urlParams = array())
{
    global $page;
    $config = select_config();
    $searchLimit = '';
    if ($config['search_limit'] < count($items)) {
        if (getPageSortOrder() == ZBX_SORT_UP) {
            array_pop($items);
        } else {
            array_shift($items);
        }
        $searchLimit = '+';
    }
    $rowsPerPage = CWebUser::$data['rows_per_page'];
    $itemsCount = count($items);
    $pagesCount = $itemsCount > 0 ? ceil($itemsCount / $rowsPerPage) : 1;
    $currentPage = getPageNumber();
    if ($currentPage < 1) {
        $currentPage = 1;
    }
    if ($currentPage > $pagesCount) {
        $currentPage = $pagesCount;
    }
    $start = ($currentPage - 1) * $rowsPerPage;
    CProfile::update('web.paging.lastpage', $page['file'], PROFILE_TYPE_STR);
    CProfile::update('web.paging.page', $currentPage, PROFILE_TYPE_INT);
    // trim array with items to contain items for current page
    $items = array_slice($items, $start, $rowsPerPage, true);
    // viewed pages (better to use not odd)
    $pagingNavRange = 11;
    $endPage = $currentPage + floor($pagingNavRange / 2);
    if ($endPage < $pagingNavRange) {
        $endPage = $pagingNavRange;
    }
    if ($endPage > $pagesCount) {
        $endPage = $pagesCount;
    }
    $startPage = $endPage > $pagingNavRange ? $endPage - $pagingNavRange + 1 : 1;
    $pageLine = array();
    $table = null;
    if ($pagesCount > 1) {
        $url = new Curl();
        if (is_array($urlParams) && $urlParams) {
            foreach ($urlParams as $key => $value) {
                $url->setArgument($key, $value);
            }
        }
        $removeUrlParams = array_merge($removeUrlParams, array('go', 'form', 'delete', 'cancel'));
        foreach ($removeUrlParams as $param) {
            $url->removeArgument($param);
        }
        if ($startPage > 1) {
            $url->setArgument('page', 1);
            $pageLine[] = new CLink('<< ' . _x('First', 'page navigation'), $url->getUrl(), null, null, true);
            $pageLine[] = '&nbsp;&nbsp;';
        }
        if ($currentPage > 1) {
            $url->setArgument('page', $currentPage - 1);
            $pageLine[] = new CLink('< ' . _x('Previous', 'page navigation'), $url->getUrl(), null, null, true);
            $pageLine[] = ' | ';
        }
        for ($p = $startPage; $p <= $pagesCount; $p++) {
            if ($p > $endPage) {
                break;
            }
            if ($p == $currentPage) {
                $pagespan = new CSpan($p, 'bold textcolorstyles');
            } else {
                $url->setArgument('page', $p);
                $pagespan = new CLink($p, $url->getUrl(), null, null, true);
            }
            $pageLine[] = $pagespan;
            $pageLine[] = ' | ';
        }
        array_pop($pageLine);
        if ($currentPage < $pagesCount) {
            $pageLine[] = ' | ';
            $url->setArgument('page', $currentPage + 1);
            $pageLine[] = new CLink(_x('Next', 'page navigation') . ' >', $url->getUrl(), null, null, true);
        }
        if ($p < $pagesCount) {
            $pageLine[] = '&nbsp;&nbsp;';
            $url->setArgument('page', $pagesCount);
            $pageLine[] = new CLink(_x('Last', 'page navigation') . ' >>', $url->getUrl(), null, null, true);
        }
        $table = new CTable(null, 'paging');
        $table->addRow(new CCol($pageLine));
    }
    $viewFromPage = ($currentPage - 1) * $rowsPerPage + 1;
    $viewTillPage = $currentPage * $rowsPerPage;
    if ($viewTillPage > $itemsCount) {
        $viewTillPage = $itemsCount;
    }
    $pageView = array();
    $pageView[] = _('Displaying') . SPACE;
    if ($itemsCount > 0) {
        $pageView[] = new CSpan($viewFromPage, 'info');
        $pageView[] = SPACE . _('to') . SPACE;
    }
    $pageView[] = new CSpan($viewTillPage, 'info');
    $pageView[] = SPACE . _('of') . SPACE;
    $pageView[] = new CSpan($itemsCount, 'info');
    $pageView[] = $searchLimit;
    $pageView[] = SPACE . _('found');
    $pageView = new CSpan($pageView);
    zbx_add_post_js('insertInElement("numrows", ' . zbx_jsvalue($pageView->toString()) . ', "div");');
    return $table;
}
Example #4
0
        $db_slides = DBselect('SELECT s.* FROM slides s WHERE s.slideshowid=' . zbx_dbstr($data['slideshowid']) . ' ORDER BY s.step');
        while ($slide = DBfetch($db_slides)) {
            $data['slides'][$slide['step']] = array('slideid' => $slide['slideid'], 'screenid' => $slide['screenid'], 'delay' => $slide['delay']);
        }
    }
    // get slides without delay
    $data['slides_without_delay'] = $data['slides'];
    for ($i = 0, $size = count($data['slides_without_delay']); $i < $size; $i++) {
        unset($data['slides_without_delay'][$i]['delay']);
    }
    // render view
    $slideshowView = new CView('configuration.slideconf.edit', $data);
    $slideshowView->render();
    $slideshowView->show();
} else {
    $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' . whereDbNode('s.slideshowid') . ' GROUP BY s.slideshowid,s.name,s.delay'));
    order_result($data['slides'], getPageSortField('name'), getPageSortOrder());
    $data['paging'] = getPagingLine($data['slides'], array('slideshowid'));
    // nodes
    if ($data['displayNodes'] = is_array(get_current_nodeid())) {
        foreach ($data['slides'] as &$slide) {
            $slide['nodename'] = get_node_name_by_elid($slide['slideshowid'], true);
        }
        unset($slide);
    }
    // render view
    $slideshowView = new CView('configuration.slideconf.list', $data);
    $slideshowView->render();
    $slideshowView->show();
}
require_once dirname(__FILE__) . '/include/page_footer.php';
$hostinvent_wdgt->addItem(BR());
$table = new CTableInfo(_('No hosts defined.'));
$table->setHeader(array(make_sorting_header($groupFieldTitle === '' ? _('Field') : $groupFieldTitle, 'inventory_field'), make_sorting_header(_('Host count'), 'host_count')));
// to show a report, we will need a host group and a field to aggregate
if ($pageFilter->groupsSelected && $groupFieldTitle !== '') {
    $options = array('output' => array('hostid', 'name'), 'selectInventory' => array($_REQUEST['groupby']), 'withInventory' => true);
    if ($pageFilter->groupid > 0) {
        $options['groupids'] = $pageFilter->groupid;
    }
    $hosts = API::Host()->get($options);
    // aggregating data by chosen field value
    $report = array();
    foreach ($hosts as $host) {
        if ($host['inventory'][$_REQUEST['groupby']] !== '') {
            $lowerValue = zbx_strtolower($host['inventory'][$_REQUEST['groupby']]);
            if (!isset($report[$lowerValue])) {
                $report[$lowerValue] = array('inventory_field' => $host['inventory'][$_REQUEST['groupby']], 'host_count' => 1);
            } else {
                $report[$lowerValue]['host_count'] += 1;
            }
        }
    }
    order_result($report, getPageSortField('host_count'), getPageSortOrder());
    foreach ($report as $rep) {
        $row = array(new CSpan($rep['inventory_field'], 'pre'), new CLink($rep['host_count'], 'hostinventories.php?filter_field=' . $_REQUEST['groupby'] . '&filter_field_value=' . urlencode($rep['inventory_field']) . '&filter_set=1&filter_exact=1' . url_param('groupid')));
        $table->addRow($row);
    }
}
$hostinvent_wdgt->addItem($table);
$hostinvent_wdgt->show();
require_once dirname(__FILE__) . '/include/page_footer.php';
Example #6
0
    clearCookies($goResult, $_REQUEST['hostid']);
}
/*
 * Display
 */
if (isset($_REQUEST['form'])) {
    $data = getItemFormData(array('is_discovery_rule' => true));
    $data['page_header'] = _('CONFIGURATION OF DISCOVERY RULES');
    // render view
    $itemView = new CView('configuration.item.edit', $data);
    $itemView->render();
    $itemView->show();
} else {
    $data = array('hostid' => get_request('hostid', 0), 'host' => $host, 'showErrorColumn' => $host['status'] != HOST_STATUS_TEMPLATE);
    $sortfield = getPageSortField('name');
    // discoveries
    $data['discoveries'] = API::DiscoveryRule()->get(array('hostids' => $data['hostid'], 'output' => API_OUTPUT_EXTEND, 'editable' => true, 'selectItems' => API_OUTPUT_COUNT, 'selectGraphs' => API_OUTPUT_COUNT, 'selectTriggers' => API_OUTPUT_COUNT, 'selectHostPrototypes' => API_OUTPUT_COUNT, 'sortfield' => $sortfield, 'limit' => $config['search_limit'] + 1));
    $data['discoveries'] = CMacrosResolverHelper::resolveItemNames($data['discoveries']);
    if ($sortfield === 'status') {
        orderItemsByStatus($data['discoveries'], getPageSortOrder());
    } else {
        order_result($data['discoveries'], $sortfield, getPageSortOrder());
    }
    // paging
    $data['paging'] = getPagingLine($data['discoveries'], array('itemid'), array('hostid' => get_request('hostid')));
    // render view
    $discoveryView = new CView('configuration.host.discovery.list', $data);
    $discoveryView->render();
    $discoveryView->show();
}
require_once dirname(__FILE__) . '/include/page_footer.php';
Example #7
0
 $numrows = new CDiv();
 $numrows->setAttribute('name', 'numrows');
 $user_wdgt->addHeader(S_USERS_BIG, $form);
 $user_wdgt->addHeader($numrows);
 $form = new CForm(null, 'post');
 $form->setName('users');
 $table = new CTableInfo(S_NO_USERS_DEFINED);
 $table->setHeader(array(new CCheckBox('all_users', NULL, "checkAll('" . $form->getName() . "','all_users','group_userid');"), make_sorting_header(S_ALIAS, 'alias'), make_sorting_header(S_NAME, 'name'), make_sorting_header(S_SURNAME, 'surname'), make_sorting_header(S_USER_TYPE, 'type'), S_GROUPS, S_IS_ONLINE_Q, S_LOGIN, S_GUI_ACCESS, S_API_ACCESS, S_DEBUG_MODE, S_STATUS));
 // User table
 $options = array('output' => API_OUTPUT_EXTEND, 'select_usrgrps' => API_OUTPUT_EXTEND, 'get_access' => 1, 'limit' => $config['search_limit'] + 1);
 if ($_REQUEST['filter_usrgrpid'] > 0) {
     $options['usrgrpids'] = $_REQUEST['filter_usrgrpid'];
 }
 $users = CUser::get($options);
 // sorting
 order_result($users, getPageSortField('alias'), getPageSortOrder());
 $paging = getPagingLine($users);
 //---------
 // set default lastaccess time to 0.
 foreach ($users as $unum => $user) {
     $usessions[$user['userid']] = array('lastaccess' => 0);
 }
 $userids = zbx_objectValues($users, 'userid');
 $sql = 'SELECT s.userid, MAX(s.lastaccess) as lastaccess, s.status ' . ' FROM sessions s' . ' WHERE ' . DBcondition('s.userid', $userids) . ' GROUP BY s.userid, s.status';
 $db_sessions = DBselect($sql);
 while ($session = DBfetch($db_sessions)) {
     if ($usessions[$session['userid']]['lastaccess'] < $session['lastaccess']) {
         $usessions[$session['userid']] = $session;
     }
 }
 foreach ($users as $unum => $user) {
Example #8
0
        $data['vsize'] = get_request('vsize', 1);
    }
    // render view
    $screenView = new CView('configuration.screen.edit', $data);
    $screenView->render();
    $screenView->show();
} else {
    $data = array('templateid' => get_request('templateid', null));
    $sortfield = getPageSortField('name');
    $options = array('editable' => true, 'output' => API_OUTPUT_EXTEND, 'templateids' => $data['templateid'], 'sortfield' => $sortfield, 'limit' => $config['search_limit']);
    if (!empty($data['templateid'])) {
        $data['screens'] = API::TemplateScreen()->get($options);
    } else {
        $data['screens'] = API::Screen()->get($options);
    }
    order_result($data['screens'], $sortfield, getPageSortOrder());
    // paging
    $data['paging'] = getPagingLine($data['screens'], array('screenid'), array('templateid' => get_request('templateid')));
    // nodes
    if ($data['displayNodes'] = is_array(get_current_nodeid())) {
        foreach ($data['screens'] as &$screen) {
            $screen['nodename'] = get_node_name_by_elid($screen['screenid'], true);
        }
        unset($screen);
    }
    // render view
    $screenView = new CView('configuration.screen.list', $data);
    $screenView->render();
    $screenView->show();
}
require_once dirname(__FILE__) . '/include/page_footer.php';
Example #9
0
        foreach ($data['drules'] as $key => $drule) {
            // checks
            $checks = array();
            foreach ($drule['dchecks'] as $check) {
                $checks[$check['type']] = discovery_check_type2str($check['type']);
            }
            order_result($checks);
            $data['drules'][$key]['checks'] = $checks;
            // description
            $data['drules'][$key]['description'] = array();
            if ($drule['proxy_hostid']) {
                $proxy = get_host_by_hostid($drule['proxy_hostid']);
                array_push($data['drules'][$key]['description'], $proxy['host'] . NAME_DELIMITER);
            }
        }
        order_result($data['drules'], $sortfield, getPageSortOrder());
    }
    // get paging
    $data['paging'] = getPagingLine($data['drules'], array('druleid'));
    // nodes
    if ($data['displayNodes'] = is_array(get_current_nodeid())) {
        foreach ($data['drules'] as &$drule) {
            $drule['nodename'] = get_node_name_by_elid($drule['druleid'], true);
        }
        unset($drule);
    }
    // render view
    $discoveryView = new CView('configuration.discovery.list', $data);
    $discoveryView->render();
    $discoveryView->show();
}
Example #10
0
    }
    // fetch available hosts, skip host prototypes
    $data['dbHosts'] = DBfetchArray(DBselect('SELECT h.hostid,h.proxy_hostid,h.name,h.flags' . ' FROM hosts h' . ' WHERE h.status IN (' . HOST_STATUS_MONITORED . ',' . HOST_STATUS_NOT_MONITORED . ')' . andDbNode('h.hostid') . ' AND h.flags<>' . ZBX_FLAG_DISCOVERY_PROTOTYPE));
    order_result($data['dbHosts'], 'name');
    // render view
    $proxyView = new CView('administration.proxy.edit', $data);
    $proxyView->render();
    $proxyView->show();
} else {
    $data = array('displayNodes' => is_array(get_current_nodeid()), 'config' => select_config());
    $sortfield = getPageSortField('host');
    $data['proxies'] = API::Proxy()->get(array('editable' => true, 'selectHosts' => array('hostid', 'host', 'name', 'status'), 'output' => API_OUTPUT_EXTEND, 'sortfield' => $sortfield, 'limit' => $config['search_limit'] + 1));
    $data['proxies'] = zbx_toHash($data['proxies'], 'proxyid');
    $proxyIds = array_keys($data['proxies']);
    // sorting & paging
    order_result($data['proxies'], $sortfield, getPageSortOrder());
    $data['paging'] = getPagingLine($data['proxies'], array('proxyid'));
    // nodes
    foreach ($data['proxies'] as &$proxy) {
        $proxy['nodename'] = $data['displayNodes'] ? get_node_name_by_elid($proxy['proxyid'], true) : '';
    }
    unset($proxy);
    // calculate performance
    $dbPerformance = DBselect('SELECT h.proxy_hostid,SUM(1.0/i.delay) AS qps' . ' FROM items i,hosts h' . ' WHERE i.status=' . ITEM_STATUS_ACTIVE . ' AND i.hostid=h.hostid' . ' AND h.status=' . HOST_STATUS_MONITORED . ' AND i.delay<>0' . ' AND ' . dbConditionInt('h.proxy_hostid', $proxyIds) . ' GROUP BY h.proxy_hostid');
    while ($performance = DBfetch($dbPerformance)) {
        if (isset($data['proxies'][$performance['proxy_hostid']])) {
            $data['proxies'][$performance['proxy_hostid']]['perf'] = round($performance['qps'], 2);
        }
    }
    // get items
    $items = API::Item()->get(array('proxyids' => $proxyIds, 'groupCount' => true, 'countOutput' => true, 'webitems' => true, 'monitored' => true));
Example #11
0
    $data['userid'] = $userId;
    $data['form'] = get_request('form');
    $data['form_refresh'] = get_request('form_refresh', 0);
    // render view
    $usersView = new CView('administration.users.edit', $data);
    $usersView->render();
    $usersView->show();
} else {
    $data = array('displayNodes' => is_array(get_current_nodeid()));
    // get user groups
    $data['userGroups'] = API::UserGroup()->get(array('output' => API_OUTPUT_EXTEND));
    order_result($data['userGroups'], 'name');
    // get users
    $data['users'] = API::User()->get(array('usrgrpids' => $_REQUEST['filter_usrgrpid'] > 0 ? $_REQUEST['filter_usrgrpid'] : null, 'output' => API_OUTPUT_EXTEND, 'selectUsrgrps' => API_OUTPUT_EXTEND, 'getAccess' => 1, 'limit' => $config['search_limit'] + 1));
    // sorting & apging
    order_result($data['users'], getPageSortField('alias'), getPageSortOrder());
    $data['paging'] = getPagingLine($data['users'], array('userid'));
    foreach ($data['users'] as $key => $user) {
        // nodes
        $data['users'][$key]['nodename'] = $data['displayNodes'] ? get_node_name_by_elid($user['userid'], true) : '';
        // set default lastaccess time to 0
        $data['usersSessions'][$user['userid']] = array('lastaccess' => 0);
    }
    $dbSessions = DBselect('SELECT s.userid,MAX(s.lastaccess) AS lastaccess,s.status' . ' FROM sessions s' . ' WHERE ' . dbConditionInt('s.userid', zbx_objectValues($data['users'], 'userid')) . ' GROUP BY s.userid,s.status');
    while ($session = DBfetch($dbSessions)) {
        if ($data['usersSessions'][$session['userid']]['lastaccess'] < $session['lastaccess']) {
            $data['usersSessions'][$session['userid']] = $session;
        }
    }
    // render view
    $usersView = new CView('administration.users.list', $data);
Example #12
0
function get_history_of_actions($limit, &$last_clock = null, $sql_cond = '')
{
    validate_sort_and_sortorder('clock', ZBX_SORT_DOWN);
    $available_triggers = get_accessible_triggers(PERM_READ_ONLY, array());
    $alerts = array();
    $clock = array();
    $table = new CTableInfo(S_NO_ACTIONS_FOUND);
    $table->setHeader(array(is_show_all_nodes() ? make_sorting_header(S_NODES, 'a.alertid') : null, make_sorting_header(S_TIME, 'clock'), make_sorting_header(S_TYPE, 'description'), make_sorting_header(S_STATUS, 'status'), make_sorting_header(S_RETRIES_LEFT, 'retries'), make_sorting_header(S_RECIPIENTS, 'sendto'), S_MESSAGE, S_ERROR));
    $sql = 'SELECT a.alertid,a.clock,mt.description,a.sendto,a.subject,a.message,a.status,a.retries,a.error ' . ' FROM events e, alerts a ' . ' LEFT JOIN media_type mt ON mt.mediatypeid=a.mediatypeid ' . ' WHERE e.eventid = a.eventid ' . ' AND alerttype IN (' . ALERT_TYPE_MESSAGE . ') ' . $sql_cond . ' AND ' . DBcondition('e.objectid', $available_triggers) . ' AND ' . DBin_node('a.alertid') . ' ORDER BY a.clock DESC';
    $result = DBselect($sql, $limit);
    while ($row = DBfetch($result)) {
        $alerts[] = $row;
        $clock[] = $row['clock'];
    }
    $last_clock = !empty($clock) ? min($clock) : null;
    $sortfield = getPageSortField('clock');
    $sortorder = getPageSortOrder();
    order_result($alerts, $sortfield, $sortorder);
    foreach ($alerts as $num => $row) {
        $time = zbx_date2str(S_HISTORY_OF_ACTIONS_DATE_FORMAT, $row['clock']);
        if ($row['status'] == ALERT_STATUS_SENT) {
            $status = new CSpan(S_SENT, 'green');
            $retries = new CSpan(SPACE, 'green');
        } else {
            if ($row['status'] == ALERT_STATUS_NOT_SENT) {
                $status = new CSpan(S_IN_PROGRESS, 'orange');
                $retries = new CSpan(ALERT_MAX_RETRIES - $row['retries'], 'orange');
            } else {
                $status = new CSpan(S_NOT_SENT, 'red');
                $retries = new CSpan(0, 'red');
            }
        }
        $sendto = $row['sendto'];
        $message = array(bold(S_SUBJECT . ': '), br(), $row['subject'], br(), br(), bold(S_MESSAGE . ': '), br(), $row['message']);
        if (empty($row['error'])) {
            $error = new CSpan(SPACE, 'off');
        } else {
            $error = new CSpan($row['error'], 'on');
        }
        $table->addRow(array(get_node_name_by_elid($row['alertid']), new CCol($time, 'top'), new CCol($row['description'], 'top'), new CCol($status, 'top'), new CCol($retries, 'top'), new CCol($sendto, 'top'), new CCol($message, 'top'), new CCol($error, 'wraptext top')));
    }
    return $table;
}
Example #13
0
            }
        }
    }
    // order linked templates
    CArrayHelper::sort($data['host_prototype']['templates'], array('name'));
    // render view
    $itemView = new CView('configuration.host.prototype.edit', $data);
    $itemView->render();
    $itemView->show();
} else {
    $data = array('form' => get_request('form', null), 'parent_discoveryid' => get_request('parent_discoveryid', null), 'discovery_rule' => $discoveryRule);
    // get items
    $sortfield = getPageSortField('name');
    $data['hostPrototypes'] = API::HostPrototype()->get(array('discoveryids' => $data['parent_discoveryid'], 'output' => API_OUTPUT_EXTEND, 'selectTemplates' => array('templateid', 'name'), 'editable' => true, 'sortfield' => $sortfield, 'limit' => $config['search_limit'] + 1));
    if ($data['hostPrototypes']) {
        order_result($data['hostPrototypes'], $sortfield, getPageSortOrder());
    }
    $data['paging'] = getPagingLine($data['hostPrototypes'], array('hostid'), array('parent_discoveryid' => get_request('parent_discoveryid')));
    // fetch templates linked to the prototypes
    $templateIds = array();
    foreach ($data['hostPrototypes'] as $hostPrototype) {
        $templateIds = array_merge($templateIds, zbx_objectValues($hostPrototype['templates'], 'templateid'));
    }
    $templateIds = array_unique($templateIds);
    $linkedTemplates = API::Template()->get(array('templateids' => $templateIds, 'selectParentTemplates' => array('hostid', 'name')));
    $data['linkedTemplates'] = zbx_toHash($linkedTemplates, 'templateid');
    // fetch source templates and LLD rules
    $hostPrototypeSourceIds = getHostPrototypeSourceParentIds(zbx_objectValues($data['hostPrototypes'], 'hostid'));
    if ($hostPrototypeSourceIds) {
        $hostPrototypeSourceTemplates = DBfetchArrayAssoc(DBSelect('SELECT h.hostid,h2.name,h2.hostid AS parent_hostid' . ' FROM hosts h,host_discovery hd,items i,hosts h2' . ' WHERE h.hostid=hd.hostid' . ' AND hd.parent_itemid=i.itemid' . ' AND i.hostid=h2.hostid' . ' AND ' . dbConditionInt('h.hostid', $hostPrototypeSourceIds)), 'hostid');
        foreach ($data['hostPrototypes'] as &$hostPrototype) {
Example #14
0
    }
    // new operation
    if (!empty($data['new_operation'])) {
        if (!is_array($data['new_operation'])) {
            $data['new_operation'] = array('action' => 'create', 'operationtype' => 0, 'esc_period' => 0, 'esc_step_from' => 1, 'esc_step_to' => 1, 'evaltype' => 0);
        }
    }
    // render view
    $actionView = new CView('configuration.action.edit', $data);
    $actionView->render();
    $actionView->show();
} else {
    $data = array('eventsource' => getRequest('eventsource', CProfile::get('web.actionconf.eventsource', EVENT_SOURCE_TRIGGERS)), 'displayNodes' => is_array(get_current_nodeid()));
    $sortfield = getPageSortField('name');
    $data['actions'] = API::Action()->get(array('output' => API_OUTPUT_EXTEND, 'filter' => array('eventsource' => array($data['eventsource'])), 'selectConditions' => API_OUTPUT_EXTEND, 'selectOperations' => API_OUTPUT_EXTEND, 'editable' => true, 'sortfield' => $sortfield, 'limit' => $config['search_limit'] + 1));
    // sorting && paging
    order_result($data['actions'], $sortfield, getPageSortOrder());
    $data['paging'] = getPagingLine($data['actions'], array('actionid'));
    // nodes
    if ($data['displayNodes']) {
        foreach ($data['actions'] as &$action) {
            $action['nodename'] = get_node_name_by_elid($action['actionid'], true);
        }
        unset($action);
    }
    // render view
    $actionView = new CView('configuration.action.list', $data);
    $actionView->render();
    $actionView->show();
}
require_once dirname(__FILE__) . '/include/page_footer.php';
Example #15
0
     $options = array('editable' => true, 'output' => array('triggerid'), 'sortfield' => $sortfield, 'limit' => $config['search_limit'] + 1);
     if (empty($data['showdisabled'])) {
         $options['filter']['status'] = TRIGGER_STATUS_ENABLED;
     }
     if ($data['pageFilter']->hostid > 0) {
         $options['hostids'] = $data['pageFilter']->hostid;
     } elseif ($data['pageFilter']->groupid > 0) {
         $options['groupids'] = $data['pageFilter']->groupid;
     }
     $data['triggers'] = API::Trigger()->get($options);
 }
 $_REQUEST['hostid'] = get_request('hostid', $data['pageFilter']->hostid);
 // paging
 $data['paging'] = getPagingLine($data['triggers'], array('triggerid'), array('hostid' => $_REQUEST['hostid']));
 $data['triggers'] = API::Trigger()->get(array('triggerids' => zbx_objectValues($data['triggers'], 'triggerid'), 'output' => API_OUTPUT_EXTEND, 'selectHosts' => API_OUTPUT_EXTEND, 'selectItems' => array('itemid', 'hostid', 'key_', 'type', 'flags', 'status'), 'selectFunctions' => API_OUTPUT_EXTEND, 'selectDependencies' => API_OUTPUT_EXTEND, 'selectDiscoveryRule' => API_OUTPUT_EXTEND));
 order_result($data['triggers'], $sortfield, getPageSortOrder());
 // get real hosts
 $data['realHosts'] = getParentHostsByTriggers($data['triggers']);
 // determine, show or not column of errors
 $data['showErrorColumn'] = true;
 if ($data['hostid'] > 0) {
     $host = API::Host()->get(array('hostids' => $_REQUEST['hostid'], 'output' => array('status'), 'templated_hosts' => true, 'editable' => true));
     $host = reset($host);
     $data['showErrorColumn'] = !$host || $host['status'] != HOST_STATUS_TEMPLATE;
 }
 // nodes
 if ($data['displayNodes']) {
     foreach ($data['triggers'] as &$trigger) {
         $trigger['nodename'] = get_node_name_by_elid($trigger['triggerid'], true);
     }
     unset($trigger);
Example #16
0
/**
 * Get the sort and sort order parameters for the current page and save it into profiles.
 *
 * @param string $sort
 * @param string $sortorder
 *
 * @retur void
 */
function validate_sort_and_sortorder($sort = null, $sortorder = ZBX_SORT_UP)
{
    global $page;
    $_REQUEST['sort'] = getPageSortField($sort);
    $_REQUEST['sortorder'] = getPageSortOrder($sortorder);
    if (!is_null($_REQUEST['sort'])) {
        $_REQUEST['sort'] = preg_replace('/[^a-z\\.\\_]/i', '', $_REQUEST['sort']);
        CProfile::update('web.' . $page['file'] . '.sort', $_REQUEST['sort'], PROFILE_TYPE_STR);
    }
    if (!str_in_array($_REQUEST['sortorder'], array(ZBX_SORT_DOWN, ZBX_SORT_UP))) {
        $_REQUEST['sortorder'] = ZBX_SORT_UP;
    }
    CProfile::update('web.' . $page['file'] . '.sortorder', $_REQUEST['sortorder'], PROFILE_TYPE_STR);
}
    // get media types
    $options = array('output' => API_OUTPUT_EXTEND, 'preservekeys' => 1, 'editable' => true, 'limit' => $config['search_limit'] + 1);
    $data['mediatypes'] = API::Mediatype()->get($options);
    // get media types used in actions
    $options = array('mediatypeids' => zbx_objectValues($data['mediatypes'], 'mediatypeid'), 'output' => array('actionid', 'name'), 'preservekeys' => 1);
    $actions = API::Action()->get($options);
    foreach ($data['mediatypes'] as $number => $mediatype) {
        $data['mediatypes'][$number]['listOfActions'] = array();
        foreach ($actions as $actionid => $action) {
            if (!empty($action['mediatypeids'])) {
                foreach ($action['mediatypeids'] as $actionMediaTypeId) {
                    if ($mediatype['mediatypeid'] == $actionMediaTypeId) {
                        $data['mediatypes'][$number]['listOfActions'][$actionid] = array('actionid' => $actionid, 'name' => $action['name']);
                    }
                }
            }
        }
        $data['mediatypes'][$number]['usedInActions'] = !isset($mediatype['listOfActions']);
        // allow sort by mediatype name
        $data['mediatypes'][$number]['typeid'] = $data['mediatypes'][$number]['type'];
        $data['mediatypes'][$number]['type'] = media_type2str($data['mediatypes'][$number]['type']);
    }
    // sort data
    order_result($data['mediatypes'], getPageSortField('description'), getPageSortOrder());
    $data['paging'] = getPagingLine($data['mediatypes']);
    // render view
    $mediaTypeView = new CView('administration.mediatypes.list', $data);
    $mediaTypeView->render();
    $mediaTypeView->show();
}
require_once dirname(__FILE__) . '/include/page_footer.php';
} else {
    $data['pageFilter'] = $pageFilter;
    $data['showDisabled'] = $showDisabled;
    $data['showAllApps'] = $showAllApps;
    $data['db_apps'] = array();
    $db_app_result = DBselect('SELECT DISTINCT h.name AS hostname,a.*' . ' FROM applications a,hosts h' . ' WHERE a.hostid=h.hostid' . ($data['hostid'] > 0 ? ' AND h.hostid=' . $data['hostid'] : '') . ' AND ' . dbConditionInt('h.hostid', $pageFilter->hostsSelected ? array_keys($pageFilter->hosts) : array()));
    while ($db_app = DBfetch($db_app_result)) {
        $db_app['scenarios_cnt'] = 0;
        $data['db_apps'][$db_app['applicationid']] = $db_app;
    }
    // get http tests
    $data['db_httptests'] = array();
    $dbHttpTests_result = DBselect('SELECT wt.*,a.name AS application,h.name AS hostname,h.hostid' . ' FROM httptest wt,applications a,hosts h' . ' WHERE wt.applicationid=a.applicationid' . ' AND a.hostid=h.hostid' . ' AND ' . dbConditionInt('a.applicationid', array_keys($data['db_apps'])) . ($showDisabled == 0 ? ' AND wt.status=' . HTTPTEST_STATUS_ACTIVE : ''));
    while ($httptest_data = DBfetch($dbHttpTests_result)) {
        $data['db_apps'][$httptest_data['applicationid']]['scenarios_cnt']++;
        $httptest_data['step_count'] = null;
        $data['db_httptests'][$httptest_data['httptestid']] = $httptest_data;
    }
    // get http steps
    $httpstep_res = DBselect('SELECT hs.httptestid,COUNT(hs.httpstepid) AS cnt' . ' FROM httpstep hs' . ' WHERE ' . dbConditionInt('hs.httptestid', array_keys($data['db_httptests'])) . ' GROUP BY hs.httptestid');
    while ($step_count = DBfetch($httpstep_res)) {
        $data['db_httptests'][$step_count['httptestid']]['step_count'] = $step_count['cnt'];
    }
    order_result($data['db_httptests'], getPageSortField('host'), getPageSortOrder());
    $data['paging'] = getPagingLine($data['db_httptests']);
    // render view
    $httpView = new CView('configuration.httpconf.list', $data);
    $httpView->render();
    $httpView->show();
}
require_once dirname(__FILE__) . '/include/page_footer.php';
Example #19
0
 */
$data = array('fullscreen' => $_REQUEST['fullscreen'], 'druleid' => get_request('druleid', 0), 'sort' => get_request('sort'), 'sortorder' => get_request('sortorder'), 'services' => array(), 'drules' => array());
$data['pageFilter'] = new CPageFilter(array('drules' => array('filter' => array('status' => DRULE_STATUS_ACTIVE)), 'druleid' => get_request('druleid', null)));
if ($data['pageFilter']->drulesSelected) {
    // discovery rules
    $options = array('filter' => array('status' => DRULE_STATUS_ACTIVE), 'selectDHosts' => API_OUTPUT_EXTEND, 'output' => API_OUTPUT_EXTEND);
    if ($data['pageFilter']->druleid > 0) {
        $options['druleids'] = $data['pageFilter']->druleid;
        // set selected discovery rule id
    }
    $data['drules'] = API::DRule()->get($options);
    if (!empty($data['drules'])) {
        order_result($data['drules'], 'name');
    }
    // discovery services
    $options = array('selectHosts' => array('hostid', 'name', 'status'), 'output' => API_OUTPUT_EXTEND, 'sortfield' => getPageSortField('ip'), 'sortorder' => getPageSortOrder(), 'limitSelects' => 1);
    if (!empty($data['druleid'])) {
        $options['druleids'] = $data['druleid'];
    } else {
        $options['druleids'] = zbx_objectValues($data['drules'], 'druleid');
    }
    $dservices = API::DService()->get($options);
    // user macros
    $data['macros'] = API::UserMacro()->get(array('output' => API_OUTPUT_EXTEND, 'globalmacro' => true));
    $data['macros'] = zbx_toHash($data['macros'], 'macro');
    // services
    $data['services'] = array();
    foreach ($dservices as $dservice) {
        $key_ = $dservice['key_'];
        if (!zbx_empty($key_)) {
            if (isset($data['macros'][$key_])) {
Example #20
0
$m_form->setName('tr_status');
$m_form->addVar('backurl', $page['file']);
$admin_links = $USER_DETAILS['type'] == USER_TYPE_ZABBIX_ADMIN || $USER_DETAILS['type'] == USER_TYPE_SUPER_ADMIN;
$show_event_col = $config['event_ack_enable'] && $_REQUEST['show_events'] != EVENTS_OPTION_NOEVENT;
$table = new CTableInfo();
$switcherName = 'trigger_switchers';
$header_cb = $show_event_col ? new CCheckBox('all_events', false, "checkAll('" . $m_form->GetName() . "','all_events','events');") : new CCheckBox('all_triggers', false, "checkAll('" . $m_form->GetName() . "','all_triggers', 'triggers');");
if ($show_events != EVENTS_OPTION_NOEVENT) {
    $whow_hide_all = new CDiv(SPACE, 'filterclosed');
    $whow_hide_all->setAttribute('id', $switcherName);
} else {
    $whow_hide_all = NULL;
}
$table->setHeader(array($whow_hide_all, $config['event_ack_enable'] ? $header_cb : null, make_sorting_header(S_SEVERITY, 'priority'), S_STATUS, make_sorting_header(S_LAST_CHANGE, 'lastchange'), S_AGE, $show_event_col ? S_DURATION : NULL, $config['event_ack_enable'] ? S_ACKNOWLEDGED : NULL, is_show_all_nodes() ? S_NODE : null, S_HOST, make_sorting_header(S_NAME, 'description'), S_COMMENTS));
$sortfield = getPageSortField('description');
$sortorder = getPageSortOrder();
$options = array('nodeids' => get_current_nodeid(), 'filter' => array(), 'monitored' => 1, 'output' => API_OUTPUT_EXTEND, 'skipDependent' => 1, 'sortfield' => $sortfield, 'sortorder' => $sortorder, 'limit' => $config['search_limit'] + 1);
// Filtering
if ($pageFilter->hostsSelected) {
    if ($pageFilter->hostid > 0) {
        $options['hostids'] = $pageFilter->hostid;
    } else {
        if ($pageFilter->groupid > 0) {
            $options['groupids'] = $pageFilter->groupid;
        }
    }
} else {
    $options['hostids'] = array();
}
if (!zbx_empty($_REQUEST['txt_select'])) {
    $options['search'] = array('description' => $_REQUEST['txt_select']);
Example #21
0
        $sqlWhere = whereDbNode('u.userid');
    }
    $data['users'] = DBfetchArray(DBselect('SELECT DISTINCT u.userid,u.alias,u.name,u.surname' . ' FROM users u' . $sqlFrom . $sqlWhere));
    order_result($data['users'], 'alias');
    // get user groups
    $data['usergroups'] = DBfetchArray(DBselect('SELECT ug.usrgrpid,ug.name' . ' FROM usrgrp ug' . whereDbNode('usrgrpid')));
    order_result($data['usergroups'], 'name');
    // render view
    $userGroupsView = new CView('administration.usergroups.edit', $data);
    $userGroupsView->render();
    $userGroupsView->show();
} else {
    $data = array('displayNodes' => is_array(get_current_nodeid()));
    $sortfield = getPageSortField('name');
    $data['usergroups'] = API::UserGroup()->get(array('output' => API_OUTPUT_EXTEND, 'selectUsers' => API_OUTPUT_EXTEND, 'sortfield' => $sortfield, 'limit' => $config['search_limit'] + 1));
    // sorting & paging
    order_result($data['usergroups'], $sortfield, getPageSortOrder());
    $data['paging'] = getPagingLine($data['usergroups'], array('usrgrpid'));
    // nodes
    if ($data['displayNodes']) {
        foreach ($data['usergroups'] as &$userGroup) {
            $userGroup['nodename'] = get_node_name_by_elid($userGroup['usrgrpid'], true);
        }
        unset($userGroup);
    }
    // render view
    $userGroupsView = new CView('administration.usergroups.list', $data);
    $userGroupsView->render();
    $userGroupsView->show();
}
require_once dirname(__FILE__) . '/include/page_footer.php';
Example #22
0
 if ($pageFilter->hostid > 0) {
     $options['hostids'] = $pageFilter->hostid;
 } elseif ($pageFilter->groupid > 0) {
     $options['groupids'] = $pageFilter->groupid;
 }
 $httpTests = API::HttpTest()->get($options);
 $paging = getPagingLine($httpTests);
 $httpTests = API::HttpTest()->get(array('httptestids' => zbx_objectValues($httpTests, 'httptestid'), 'preservekeys' => true, 'output' => API_OUTPUT_EXTEND, 'selectHosts' => array('name', 'status'), 'selectSteps' => API_OUTPUT_COUNT));
 foreach ($httpTests as &$httpTest) {
     $httpTest['host'] = reset($httpTest['hosts']);
     $httpTest['hostname'] = $httpTest['host']['name'];
     unset($httpTest['hosts']);
 }
 unset($httpTest);
 $httpTests = resolveHttpTestMacros($httpTests, true, false);
 order_result($httpTests, getPageSortField('name'), getPageSortOrder());
 // fetch the latest results of the web scenario
 $lastHttpTestData = Manager::HttpTest()->getLastData(array_keys($httpTests));
 foreach ($httpTests as $httpTest) {
     $lastData = isset($lastHttpTestData[$httpTest['httptestid']]) ? $lastHttpTestData[$httpTest['httptestid']] : null;
     // test has history data
     if ($lastData) {
         $lastcheck = zbx_date2str(_('d M Y H:i:s'), $lastData['lastcheck']);
         if ($lastData['lastfailedstep'] != 0) {
             $step_data = get_httpstep_by_no($httpTest['httptestid'], $lastData['lastfailedstep']);
             $status['msg'] = _s('Step "%1$s" [%2$s of %3$s] failed: %4$s', $step_data['name'], $lastData['lastfailedstep'], $httpTest['steps'], $lastData['error']);
             $status['style'] = 'disabled';
         } else {
             $status['msg'] = _('OK');
             $status['style'] = 'enabled';
         }
Example #23
0
        } elseif ($data['pageFilter']->groupid > 0) {
            $options['groupids'] = $data['pageFilter']->groupid;
        }
        $httpTests = API::HttpTest()->get($options);
        $dbHttpTests = DBselect('SELECT ht.httptestid,ht.name,ht.delay,ht.status,ht.hostid,ht.templateid,h.name AS hostname' . ' FROM httptest ht' . ' INNER JOIN hosts h ON h.hostid=ht.hostid' . ' WHERE ' . dbConditionInt('ht.httptestid', zbx_objectValues($httpTests, 'httptestid')));
        $httpTests = array();
        while ($dbHttpTest = DBfetch($dbHttpTests)) {
            $httpTests[$dbHttpTest['httptestid']] = $dbHttpTest;
        }
        order_result($httpTests, $sortfield, getPageSortOrder());
        $data['paging'] = getPagingLine($httpTests, array('httptestid'));
        $dbHttpSteps = DBselect('SELECT hs.httptestid,COUNT(*) AS stepscnt' . ' FROM httpstep hs' . ' WHERE ' . dbConditionInt('hs.httptestid', zbx_objectValues($httpTests, 'httptestid')) . ' GROUP BY hs.httptestid');
        while ($dbHttpStep = DBfetch($dbHttpSteps)) {
            $httpTests[$dbHttpStep['httptestid']]['stepscnt'] = $dbHttpStep['stepscnt'];
        }
        order_result($httpTests, $sortfield, getPageSortOrder());
        $data['parentTemplates'] = getHttpTestsParentTemplates($httpTests);
        $data['httpTests'] = $httpTests;
    }
    // nodes
    if ($data['displayNodes']) {
        foreach ($data['httpTests'] as &$httpTest) {
            $httpTest['nodename'] = get_node_name_by_elid($httpTest['httptestid'], true);
        }
        unset($httpTest);
    }
    // render view
    $httpView = new CView('configuration.httpconf.list', $data);
    $httpView->render();
    $httpView->show();
}