本文整理汇总了PHP中API::DHost方法的典型用法代码示例。如果您正苦于以下问题:PHP API::DHost方法的具体用法?PHP API::DHost怎么用?PHP API::DHost使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类API
的用法示例。
在下文中一共展示了API::DHost方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: get
/**
* Get Service data
*
* @param _array $options
* @param array $options['nodeids'] Node IDs
* @param array $options['groupids'] ServiceGroup IDs
* @param array $options['hostids'] Service IDs
* @param boolean $options['monitored_hosts'] only monitored Services
* @param boolean $options['templated_hosts'] include templates in result
* @param boolean $options['with_items'] only with items
* @param boolean $options['with_historical_items'] only with historical items
* @param boolean $options['with_triggers'] only with triggers
* @param boolean $options['with_httptests'] only with http tests
* @param boolean $options['with_graphs'] only with graphs
* @param boolean $options['editable'] only with read-write permission. Ignored for SuperAdmins
* @param boolean $options['selectGroups'] select ServiceGroups
* @param boolean $options['selectTemplates'] select Templates
* @param boolean $options['selectItems'] select Items
* @param boolean $options['selectTriggers'] select Triggers
* @param boolean $options['selectGraphs'] select Graphs
* @param boolean $options['selectApplications'] select Applications
* @param boolean $options['selectMacros'] select Macros
* @param int $options['count'] count Services, returned column name is rowscount
* @param string $options['pattern'] search hosts by pattern in Service name
* @param string $options['extendPattern'] search hosts by pattern in Service name, ip and DNS
* @param int $options['limit'] limit selection
* @param string $options['sortfield'] field to sort by
* @param string $options['sortorder'] sort order
* @return array|boolean Service data as array or false if error
*/
public function get($options = array())
{
$result = array();
$nodeCheck = false;
$userType = self::$userData['type'];
// allowed columns for sorting
$sortColumns = array('dserviceid', 'dhostid', 'ip');
// allowed output options for [ select_* ] params
$subselectsAllowedOutputs = array(API_OUTPUT_REFER, API_OUTPUT_EXTEND, API_OUTPUT_CUSTOM);
$sqlParts = array('select' => array('dservices' => 'ds.dserviceid'), 'from' => array('dservices' => 'dservices ds'), 'where' => array(), 'group' => array(), 'order' => array(), 'limit' => null);
$defOptions = array('nodeids' => null, 'dserviceids' => null, 'dhostids' => null, 'dcheckids' => null, 'druleids' => null, 'editable' => null, 'nopermissions' => null, 'filter' => null, 'search' => null, 'searchByAny' => null, 'startSearch' => null, 'excludeSearch' => null, 'searchWildcardsEnabled' => null, 'output' => API_OUTPUT_REFER, 'selectDRules' => null, 'selectDHosts' => null, 'selectDChecks' => null, 'selectHosts' => null, 'countOutput' => null, 'groupCount' => null, 'preservekeys' => null, 'sortfield' => '', 'sortorder' => '', 'limit' => null, 'limitSelects' => null);
$options = zbx_array_merge($defOptions, $options);
if (is_array($options['output'])) {
unset($sqlParts['select']['dservices']);
$dbTable = DB::getSchema('dservices');
foreach ($options['output'] as $field) {
if (isset($dbTable['fields'][$field])) {
$sqlParts['select'][$field] = 's.' . $field;
}
}
$options['output'] = API_OUTPUT_CUSTOM;
}
// editable + PERMISSION CHECK
if (USER_TYPE_SUPER_ADMIN == $userType) {
} elseif (is_null($options['editable']) && self::$userData['type'] == USER_TYPE_ZABBIX_ADMIN) {
} elseif (!is_null($options['editable']) && self::$userData['type'] != USER_TYPE_SUPER_ADMIN) {
return array();
}
// nodeids
$nodeids = !is_null($options['nodeids']) ? $options['nodeids'] : get_current_nodeid();
// dserviceids
if (!is_null($options['dserviceids'])) {
zbx_value2array($options['dserviceids']);
$sqlParts['where']['dserviceid'] = dbConditionInt('ds.dserviceid', $options['dserviceids']);
if (!$nodeCheck) {
$nodeCheck = true;
$sqlParts['where'][] = DBin_node('ds.dserviceid', $nodeids);
}
}
// dhostids
if (!is_null($options['dhostids'])) {
zbx_value2array($options['dhostids']);
if ($options['output'] != API_OUTPUT_SHORTEN) {
$sqlParts['select']['dhostid'] = 'ds.dhostid';
}
$sqlParts['where'][] = dbConditionInt('ds.dhostid', $options['dhostids']);
if (!is_null($options['groupCount'])) {
$sqlParts['group']['dhostid'] = 'ds.dhostid';
}
if (!$nodeCheck) {
$nodeCheck = true;
$sqlParts['where'][] = DBin_node('ds.dhostid', $nodeids);
}
}
// dcheckids
if (!is_null($options['dcheckids'])) {
zbx_value2array($options['dcheckids']);
if ($options['output'] != API_OUTPUT_SHORTEN) {
$sqlParts['select']['dcheckid'] = 'dc.dcheckid';
}
$sqlParts['from']['dhosts'] = 'dhosts dh';
$sqlParts['from']['dchecks'] = 'dchecks dc';
$sqlParts['where'][] = dbConditionInt('dc.dcheckid', $options['dcheckids']);
$sqlParts['where']['dhds'] = 'dh.hostid=ds.hostid';
$sqlParts['where']['dcdh'] = 'dc.druleid=dh.druleid';
if (!is_null($options['groupCount'])) {
$sqlParts['group']['dcheckid'] = 'dc.dcheckid';
}
}
// druleids
//.........这里部分代码省略.........
示例2: addRelatedObjects
protected function addRelatedObjects(array $options, array $result)
{
$result = parent::addRelatedObjects($options, $result);
$eventIds = array_keys($result);
// adding hosts
if ($options['selectHosts'] !== null && $options['selectHosts'] != API_OUTPUT_COUNT) {
// trigger events
if ($options['object'] == EVENT_OBJECT_TRIGGER) {
$query = DBselect('SELECT e.eventid,i.hostid' . ' FROM events e,functions f,items i' . ' WHERE ' . dbConditionInt('e.eventid', $eventIds) . ' AND e.objectid=f.triggerid' . ' AND f.itemid=i.itemid' . ' AND e.object=' . zbx_dbstr($options['object']) . ' AND e.source=' . zbx_dbstr($options['source']));
} elseif ($options['object'] == EVENT_OBJECT_ITEM || $options['object'] == EVENT_OBJECT_LLDRULE) {
$query = DBselect('SELECT e.eventid,i.hostid' . ' FROM events e,items i' . ' WHERE ' . dbConditionInt('e.eventid', $eventIds) . ' AND e.objectid=i.itemid' . ' AND e.object=' . zbx_dbstr($options['object']) . ' AND e.source=' . zbx_dbstr($options['source']));
}
$relationMap = new CRelationMap();
while ($relation = DBfetch($query)) {
$relationMap->addRelation($relation['eventid'], $relation['hostid']);
}
$hosts = API::Host()->get(array('output' => $options['selectHosts'], 'hostids' => $relationMap->getRelatedIds(), 'nopermissions' => true, 'preservekeys' => true));
$result = $relationMap->mapMany($result, $hosts, 'hosts');
}
// adding the related object
if ($options['selectRelatedObject'] !== null && $options['selectRelatedObject'] != API_OUTPUT_COUNT && $options['object'] != EVENT_OBJECT_AUTOREGHOST) {
$relationMap = new CRelationMap();
foreach ($result as $event) {
$relationMap->addRelation($event['eventid'], $event['objectid']);
}
switch ($options['object']) {
case EVENT_OBJECT_TRIGGER:
$api = API::Trigger();
break;
case EVENT_OBJECT_DHOST:
$api = API::DHost();
break;
case EVENT_OBJECT_DSERVICE:
$api = API::DService();
break;
case EVENT_OBJECT_ITEM:
$api = API::Item();
break;
case EVENT_OBJECT_LLDRULE:
$api = API::DiscoveryRule();
break;
}
$objects = $api->get(array('output' => $options['selectRelatedObject'], $api->pkOption() => $relationMap->getRelatedIds(), 'nopermissions' => true, 'preservekeys' => true));
$result = $relationMap->mapOne($result, $objects, 'relatedObject');
}
// adding alerts
if ($options['select_alerts'] !== null && $options['select_alerts'] != API_OUTPUT_COUNT) {
$relationMap = $this->createRelationMap($result, 'eventid', 'alertid', 'alerts');
$alerts = API::Alert()->get(array('output' => $options['select_alerts'], 'selectMediatypes' => API_OUTPUT_EXTEND, 'alertids' => $relationMap->getRelatedIds(), 'nopermissions' => true, 'preservekeys' => true, 'sortfield' => 'clock', 'sortorder' => ZBX_SORT_DOWN));
$result = $relationMap->mapMany($result, $alerts, 'alerts');
}
// adding acknowledges
if ($options['select_acknowledges'] !== null) {
if ($options['select_acknowledges'] != API_OUTPUT_COUNT) {
// create the base query
$sqlParts = API::getApiService()->createSelectQueryParts('acknowledges', 'a', array('output' => $this->outputExtend($options['select_acknowledges'], array('acknowledgeid', 'eventid', 'clock')), 'filter' => array('eventid' => $eventIds)));
$sqlParts['order'][] = 'a.clock DESC';
// if the user data is requested via extended output or specified fields, join the users table
$userFields = array('alias', 'name', 'surname');
$requestUserData = array();
foreach ($userFields as $userField) {
if ($this->outputIsRequested($userField, $options['select_acknowledges'])) {
$requestUserData[] = $userField;
}
}
if ($requestUserData) {
foreach ($requestUserData as $userField) {
$sqlParts = $this->addQuerySelect('u.' . $userField, $sqlParts);
}
$sqlParts['from'][] = 'users u';
$sqlParts['where'][] = 'a.userid=u.userid';
}
$acknowledges = DBFetchArrayAssoc(DBselect($this->createSelectQueryFromParts($sqlParts)), 'acknowledgeid');
$relationMap = $this->createRelationMap($acknowledges, 'eventid', 'acknowledgeid');
$acknowledges = $this->unsetExtraFields($acknowledges, array('eventid', 'acknowledgeid', 'clock'), $options['select_acknowledges']);
$result = $relationMap->mapMany($result, $acknowledges, 'acknowledges');
} else {
$acknowledges = DBFetchArrayAssoc(DBselect('SELECT COUNT(a.acknowledgeid) AS rowscount,a.eventid' . ' FROM acknowledges a' . ' WHERE ' . dbConditionInt('a.eventid', $eventIds) . ' GROUP BY a.eventid'), 'eventid');
foreach ($result as &$event) {
if (isset($acknowledges[$event['eventid']])) {
$event['acknowledges'] = $acknowledges[$event['eventid']]['rowscount'];
} else {
$event['acknowledges'] = 0;
}
}
unset($event);
}
}
return $result;
}
示例3: get
/**
* Process screen.
*
* @return CDiv (screen inside container)
*/
public function get()
{
$this->dataId = 'discovery';
$sort_field = $this->data['sort'];
$sort_order = $this->data['sortorder'];
$druleid = $this->data['druleid'];
// discovery rules
$options = ['output' => ['druleid', 'name'], 'selectDHosts' => ['dhostid', 'status', 'lastup', 'lastdown'], 'filter' => ['status' => DRULE_STATUS_ACTIVE]];
if ($druleid > 0) {
$options['druleids'] = $druleid;
// set selected discovery rule id
}
$drules = API::DRule()->get($options);
if ($drules) {
order_result($drules, 'name');
}
// discovery services
$options = ['selectHosts' => ['hostid', 'name', 'status'], 'output' => ['dserviceid', 'type', 'key_', 'port', 'status', 'lastup', 'lastdown', 'ip', 'dns'], 'sortfield' => $sort_field, 'sortorder' => $sort_order, 'limitSelects' => 1];
if ($druleid > 0) {
$options['druleids'] = $druleid;
} else {
$options['druleids'] = zbx_objectValues($drules, 'druleid');
}
$dservices = API::DService()->get($options);
// user macros
$macros = API::UserMacro()->get(['output' => ['macro', 'value'], 'globalmacro' => true]);
$macros = zbx_toHash($macros, 'macro');
// services
$services = [];
foreach ($dservices as $dservice) {
$key_ = $dservice['key_'];
if ($key_ !== '') {
if (array_key_exists($key_, $macros)) {
$key_ = $macros[$key_]['value'];
}
$key_ = ': ' . $key_;
}
$service_name = discovery_check_type2str($dservice['type']) . discovery_port2str($dservice['type'], $dservice['port']) . $key_;
$services[$service_name] = 1;
}
ksort($services);
// discovery services to hash
$dservices = zbx_toHash($dservices, 'dserviceid');
// discovery hosts
$dhosts = API::DHost()->get(['druleids' => zbx_objectValues($drules, 'druleid'), 'selectDServices' => ['dserviceid', 'ip', 'dns', 'type', 'status', 'key_'], 'output' => ['dhostid', 'lastdown', 'lastup', 'druleid']]);
$dhosts = zbx_toHash($dhosts, 'dhostid');
$header = [make_sorting_header(_('Discovered device'), 'ip', $sort_field, $sort_order, 'zabbix.php?action=discovery.view'), _('Monitored host'), _('Uptime') . '/' . _('Downtime')];
foreach ($services as $name => $foo) {
$header[] = (new CColHeader($name))->addClass('vertical_rotation');
}
// create table
$table = (new CTableInfo())->makeVerticalRotation()->setHeader($header);
foreach ($drules as $drule) {
$discovery_info = [];
foreach ($drule['dhosts'] as $dhost) {
if ($dhost['status'] == DHOST_STATUS_DISABLED) {
$hclass = 'disabled';
$htime = $dhost['lastdown'];
} else {
$hclass = 'enabled';
$htime = $dhost['lastup'];
}
// $primary_ip stores the primary host ip of the dhost
$primary_ip = '';
foreach ($dhosts[$dhost['dhostid']]['dservices'] as $dservice) {
$dservice = $dservices[$dservice['dserviceid']];
$hostName = '';
$host = reset($dservices[$dservice['dserviceid']]['hosts']);
if (!is_null($host)) {
$hostName = $host['name'];
}
if ($primary_ip !== '') {
if ($primary_ip === $dservice['ip']) {
$htype = 'primary';
} else {
$htype = 'slave';
}
} else {
$primary_ip = $dservice['ip'];
$htype = 'primary';
}
if (!array_key_exists($dservice['ip'], $discovery_info)) {
$discovery_info[$dservice['ip']] = ['ip' => $dservice['ip'], 'dns' => $dservice['dns'], 'type' => $htype, 'class' => $hclass, 'host' => $hostName, 'time' => $htime];
}
if ($dservice['status'] == DSVC_STATUS_DISABLED) {
$class = ZBX_STYLE_INACTIVE_BG;
$time = 'lastdown';
} else {
$class = ZBX_STYLE_ACTIVE_BG;
$time = 'lastup';
}
$key_ = $dservice['key_'];
if ($key_ !== '') {
if (array_key_exists($key_, $macros)) {
$key_ = $macros[$key_]['value'];
//.........这里部分代码省略.........
示例4: zbx_objectValues
$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_])) {
$key_ = $data['macros'][$key_]['value'];
}
$key_ = ': ' . $key_;
}
$serviceName = discovery_check_type2str($dservice['type']) . discovery_port2str($dservice['type'], $dservice['port']) . $key_;
$data['services'][$serviceName] = 1;
}
ksort($data['services']);
// discovery services to hash
$data['dservices'] = zbx_toHash($dservices, 'dserviceid');
// discovery hosts
$data['dhosts'] = API::DHost()->get(array('druleids' => zbx_objectValues($data['drules'], 'druleid'), 'selectDServices' => array('dserviceid', 'ip', 'dns', 'type', 'status', 'key_'), 'output' => array('dhostid', 'lastdown', 'lastup', 'druleid')));
$data['dhosts'] = zbx_toHash($data['dhosts'], 'dhostid');
}
// render view
$discoveryView = new CView('monitoring.discovery', $data);
$discoveryView->render();
$discoveryView->show();
require_once dirname(__FILE__) . '/include/page_footer.php';
示例5: get
/**
* Get Host data
*
* @param array $options
* @param array $options['nodeids'] Node IDs
* @param array $options['groupids'] HostGroup IDs
* @param array $options['hostids'] Host IDs
* @param boolean $options['monitored_hosts'] only monitored Hosts
* @param boolean $options['templated_hosts'] include templates in result
* @param boolean $options['with_items'] only with items
* @param boolean $options['with_monitored_items'] only with monitored items
* @param boolean $options['with_historical_items'] only with historical items
* @param boolean $options['with_triggers'] only with triggers
* @param boolean $options['with_monitored_triggers'] only with monitored triggers
* @param boolean $options['with_httptests'] only with http tests
* @param boolean $options['with_monitored_httptests'] only with monitored http tests
* @param boolean $options['with_graphs'] only with graphs
* @param boolean $options['editable'] only with read-write permission. Ignored for SuperAdmins
* @param boolean $options['selectGroups'] select HostGroups
* @param boolean $options['selectItems'] select Items
* @param boolean $options['selectTriggers'] select Triggers
* @param boolean $options['selectGraphs'] select Graphs
* @param boolean $options['selectApplications'] select Applications
* @param boolean $options['selectMacros'] select Macros
* @param boolean|array $options['selectInventory'] select Inventory
* @param boolean $options['withInventory'] select only hosts with inventory
* @param int $options['count'] count Hosts, returned column name is rowscount
* @param string $options['pattern'] search hosts by pattern in Host name
* @param string $options['extendPattern'] search hosts by pattern in Host name, ip and DNS
* @param int $options['limit'] limit selection
* @param string $options['sortfield'] field to sort by
* @param string $options['sortorder'] sort order
*
* @return array|boolean Host data as array or false if error
*/
public function get($options = array())
{
$result = array();
$userType = self::$userData['type'];
$userid = self::$userData['userid'];
// allowed columns for sorting
$sortColumns = array('hostid', 'host', 'name', 'status');
// allowed output options for [ select_* ] params
$subselectsAllowedOutputs = array(API_OUTPUT_REFER, API_OUTPUT_EXTEND, API_OUTPUT_CUSTOM);
$sqlParts = array('select' => array('hosts' => 'h.hostid'), 'from' => array('hosts' => 'hosts h'), 'where' => array(), 'group' => array(), 'order' => array(), 'limit' => null);
$defOptions = array('nodeids' => null, 'groupids' => null, 'hostids' => null, 'proxyids' => null, 'templateids' => null, 'interfaceids' => null, 'itemids' => null, 'triggerids' => null, 'maintenanceids' => null, 'graphids' => null, 'applicationids' => null, 'dhostids' => null, 'dserviceids' => null, 'httptestids' => null, 'monitored_hosts' => null, 'templated_hosts' => null, 'proxy_hosts' => null, 'with_items' => null, 'with_monitored_items' => null, 'with_historical_items' => null, 'with_simple_graph_items' => null, 'with_triggers' => null, 'with_monitored_triggers' => null, 'with_httptests' => null, 'with_monitored_httptests' => null, 'with_graphs' => null, 'with_applications' => null, 'withInventory' => null, 'editable' => null, 'nopermissions' => null, 'filter' => null, 'search' => null, 'searchByAny' => null, 'startSearch' => null, 'excludeSearch' => null, 'searchWildcardsEnabled' => null, 'output' => API_OUTPUT_REFER, 'selectGroups' => null, 'selectParentTemplates' => null, 'selectItems' => null, 'selectDiscoveries' => null, 'selectTriggers' => null, 'selectGraphs' => null, 'selectDHosts' => null, 'selectDServices' => null, 'selectApplications' => null, 'selectMacros' => null, 'selectScreens' => null, 'selectInterfaces' => null, 'selectInventory' => null, 'countOutput' => null, 'groupCount' => null, 'preservekeys' => null, 'sortfield' => '', 'sortorder' => '', 'limit' => null, 'limitSelects' => null);
$options = zbx_array_merge($defOptions, $options);
if (is_array($options['output'])) {
unset($sqlParts['select']['hosts']);
$dbTable = DB::getSchema('hosts');
$sqlParts['select']['hostid'] = 'h.hostid';
foreach ($options['output'] as $field) {
if (isset($dbTable['fields'][$field])) {
$sqlParts['select'][$field] = 'h.' . $field;
}
}
$options['output'] = API_OUTPUT_CUSTOM;
}
// editable + PERMISSION CHECK
if ($userType != USER_TYPE_SUPER_ADMIN && !$options['nopermissions']) {
$permission = $options['editable'] ? PERM_READ_WRITE : PERM_READ_ONLY;
$userGroups = getUserGroupsByUserId($userid);
$sqlParts['where'][] = 'EXISTS (' . 'SELECT NULL' . ' FROM hosts_groups hgg' . ' JOIN rights r' . ' ON r.id=hgg.groupid' . ' AND ' . dbConditionInt('r.groupid', $userGroups) . ' WHERE h.hostid=hgg.hostid' . ' GROUP BY hgg.hostid' . ' HAVING MIN(r.permission)>=' . $permission . ')';
}
// hostids
if (!is_null($options['hostids'])) {
zbx_value2array($options['hostids']);
$sqlParts['where']['hostid'] = dbConditionInt('h.hostid', $options['hostids']);
}
// groupids
if (!is_null($options['groupids'])) {
zbx_value2array($options['groupids']);
if ($options['output'] != API_OUTPUT_SHORTEN) {
$sqlParts['select']['groupid'] = 'hg.groupid';
}
$sqlParts['from']['hosts_groups'] = 'hosts_groups hg';
$sqlParts['where'][] = dbConditionInt('hg.groupid', $options['groupids']);
$sqlParts['where']['hgh'] = 'hg.hostid=h.hostid';
if (!is_null($options['groupCount'])) {
$sqlParts['group']['groupid'] = 'hg.groupid';
}
}
// proxyids
if (!is_null($options['proxyids'])) {
zbx_value2array($options['proxyids']);
if ($options['output'] != API_OUTPUT_SHORTEN) {
$sqlParts['select']['proxy_hostid'] = 'h.proxy_hostid';
}
$sqlParts['where'][] = dbConditionInt('h.proxy_hostid', $options['proxyids']);
}
// templateids
if (!is_null($options['templateids'])) {
zbx_value2array($options['templateids']);
if ($options['output'] != API_OUTPUT_SHORTEN) {
$sqlParts['select']['templateid'] = 'ht.templateid';
}
$sqlParts['from']['hosts_templates'] = 'hosts_templates ht';
$sqlParts['where'][] = dbConditionInt('ht.templateid', $options['templateids']);
$sqlParts['where']['hht'] = 'h.hostid=ht.hostid';
if (!is_null($options['groupCount'])) {
//.........这里部分代码省略.........
示例6: addRelatedObjects
protected function addRelatedObjects(array $options, array $result)
{
$result = parent::addRelatedObjects($options, $result);
$druleids = array_keys($result);
// Adding Discovery Checks
if (!is_null($options['selectDChecks'])) {
if ($options['selectDChecks'] != API_OUTPUT_COUNT) {
$relationMap = $this->createRelationMap($result, 'druleid', 'dcheckid', 'dchecks');
$dchecks = API::DCheck()->get(array('output' => $options['selectDChecks'], 'dcheckids' => $relationMap->getRelatedIds(), 'nopermissions' => true, 'preservekeys' => true));
if (!is_null($options['limitSelects'])) {
order_result($dchecks, 'dcheckid');
}
$result = $relationMap->mapMany($result, $dchecks, 'dchecks', $options['limitSelects']);
} else {
$dchecks = API::DCheck()->get(array('druleids' => $druleids, 'nopermissions' => true, 'countOutput' => true, 'groupCount' => true));
$dchecks = zbx_toHash($dchecks, 'druleid');
foreach ($result as $druleid => $drule) {
if (isset($dchecks[$druleid])) {
$result[$druleid]['dchecks'] = $dchecks[$druleid]['rowscount'];
} else {
$result[$druleid]['dchecks'] = 0;
}
}
}
}
// Adding Discovery Hosts
if (!is_null($options['selectDHosts'])) {
if ($options['selectDHosts'] != API_OUTPUT_COUNT) {
$relationMap = $this->createRelationMap($result, 'druleid', 'dhostid', 'dhosts');
$dhosts = API::DHost()->get(array('output' => $options['selectDHosts'], 'dhostids' => $relationMap->getRelatedIds(), 'preservekeys' => true));
if (!is_null($options['limitSelects'])) {
order_result($dhosts, 'dhostid');
}
$result = $relationMap->mapMany($result, $dhosts, 'dhosts', $options['limitSelects']);
} else {
$dhosts = API::DHost()->get(array('druleids' => $druleids, 'countOutput' => true, 'groupCount' => true));
$dhosts = zbx_toHash($dhosts, 'druleid');
foreach ($result as $druleid => $drule) {
if (isset($dhosts[$druleid])) {
$result[$druleid]['dhosts'] = $dhosts[$druleid]['rowscount'];
} else {
$result[$druleid]['dhosts'] = 0;
}
}
}
}
return $result;
}
示例7: addRelatedObjects
protected function addRelatedObjects(array $options, array $result)
{
$result = parent::addRelatedObjects($options, $result);
$dserviceIds = array_keys($result);
// select_drules
if ($options['selectDRules'] !== null && $options['selectDRules'] != API_OUTPUT_COUNT) {
$relationMap = new CRelationMap();
// discovered items
$dbRules = DBselect('SELECT ds.dserviceid,dh.druleid' . ' FROM dservices ds,dhosts dh' . ' WHERE ' . dbConditionInt('ds.dserviceid', $dserviceIds) . ' AND ds.dhostid=dh.dhostid');
while ($rule = DBfetch($dbRules)) {
$relationMap->addRelation($rule['dserviceid'], $rule['druleid']);
}
$drules = API::DRule()->get(['output' => $options['selectDRules'], 'druleids' => $relationMap->getRelatedIds(), 'preservekeys' => true]);
if (!is_null($options['limitSelects'])) {
order_result($drules, 'name');
}
$result = $relationMap->mapMany($result, $drules, 'drules');
}
// selectDHosts
if ($options['selectDHosts'] !== null && $options['selectDHosts'] != API_OUTPUT_COUNT) {
$relationMap = $this->createRelationMap($result, 'dserviceid', 'dhostid');
$dhosts = API::DHost()->get(['output' => $options['selectDHosts'], 'dhosts' => $relationMap->getRelatedIds(), 'preservekeys' => true]);
if (!is_null($options['limitSelects'])) {
order_result($dhosts, 'dhostid');
}
$result = $relationMap->mapMany($result, $dhosts, 'dhosts', $options['limitSelects']);
}
// selectHosts
if (!is_null($options['selectHosts'])) {
if ($options['selectHosts'] != API_OUTPUT_COUNT) {
$relationMap = new CRelationMap();
// discovered items
$dbRules = DBselect('SELECT ds.dserviceid,i.hostid' . ' FROM dservices ds,interface i' . ' WHERE ' . dbConditionInt('ds.dserviceid', $dserviceIds) . ' AND ds.ip=i.ip');
while ($rule = DBfetch($dbRules)) {
$relationMap->addRelation($rule['dserviceid'], $rule['hostid']);
}
$hosts = API::Host()->get(['output' => $options['selectHosts'], 'hostids' => $relationMap->getRelatedIds(), 'preservekeys' => true, 'sortfield' => 'status']);
if (!is_null($options['limitSelects'])) {
order_result($hosts, 'hostid');
}
$result = $relationMap->mapMany($result, $hosts, 'hosts', $options['limitSelects']);
} else {
$hosts = API::Host()->get(['dserviceids' => $dserviceIds, 'countOutput' => true, 'groupCount' => true]);
$hosts = zbx_toHash($hosts, 'hostid');
foreach ($result as $dserviceid => $dservice) {
if (isset($hosts[$dserviceid])) {
$result[$dserviceid]['hosts'] = $hosts[$dserviceid]['rowscount'];
} else {
$result[$dserviceid]['hosts'] = 0;
}
}
}
}
return $result;
}
示例8: zbx_objectValues
$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_])) {
$key_ = $data['macros'][$key_]['value'];
}
$key_ = ': ' . $key_;
}
$serviceName = discovery_check_type2str($dservice['type']) . discovery_port2str($dservice['type'], $dservice['port']) . $key_;
$data['services'][$serviceName] = 1;
}
ksort($data['services']);
// discovery services to hash
$data['dservices'] = zbx_toHash($dservices, 'dserviceid');
// discovery hosts
$data['dhosts'] = API::DHost()->get(array('druleids' => zbx_objectValues($data['drules'], 'druleid'), 'selectDServices' => API_OUTPUT_REFER, 'output' => API_OUTPUT_REFER));
$data['dhosts'] = zbx_toHash($data['dhosts'], 'dhostid');
}
// render view
$discoveryView = new CView('monitoring.discovery', $data);
$discoveryView->render();
$discoveryView->show();
require_once dirname(__FILE__) . '/include/page_footer.php';