require_once dirname(__FILE__).'/include/config.inc.php';
$page['title'] = _('Notification report');
$page['file'] = 'report4.php';
$page['scripts'] = ['report4.js'];
require_once dirname(__FILE__).'/include/page_header.php';
'year' => [T_ZBX_INT, O_OPT, P_SYS|P_NZERO, null, null],
'period' => [T_ZBX_STR, O_OPT, P_SYS|P_NZERO, IN('"daily","weekly","monthly","yearly"'), null],
'media_type' => [T_ZBX_INT, O_OPT, P_SYS, DB_ID, null]
$media_type = getRequest('media_type', 0);
$db_media_type = API::MediaType()->get([
'mediatypeids' => $media_type,
$year = getRequest('year', intval(date('Y')));
$period = getRequest('period', 'weekly');
$current_year = date('Y');
$db_media_types = API::MediaType()->get([
'output' => ['mediatypeid', 'name'],
CArrayHelper::sort($db_media_types, ['name']);
$media_types = array_column($db_media_types, 'name', 'mediatypeid');
$html_page = (new CHtmlPage())
->setTitle(_('Notifications'))
->setDocUrl(CDocHelper::getUrl(CDocHelper::REPORT4));
$table = new CTableInfo();
if (($first_alert = DBfetch(DBselect('SELECT MIN(a.clock) AS clock FROM alerts a'))) && $first_alert['clock']) {
$min_year = date('Y', $first_alert['clock']);
$select_media_type = (new CSelect('media_type'))
->setFocusableElementId('media-type')
->addOption(new CSelectOption(0, _('All')))
->addOptions(CSelect::createOptionsFromArray($media_types));
$select_period = (new CSelect('period'))
->setFocusableElementId('period')
->addOptions(CSelect::createOptionsFromArray([
'monthly' => _('Monthly'),
$controls = (new CList())