dbPool->get()->con->query('select 1 from `messages_mail`'); } catch (\Exception $_) { return []; // @codeCoverageIgnore } if (!\is_file($data['path'] ?? '')) { throw new PathException($data['path'] ?? ''); } $messageFile = \file_get_contents($data['path'] ?? ''); if ($messageFile === false) { throw new PathException($data['path'] ?? ''); // @codeCoverageIgnore } $messageData = \json_decode($messageFile, true) ?? []; if ($messageData === false) { throw new \Exception(); // @codeCoverageIgnore } $result = [ 'email_template' => [], ]; $apiApp = new class() extends ApplicationAbstract { protected string $appName = 'Api'; }; $apiApp->dbPool = $app->dbPool; $apiApp->unitId = $app->unitId; $apiApp->accountManager = $app->accountManager; $apiApp->appSettings = $app->appSettings; $apiApp->moduleManager = $app->moduleManager; $apiApp->eventManager = $app->eventManager; /** @var array{type:array} $messageData */ foreach ($messageData as $message) { switch ($message['type']) { case 'email_template': $result['email_template'][] = self::createMessageTemplate($apiApp, $message); break; default: } } return $result; } /** * Create message template. * * @param ApplicationAbstract $app Application * @param array $data Type info * * @return array * * @since 1.0.0 */ private static function createMessageTemplate(ApplicationAbstract $app, array $data) : array { /** @var \Modules\Messages\Controller\ApiController $module */ $module = $app->moduleManager->get('Messages'); $response = new HttpResponse(); $request = new HttpRequest(); $request->header->account = 1; $request->setData('from', $data['from'] ?? ''); $request->setData('to', $data['to'] ?? null); $request->setData('cc', $data['cc'] ?? null); $request->setData('bcc', $data['bcc'] ?? null); $request->setData('subject', $data['subject'] ?? ''); $request->setData('ishtml', $data['ishtml'] ?? false); $request->setData('body', $data['body'] ?? ''); $request->setData('bodyalt', $data['bodyalt'] ?? ''); $request->setData('send', $data['send'] ?? false); $request->setData('template', true); $module->apiEmailCreate($request, $response); $responseData = $response->getData(''); if (!\is_array($responseData)) { return []; } $emailId = $responseData['response']->id; foreach ($data['l11n'] as $language => $l11n) { $l11nResponse = new HttpResponse(); $l11nRequest = new HttpRequest(); $l11nRequest->header->account = 1; $l11nRequest->setData('email', $emailId); $l11nRequest->setData('language', $language); $l11nRequest->setData('subject', $l11n['subject'] ?? ''); $l11nRequest->setData('body', $l11n['body'] ?? ''); $l11nRequest->setData('bodyalt', $l11n['bodyalt'] ?? ''); $module->apiEmailL11nCreate($l11nRequest, $l11nResponse); } return \is_array($responseData['response']) ? $responseData['response'] : $responseData['response']->toArray(); } }