_('Most critical of child services'), ZBX_SERVICE_STATUS_CALC_MOST_CRITICAL_ALL => _('Most critical if all children have problems'), ZBX_SERVICE_STATUS_CALC_SET_OK => _('Set status to OK') ]; } public static function getStatusRuleTypeOptions(): array { return [ ZBX_SERVICE_STATUS_RULE_TYPE_N_GE => _s( 'If at least %2$s child services have %1$s status or above', (new CSpan(_('Status')))->addClass(ZBX_STYLE_TEXT_PLACEHOLDER), (new CSpan(_('N')))->addClass(ZBX_STYLE_TEXT_PLACEHOLDER) ), ZBX_SERVICE_STATUS_RULE_TYPE_NP_GE => _s( 'If at least %2$s of child services have %1$s status or above', (new CSpan(_('Status')))->addClass(ZBX_STYLE_TEXT_PLACEHOLDER), (new CSpan(_('N%')))->addClass(ZBX_STYLE_TEXT_PLACEHOLDER) ), ZBX_SERVICE_STATUS_RULE_TYPE_N_L => _s( 'If less than %2$s child services have %1$s status or below', (new CSpan(_('Status')))->addClass(ZBX_STYLE_TEXT_PLACEHOLDER), (new CSpan(_('N')))->addClass(ZBX_STYLE_TEXT_PLACEHOLDER) ), ZBX_SERVICE_STATUS_RULE_TYPE_NP_L => _s( 'If less than %2$s of child services have %1$s status or below', (new CSpan(_('Status')))->addClass(ZBX_STYLE_TEXT_PLACEHOLDER), (new CSpan(_('N%')))->addClass(ZBX_STYLE_TEXT_PLACEHOLDER) ), ZBX_SERVICE_STATUS_RULE_TYPE_W_GE => _s( 'If weight of child services with %1$s status or above is at least %2$s', (new CSpan(_('Status')))->addClass(ZBX_STYLE_TEXT_PLACEHOLDER), (new CSpan(_('W')))->addClass(ZBX_STYLE_TEXT_PLACEHOLDER) ), ZBX_SERVICE_STATUS_RULE_TYPE_WP_GE => _s( 'If weight of child services with %1$s status or above is at least %2$s', (new CSpan(_('Status')))->addClass(ZBX_STYLE_TEXT_PLACEHOLDER), (new CSpan(_('N%')))->addClass(ZBX_STYLE_TEXT_PLACEHOLDER) ), ZBX_SERVICE_STATUS_RULE_TYPE_W_L => _s( 'If weight of child services with %1$s status or below is less than %2$s', (new CSpan(_('Status')))->addClass(ZBX_STYLE_TEXT_PLACEHOLDER), (new CSpan(_('W')))->addClass(ZBX_STYLE_TEXT_PLACEHOLDER) ), ZBX_SERVICE_STATUS_RULE_TYPE_WP_L => _s( 'If weight of child services with %1$s status or below is less than %2$s', (new CSpan(_('Status')))->addClass(ZBX_STYLE_TEXT_PLACEHOLDER), (new CSpan(_('N%')))->addClass(ZBX_STYLE_TEXT_PLACEHOLDER) ) ]; } public static function formatStatusRuleType(int $type, int $new_status, int $number, int $status): string { $status = self::getStatusNames()[$status]; switch ($type) { case ZBX_SERVICE_STATUS_RULE_TYPE_N_GE: $rule = _n( 'If at least %2$s child service has %1$s status or above', 'If at least %2$s child services have %1$s status or above', new CTag('em', true, $status), new CTag('em', true, $number), $number ); break; case ZBX_SERVICE_STATUS_RULE_TYPE_NP_GE: $rule = _s('If at least %2$s of child services have %1$s status or above', new CTag('em', true, $status), new CTag('em', true, [$number, '%']), $number ); break; case ZBX_SERVICE_STATUS_RULE_TYPE_N_L: $rule = _n( 'If less than %2$s child service has %1$s status or below', 'If less than %2$s child services have %1$s status or below', new CTag('em', true, $status), new CTag('em', true, $number), $number ); break; case ZBX_SERVICE_STATUS_RULE_TYPE_NP_L: $rule = _s('If less than %2$s of child services have %1$s status or below', new CTag('em', true, $status), new CTag('em', true, [$number, '%']), $number ); break; case ZBX_SERVICE_STATUS_RULE_TYPE_W_GE: $rule = _s('If weight of child services with %1$s status or above is at least %2$s', new CTag('em', true, $status), new CTag('em', true, $number)); break; case ZBX_SERVICE_STATUS_RULE_TYPE_WP_GE: $rule = _s('If weight of child services with %1$s status or above is at least %2$s', new CTag('em', true, $status), new CTag('em', true, $number).'%'); break; case ZBX_SERVICE_STATUS_RULE_TYPE_W_L: $rule = _s('If weight of child services with %1$s status or below is less than %2$s', new CTag('em', true, $status), new CTag('em', true, $number)); break; case ZBX_SERVICE_STATUS_RULE_TYPE_WP_L: $rule = _s('If weight of child services with %1$s status or below is less than %2$s', new CTag('em', true, $status), new CTag('em', true, $number).'%'); break; default: $rule = null; } return $rule !== null ? (new CObject( [new CTag('em', true, self::getProblemStatusNames()[$new_status]), ' - ', $rule] ))->toString() : ''; } public static function getStatusNames(): array { return [ZBX_SEVERITY_OK => _('OK')] + self::getProblemStatusNames(); } public static function getProblemStatusNames(): array { $status_names = []; foreach (CSeverityHelper::getSeverities() as $severity) { $status_names[$severity['value']] = $severity['label']; } return $status_names; } public static function getStatusPropagationNames(): array { return [ ZBX_SERVICE_STATUS_PROPAGATION_AS_IS => _('As is'), ZBX_SERVICE_STATUS_PROPAGATION_INCREASE => _('Increase by'), ZBX_SERVICE_STATUS_PROPAGATION_DECREASE => _('Decrease by'), ZBX_SERVICE_STATUS_PROPAGATION_IGNORE => _('Ignore this service'), ZBX_SERVICE_STATUS_PROPAGATION_FIXED => _('Fixed status') ]; } }