languageContext->getActiveId(); } if (isset($this->emails[$languageID])) { return $this->emails[$languageID]; } $this->emails[$languageID] = sqlQueryBuilder() ->select('e.*') ->from('emails', 'e') ->where('e.type=:type') ->setParameter('type', self::getType()) ->andWhere(Translation::coalesceTranslatedFields( EmailsTranslation::class, null, $languageID )) ->orderBy('e.position') ->execute() ->fetchAllAssociative(); return $this->emails[$languageID]; } public function getMessagesByStatus($status, $languageID = null): array { $messages = $this->getMessages($languageID); if (!$this->user_messages_types) { foreach ($messages as &$message) { if (!is_null($message['order_status'])) { $this->user_messages_types[$message['order_status']][] = $message; } } } if (!empty($this->user_messages_types[$status])) { return $this->user_messages_types[$status]; } return []; } public function setUserMessage(string $message): void { $this->user_message = $message; } public function getEmailTemplate($languageID = null): array { $messages = $this->getMessages($languageID); if ($this->user_message) { foreach ($messages as $message) { if ($message['name'] == $this->user_message) { return $message; } } } throw new UserMessageException( sprintf('Error during user message send! User message "%s" not found!', $this->user_message ?: ''), [ 'user_message' => $this->user_message, 'messages' => $messages, 'language' => $this->languageContext->getActiveId(), 'id_object' => $this->getObjectId(), 'type' => self::getType(), ] ); } }