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;
 }