function get_service_childs($serviceid, $soft = 0)
{
    $childs = array();
    $result = DBselect('SELECT sl.servicedownid' . ' FROM services_links sl' . ' WHERE sl.serviceupid=' . zbx_dbstr($serviceid) . ($soft ? '' : ' AND sl.soft=0'));
    while ($row = DBfetch($result)) {
        $childs[] = $row['servicedownid'];
        $childs = array_merge($childs, get_service_childs($row['servicedownid']));
    }
    return $childs;
}
Exemple #2
0
    // expand trigger descriptions
    $triggers = zbx_objectValues($parentServices, 'trigger');
    $triggers = CMacrosResolverHelper::resolveTriggerNames($triggers);
    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(array('output' => array('serviceid', 'name', 'algorithm'), 'selectTrigger' => array('triggerid', 'description', 'expression'), 'preservekeys' => true, 'sortfield' => array('name')));
    if (isset($service)) {
        // unset unavailable parents
        $childServicesIds = get_service_childs($service['serviceid']);
        $childServicesIds[] = $service['serviceid'];
        foreach ($childServicesIds as $childServiceId) {
            unset($childServices[$childServiceId]);
        }
        $data = array('service' => $service);
    } else {
        $data = array();
    }
    // expand trigger descriptions
    $triggers = zbx_objectValues($childServices, 'trigger');
    $triggers = CMacrosResolverHelper::resolveTriggerNames($triggers);
    foreach ($childServices as $key => $childService) {
        $childServices[$key]['trigger'] = !empty($childService['trigger']) ? $triggers[$childService['trigger']['triggerid']]['description'] : '-';
    }
    $data['db_cservices'] = $childServices;
Exemple #3
0
function get_service_childs($serviceid, $soft = 0)
{
    $childs = array();
    $query = 'SELECT sl.servicedownid ' . ' FROM services_links sl ' . ' WHERE sl.serviceupid = ' . $serviceid . ($soft ? '' : ' AND sl.soft <> 1');
    $res = DBSelect($query);
    while ($row = DBFetch($res)) {
        $childs[] = $row['servicedownid'];
        $childs = array_merge($childs, get_service_childs($row['servicedownid']));
    }
    return $childs;
}
Exemple #4
0
//---------------------------------------------- <CHILD SERVICES LIST> --------------------------------------------
if (isset($_REQUEST['cservices'])) {
    if (isset($service)) {
        $service = get_service_by_serviceid($service['serviceid']);
    }
    // update date after ACTIONS
    show_table_header(S_IT_SERVICES_BIG);
    $form = new CForm();
    $form->SetName("services");
    if (isset($service)) {
        $form->AddVar("serviceid", $service['serviceid']);
    }
    $table = new CTableInfo();
    $table->SetHeader(array(S_SERVICE, S_STATUS_CALCULATION, S_TRIGGER));
    if (isset($service)) {
        $childs = get_service_childs($service['serviceid'], 1);
        $childs_str = implode(',', $childs);
        !empty($childs_str) ? $childs_str .= ',' : '';
        $query = 'SELECT DISTINCT s.* ' . ' FROM services s ' . ' WHERE ' . DBin_node('s.serviceid') . ' AND (s.triggerid IS NULL OR ' . DBcondition('s.triggerid', $available_triggers) . ') ' . ' AND s.serviceid NOT IN (' . $childs_str . $service['serviceid'] . ') ' . ' ORDER BY s.sortorder,s.name';
    } else {
        $query = 'SELECT DISTINCT s.* ' . ' FROM services s ' . ' WHERE ' . DBin_node('s.serviceid') . ' AND (s.triggerid IS NULL OR ' . DBcondition('s.triggerid', $available_triggers) . ') ' . ' ORDER BY s.sortorder,s.name';
    }
    $db_services = DBselect($query);
    while ($db_service_data = DBfetch($db_services)) {
        $prefix = null;
        $trigger = "-";
        $description = $db_service_data["name"];
        if (isset($db_service_data["triggerid"])) {
            $trigger = expand_trigger_description($db_service_data["triggerid"]);
        }
        $description = new CLink($description, '#', 'action');