diff --git a/admin/service_messages.php b/admin/service_messages.php index 580d0012..9ba0b9a9 100644 --- a/admin/service_messages.php +++ b/admin/service_messages.php @@ -687,21 +687,7 @@ function new_sm() exit; } - // Get the latest service message order - $res = hesk_dbQuery("SELECT `order` FROM `" . hesk_dbEscape($hesk_settings['db_pfix']) . "service_messages` ORDER BY `order` DESC LIMIT 1"); - $row = hesk_dbFetchRow($res); - $my_order = intval($row[0]) + 10; - // Insert service message into database - hesk_dbQuery("INSERT INTO `" . hesk_dbEscape($hesk_settings['db_pfix']) . "service_messages` (`author`,`title`,`message`,`style`,`type`,`order`, `icon`) VALUES ( - '" . intval($_SESSION['id']) . "', - '" . hesk_dbEscape($title) . "', - '" . hesk_dbEscape($message) . "', - '{$style}', - '{$type}', - '{$my_order}', - '{$icon}' - )"); $_SESSION['smord'] = hesk_dbInsertID(); hesk_process_messages($hesklang['sm_added'], 'service_messages.php', 'SUCCESS'); diff --git a/api/BusinessLogic/ServiceMessages/ServiceMessage.php b/api/BusinessLogic/ServiceMessages/ServiceMessage.php new file mode 100644 index 00000000..1951b672 --- /dev/null +++ b/api/BusinessLogic/ServiceMessages/ServiceMessage.php @@ -0,0 +1,33 @@ +serviceMessageGateway = $serviceMessagesGateway; + } + + function createServiceMessage($serviceMessage, $heskSettings) { + // TODO Validate + + return $this->serviceMessageGateway->createServiceMessage($serviceMessage, $heskSettings); + } +} \ No newline at end of file diff --git a/api/BusinessLogic/ServiceMessages/ServiceMessageStyle.php b/api/BusinessLogic/ServiceMessages/ServiceMessageStyle.php new file mode 100644 index 00000000..4dc3e388 --- /dev/null +++ b/api/BusinessLogic/ServiceMessages/ServiceMessageStyle.php @@ -0,0 +1,44 @@ + self::NONE, + 1 => self::SUCCESS, + 2 => self::INFO, + 3 => self::NOTICE, + 4 => self::ERROR + ); + + if (!isset($styles[$id])) { + throw new \Exception("Style {$id} is not a valid service message style."); + } + + return $styles[$id]; + } + + static function getIdForStyle($style) { + $styles = array( + self::NONE => 0, + self::SUCCESS => 1, + self::INFO => 2, + self::NOTICE => 3, + self::ERROR => 4 + ); + + if (!isset($styles[$style])) { + throw new \Exception("Style {$style} is not a valid service message style."); + } + + return $styles[$style]; + } +} \ No newline at end of file diff --git a/api/Controllers/ServiceMessages/ServiceMessagesController.php b/api/Controllers/ServiceMessages/ServiceMessagesController.php new file mode 100644 index 00000000..2e9e83c8 --- /dev/null +++ b/api/Controllers/ServiceMessages/ServiceMessagesController.php @@ -0,0 +1,38 @@ +get(ServiceMessageHandler::clazz()); + + $data = JsonRetriever::getJsonData(); + $element = $handler->createServiceMessage($this->buildElementModel($data, $userContext), $hesk_settings); + + return output($element, 201); + } + + /** + * @param $data array + * @param $userContext UserContext + * @return ServiceMessage + */ + private function buildElementModel($data, $userContext) { + $serviceMessage = new ServiceMessage(); + $serviceMessage->createdBy = $userContext->id; + $serviceMessage->icon = $data['icon']; + $serviceMessage->message = $data['message']; + $serviceMessage->published = $data['published']; + $serviceMessage->style = $data['style']; + + return $serviceMessage; + } +} \ No newline at end of file diff --git a/api/DataAccess/ServiceMessages/ServiceMessagesGateway.php b/api/DataAccess/ServiceMessages/ServiceMessagesGateway.php new file mode 100644 index 00000000..9e6adc39 --- /dev/null +++ b/api/DataAccess/ServiceMessages/ServiceMessagesGateway.php @@ -0,0 +1,43 @@ +init(); + + // Get the latest service message order + $res = hesk_dbQuery("SELECT `order` FROM `" . hesk_dbEscape($heskSettings['db_pfix']) . "service_messages` ORDER BY `order` DESC LIMIT 1"); + $row = hesk_dbFetchRow($res); + $myOrder = intval($row[0]) + 10; + + $style = ServiceMessageStyle::getIdForStyle($serviceMessage->style); + $type = $serviceMessage->published ? 0 : 1; + + // Insert service message into database + hesk_dbQuery("INSERT INTO `" . hesk_dbEscape($heskSettings['db_pfix']) . "service_messages` (`author`,`title`,`message`,`style`,`type`,`order`, `icon`) VALUES ( + '" . intval($serviceMessage->createdBy) . "', + '" . hesk_dbEscape($serviceMessage->title) . "', + '" . hesk_dbEscape($serviceMessage->message) . "', + '" . hesk_dbEscape($style) . "', + '{$type}', + '{$myOrder}', + '" . hesk_dbEscape($serviceMessage->icon) . "' + )"); + + $serviceMessage->id = hesk_dbInsertID(); + + $this->close(); + + return $serviceMessage; + } +} \ No newline at end of file