. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace Espo\Services; use Espo\Core\Exceptions\Forbidden; use Espo\Tools\EmailTemplate\Processor; use Espo\Tools\EmailTemplate\Params; use Espo\Tools\EmailTemplate\Data; use Espo\Entities\EmailTemplate as EmailTemplateEntity; use Espo\Core\Exceptions\NotFound; use Espo\Core\Di; /** * @deprecated For bc. Use `Espo\Tools\EmailTemplate\Service`. * * @extends Record<\Espo\Entities\EmailTemplate> */ class EmailTemplate extends Record implements Di\FieldUtilAware { use Di\FieldUtilSetter; /** * @deprecated For bc. Use `Espo\Tools\EmailTemplate\Processor`. * @todo Remove in v9.0. * * @param array $params * @return array{ * subject: string, * body: string, * isHtml: bool, * attachmentsIds: string[], * attachmentsNames: \stdClass, * } */ public function parseTemplate( EmailTemplateEntity $emailTemplate, array $params = [], bool $copyAttachments = false, bool $skipAcl = false ): array { $paramsInternal = Params::create() ->withApplyAcl(!$skipAcl) ->withCopyAttachments($copyAttachments); $data = Data::create() ->withEmailAddress($params['emailAddress'] ?? null) ->withEntityHash($params['entityHash'] ?? []) ->withParent($params['parent'] ?? null) ->withParentId($params['parentId'] ?? null) ->withParentType($params['parentType'] ?? null) ->withRelatedId($params['relatedId'] ?? null) ->withRelatedType($params['relatedType'] ?? null) ->withUser($this->user); $result = $this->createProcessor()->process($emailTemplate, $paramsInternal, $data); /** @var array{ * subject: string, * body: string, * isHtml: bool, * attachmentsIds: string[], * attachmentsNames: \stdClass, * } */ return get_object_vars($result->getValueMap()); } /** * @deprecated For bc. Use `Espo\Tools\EmailTemplate\Service`. * @todo Remove in v9.0. * * @param array $params * @return array * @throws Forbidden * @throws NotFound */ public function parse(string $id, array $params = [], bool $copyAttachments = false): array { /** @var EmailTemplateEntity|null $emailTemplate */ $emailTemplate = $this->getEntity($id); if (empty($emailTemplate)) { throw new NotFound(); } return $this->parseTemplate($emailTemplate, $params, $copyAttachments); } private function createProcessor(): Processor { return $this->injectableFactory->create(Processor::class); } }