imageText($im, 10, 0, $x, 14, $darkred, $str); $now = time(null); $count_now = array(); $true = array(); $false = array(); $start = mktime(0, 0, 0, 1, 1, date('Y')); $wday = date('w', $start); if ($wday == 0) { $wday = 7; } $start = $start - ($wday - 1) * SEC_PER_DAY; $weeks = (int) (date('z') / 7 + 1); for ($i = 0; $i < $weeks; $i++) { $periodStart = $start + SEC_PER_WEEK * $i; $periodEnd = $start + SEC_PER_WEEK * ($i + 1); $stat = calculateAvailability(getRequest('triggerid'), $periodStart, $periodEnd); $true[$i] = $stat['true']; $false[$i] = $stat['false']; $count_now[$i] = 1; } for ($i = 0; $i <= $sizeY; $i += $sizeY / 10) { dashedLine($im, $shiftX, $i + $shiftYup, $sizeX + $shiftX, $i + $shiftYup, $gray); } for ($i = 0, $periodStart = $start; $i <= $sizeX; $i += $sizeX / 52) { dashedLine($im, $i + $shiftX, $shiftYup, $i + $shiftX, $sizeY + $shiftYup, $gray); imageText($im, 6, 90, $i + $shiftX + 4, $sizeY + $shiftYup + 30, $black, zbx_date2str(_('d.M'), $periodStart)); $periodStart += SEC_PER_WEEK; } $maxY = max(max($true), 100); $minY = 0; $maxX = 900;
} // filter period $timeSinceRow = createDateSelector('filter_timesince', $_REQUEST['filter_timesince'], 'filter_timetill'); array_unshift($timeSinceRow, _('From')); $timeTillRow = createDateSelector('filter_timetill', $_REQUEST['filter_timetill'], 'filter_timesince'); array_unshift($timeTillRow, _('Till')); $filterPeriodTable = new CTable(null, 'calendar'); $filterPeriodTable->addRow($timeSinceRow); $filterPeriodTable->addRow($timeTillRow); $filterForm->addRow(_('Period'), $filterPeriodTable); // filter buttons $filterForm->addItemToBottomRow(new CSubmit('filter_set', _('Filter'))); $filterForm->addItemToBottomRow(new CSubmit('filter_rst', _('Reset'))); $reportWidget->addFlicker($filterForm, CProfile::get('web.avail_report.filter.state', 0)); /* * Triggers */ $triggerTable = new CTableInfo(_('No triggers found.')); $triggerTable->setHeader(array($_REQUEST['filter_hostid'] == 0 || $availabilityReportMode == AVAILABILITY_REPORT_BY_TEMPLATE ? _('Host') : null, _('Name'), _('Problems'), _('Ok'), _('Graph'))); $triggers = API::Trigger()->get($triggerOptions); CArrayHelper::sort($triggers, array('host', 'description')); $paging = getPagingLine($triggers); foreach ($triggers as $trigger) { $availability = calculateAvailability($trigger['triggerid'], getRequest('filter_timesince'), getRequest('filter_timetill')); $triggerTable->addRow(array($_REQUEST['filter_hostid'] == 0 || $availabilityReportMode == AVAILABILITY_REPORT_BY_TEMPLATE ? $trigger['hosts'][0]['name'] : null, new CLink($trigger['description'], 'events.php?filter_set=1&triggerid=' . $trigger['triggerid'] . '&source=' . EVENT_SOURCE_TRIGGERS), new CSpan(sprintf('%.4f%%', $availability['true']), 'on'), new CSpan(sprintf('%.4f%%', $availability['false']), 'off'), new CLink(_('Show'), 'report2.php?filter_groupid=' . $_REQUEST['filter_groupid'] . '&filter_hostid=' . $_REQUEST['filter_hostid'] . '&triggerid=' . $trigger['triggerid']))); } $reportWidget->addItem(BR()); $reportWidget->addItem(array($paging, $triggerTable, $paging)); $reportWidget->show(); } require_once dirname(__FILE__) . '/include/page_footer.php';