getAcknowledgedMessages()); $messages = ApplicationStateHook::getAllMessages(); $active = array_diff_key($messages, $acked); return $active; } protected function getPurifier() { return new HtmlPurifier(['HTML.Allowed' => 'b,a[href|target],i,*[class]']); } public function render() { $enabled = Auth::getInstance() ->getUser() ->getPreferences() ->getValue('icingaweb', 'show_application_state_messages', 'system'); if ($enabled === 'system') { $enabled = Config::app()->get('global', 'show_application_state_messages', true); } if (! (bool) $enabled) { return '
'; } $active = $this->getMessages(); if (empty($active)) { // Force container update on XHR return '
'; } $purifier = $this->getPurifier(); $html = '
'; reset($active); $id = key($active); $spec = current($active); $message = array_pop($spec); // We don't use state and timestamp here $ackForm = new AcknowledgeApplicationStateMessageForm(); $ackForm->populate(['id' => $id]); $html .= $purifier->purify($message) . $ackForm; $html .= '
'; return $html; } }