serviceMessageGateway = $serviceMessagesGateway; } function createServiceMessage($serviceMessage, $heskSettings) { $this->validate($serviceMessage, $heskSettings); if ($serviceMessage->icon === null) { switch ($serviceMessage->style) { case ServiceMessageStyle::NONE: $serviceMessage->icon = ''; break; case ServiceMessageStyle::INFO: $serviceMessage->icon = 'fa fa-comment'; break; case ServiceMessageStyle::NOTICE: $serviceMessage->icon = 'fa fa-exclamation-triangle'; break; case ServiceMessageStyle::ERROR: $serviceMessage->icon = 'fa fa-times-circle'; break; case ServiceMessageStyle::SUCCESS: $serviceMessage->icon = 'fa fa-check-circle'; break; } } return $this->serviceMessageGateway->createServiceMessage($serviceMessage, $heskSettings); } function getServiceMessages($heskSettings) { return $this->serviceMessageGateway->getServiceMessages($heskSettings); } function editServiceMessage($serviceMessage, $heskSettings) { $this->validate($serviceMessage, $heskSettings, false); if ($serviceMessage->icon === null) { switch ($serviceMessage->style) { case ServiceMessageStyle::NONE: $serviceMessage->icon = ''; break; case ServiceMessageStyle::INFO: $serviceMessage->icon = 'fa fa-comment'; break; case ServiceMessageStyle::NOTICE: $serviceMessage->icon = 'fa fa-exclamation-triangle'; break; case ServiceMessageStyle::ERROR: $serviceMessage->icon = 'fa fa-times-circle'; break; case ServiceMessageStyle::SUCCESS: $serviceMessage->icon = 'fa fa-check-circle'; break; } } return $this->serviceMessageGateway->updateServiceMessage($serviceMessage, $heskSettings); } function deleteServiceMessage($id, $heskSettings) { $this->serviceMessageGateway->deleteServiceMessage($id, $heskSettings); } function sortServiceMessage($id, $direction, $heskSettings) { $serviceMessages = $this->serviceMessageGateway->getServiceMessages($heskSettings); $serviceMessage = null; foreach ($serviceMessages as $innerServiceMessage) { if (intval($innerServiceMessage->id) === intval($id)) { $serviceMessage = $innerServiceMessage; break; } } if ($serviceMessage === null) { throw new \BaseException("Could not find service message with ID {$id}!"); } if ($direction === Direction::UP) { $serviceMessage->order -= 15; } else { $serviceMessage->order += 15; } $this->serviceMessageGateway->updateServiceMessage($serviceMessage, $heskSettings); $this->serviceMessageGateway->resortAllServiceMessages($heskSettings); } /** * @param $serviceMessage ServiceMessage * @param bool $isNew * @throws ValidationException */ private function validate($serviceMessage, $heskSettings, $isNew = true) { $validationModel = new ValidationModel(); if ($isNew && $serviceMessage->createdBy < 1) { $validationModel->errorKeys[] = 'MISSING_CREATOR'; } if ($serviceMessage->message === null || trim($serviceMessage->message) === '') { $validationModel->errorKeys[] = 'MISSING_MESSAGE'; } else { $htmlPurifier = new \HeskHTMLPurifier($heskSettings['cache_dir']); $serviceMessage->message = $htmlPurifier->heskPurify($serviceMessage->message); } if ($serviceMessage->title === null || trim($serviceMessage->title) === '') { $validationModel->errorKeys[] = 'MISSING_TITLE'; } if ($serviceMessage->style === null || trim($serviceMessage->style) === '') { $validationModel->errorKeys[] = 'MISSING_STYLE'; } try { ServiceMessageStyle::getIdForStyle($serviceMessage->style); } catch (\Exception $e) { $validationModel->errorKeys[] = 'INVALID_STYLE'; } if ($serviceMessage->locations === null || count($serviceMessage->locations) === 0) { $validationModel->errorKeys[] = 'MISSING_LOCATIONS'; } else { $locations = ServiceMessageLocation::getAll(); foreach ($serviceMessage->locations as $location) { if (!in_array($location, $locations)) { $validationModel->errorKeys[] = 'INVALID_LOCATION'; break; } } } if (count($validationModel->errorKeys) > 0) { // Validation failed throw new ValidationException($validationModel); } } }