Example #1
0
function get_service_children($serviceid, $soft = 0)
{
    $children = [];
    $result = DBselect('SELECT sl.servicedownid' . ' FROM services_links sl' . ' WHERE sl.serviceupid=' . zbx_dbstr($serviceid) . ($soft ? '' : ' AND sl.soft=0'));
    while ($row = DBfetch($result)) {
        $children[] = $row['servicedownid'];
        $children = array_merge($children, get_service_children($row['servicedownid']));
    }
    return $children;
}
Example #2
0
        return (bool) $service['trigger'];
    }), 'trigger');
    $triggers = CMacrosResolverHelper::resolveTriggerNames(zbx_toHash($triggers, 'triggerid'));
    foreach ($parentServices as $key => $parentService) {
        $parentServices[$key]['trigger'] = !empty($parentService['trigger']) ? $triggers[$parentService['trigger']['triggerid']]['description'] : '';
    }
    $data['db_pservices'] = $parentServices;
    // render view
    $servicesView = new CView('configuration.services.parent.list', $data);
    $servicesView->render();
    $servicesView->show();
} elseif (isset($_REQUEST['cservices'])) {
    $childServices = API::Service()->get(['output' => ['serviceid', 'name', 'algorithm'], 'selectTrigger' => ['triggerid', 'description', 'expression'], 'preservekeys' => true, 'sortfield' => ['name']]);
    if (isset($service)) {
        // unset unavailable parents
        $childServicesIds = get_service_children($service['serviceid']);
        $childServicesIds[] = $service['serviceid'];
        foreach ($childServicesIds as $childServiceId) {
            unset($childServices[$childServiceId]);
        }
        $data = ['service' => $service];
    } else {
        $data = [];
    }
    // expand trigger descriptions
    $triggers = zbx_objectValues(array_filter($childServices, function ($service) {
        return (bool) $service['trigger'];
    }), 'trigger');
    $triggers = CMacrosResolverHelper::resolveTriggerNames(zbx_toHash($triggers, 'triggerid'));
    foreach ($childServices as $key => $childService) {
        $childServices[$key]['trigger'] = !empty($childService['trigger']) ? $triggers[$childService['trigger']['triggerid']]['description'] : '';