session_start(); if (!isset($_SESSION['centreon']) || !isset($_REQUEST['widgetId'])) { print "DDD"; exit; } $centreon = $_SESSION['centreon']; $widgetId = $_REQUEST['widgetId']; try { global $pearDB; $db = new CentreonDB(); $db2 = new CentreonDB("centstorage"); $pearDB = $db; if ($centreon->user->admin == 0) { $access = new CentreonACL($centreon->user->get_id()); $grouplist = $access->getAccessGroups(); $grouplistStr = $access->getAccessGroupsString(); } $widgetObj = new CentreonWidget($centreon, $db); $preferences = $widgetObj->getWidgetPreferences($widgetId); $autoRefresh = 0; if (isset($preferences['refresh_interval'])) { $autoRefresh = $preferences['refresh_interval']; } } catch (Exception $e) { echo $e->getMessage() . "<br/>"; exit; } ?> <html> <head> <title>weatherMap</title>
$sid = CentreonDB::escape($sid); /* Check if session is initialised */ $res = $pearDB->query("SELECT s.user_id, c.contact_admin FROM session s, contact c WHERE s.user_id = c.contact_id AND s.session_id = '" . $sid . "'"); if (PEAR::isError($res)) { sendJson("Internal Server Error", 500); } $row = $res->fetchRow(); if (is_null($row)) { sendJson("Forbidden access", 403); } $isAdmin = $row['contact_admin']; $userId = $row['user_id']; /* Get ACL if user is not admin */ if (!$isAdmin) { $acl = new CentreonACL($userId, $isAdmin); $aclGroups = $acl->getAccessGroupsString(); } /* Validate options */ if (false === isset($_GET['start']) || false === is_numeric($_GET['start']) || false === isset($_GET['end']) || false === is_numeric($_GET['end'])) { sendJson("Bad Request", 400); } $start = $_GET['start']; $end = $_GET['end']; $rows = 200; if (isset($_GET['rows'])) { if (false === is_numeric($_GET['rows'])) { sendJson("Bad Request", 400); } $rows = $_GET['rows']; } if ($rows < 10) {
} $query2 = "SELECT sc_id FROM service_categories WHERE sc_name IN (" . $labels . ")"; $RES = $db->query($query2); $idC = ""; while ($d1 = $RES->fetchRow()) { if ($idC != '') { $idC .= ","; } $idC .= $d1['sc_id']; } $query .= " AND cv2.`value` IN ({$idC}) "; } if (!$centreon->user->admin) { $pearDB = $db; $aclObj = new CentreonACL($centreon->user->user_id, $centreon->user->admin); $groupList = $aclObj->getAccessGroupsString(); $query .= " AND h.host_id = acl.host_id\n\tAND acl.service_id = s.service_id\n\tAND acl.group_id IN ({$groupList})"; } if (isset($preferences['output_search']) && $preferences['output_search'] != "") { $tab = split(" ", $preferences['output_search']); $op = $tab[0]; if (isset($tab[1])) { $search = $tab[1]; } if ($op && isset($search) && $search != "") { $query = CentreonUtils::conditionBuilder($query, "s.output " . CentreonUtils::operandToMysqlFormat($op) . " '" . $dbb->escape($search) . "' "); } } if (isset($preferences['ticket_id_search']) && $preferences['ticket_id_search'] != "") { $query .= " AND (mop1.ticket_value LIKE '" . $dbb->escape($preferences['ticket_id_search']) . "' OR mop2.ticket_value LIKE '" . $dbb->escape($preferences['ticket_id_search']) . "') "; }
/** * Get Service States * * @param string $sgName * @param int $detailFlag * @param int $admin * @param CentreonACL $aclObj * @param array $preferences * @param bool $isNdo * @param string $ndoPrefix * @return string */ public function getServiceStates($sgName, $detailFlag = false, $admin, $aclObj, $preferences, $isNdo = false, $ndoPrefix = "nagios_") { if ($isNdo == false) { $query = "SELECT DISTINCT h.host_id, s.state, h.name, s.service_id, s.description, ssg.servicegroup_id\n FROM `services_servicegroups` ssg, `services` s, `hosts` h, `servicegroups` sg "; if (!$admin) { $query .= ", centreon_acl acl "; } $query .= "WHERE h.host_id = s.host_id\n AND h.name NOT LIKE '_Module_%'\n AND s.enabled = 1\n AND s.host_id = ssg.host_id\n AND ssg.service_id = s.service_id\n AND ssg.servicegroup_id = sg.servicegroup_id\n AND sg.name = '" . $this->dbb->escape($sgName) . "' "; if (!$admin) { $query .= " AND h.host_id = acl.host_id\n AND acl.service_id = s.service_id "; $query .= " AND acl.group_id IN (" . $aclObj->getAccessGroupsString() . ") "; } $query .= " ORDER BY h.name "; } else { $query = "SELECT DISTINCT h.host_id, ss.current_state as state, h.display_name as name, \n s.service_id, s.display_name as description, ssg.servicegroup_id\n FROM `{$ndoPrefix}servicegroup_members` ssg, `{$ndoPrefix}hosts` h, `{$ndoPrefix}services` s,\n `{$ndoPrefix}servicestatus` ss, `{$ndoPrefix}servicegroups` sg, `{$ndoPrefix}objects` o "; if (!$admin) { $query .= ", centreon_acl acl "; } $query .= "WHERE h.host_object_id = s.host_object_id\n AND s.service_object_id = ss.service_object_id\n AND h.display_name NOT LIKE '_Module_%' \n AND s.service_object_id = ssg.service_object_id\n AND ssg.servicegroup_id = sg.servicegroup_id\n AND sg.servicegroup_object_id = o.object_id\n AND s.config_type = 0\n AND o.name1 = '" . $this->dbb->escape($sgName) . "' "; if (!$admin) { $query .= " AND h.display_name = acl.host_name\n AND acl.service_description = s.display_name "; $query .= " AND acl.group_id IN (" . $aclObj->getAccessGroupsString() . ") "; } $query .= " ORDER BY h.display_name "; } $res = $this->dbb->query($query); $tab = array(); $detailTab = array(); while ($row = $res->fetchRow()) { if (!isset($tab[$row['state']])) { $tab[$row['state']] = 0; } if (!isset($detailTab[$row['host_id']])) { $detailTab[$row['host_id']] = array(); } if (isset($detailTab[$row['name']]) && !isset($detailTab[$row['name']][$row['service_id']])) { $detailTab[$row['host_id']][$row['service_id']] = array(); } foreach ($row as $key => $val) { $detailTab[$row['host_id']][$row['service_id']][$key] = $val; } $tab[$row['state']]++; } if ($detailFlag == true) { return $detailTab; } return $tab; }