onQueue('notifications'); } /** * Get the notification's channels. * * @param mixed $notifiable * @return array|string */ public function via($notifiable) { return ['mail', 'database']; } /** * Initialise the mail representation of the notification. * */ public function initMailMessage(): MailMessage { app('url')->defaults(['company_id' => company_id()]); $message = (new MailMessage) ->from(config('mail.from.address'), config('mail.from.name')) ->subject($this->getSubject()) ->view('components.email.body', ['body' => $this->getBody()]); if (!empty($this->custom_mail['cc'])) { $message->cc($this->custom_mail['cc']); } return $message; } /** * Initialise the array representation of the notification. * */ public function initArrayMessage(): void { app('url')->defaults(['company_id' => company_id()]); } public function getSubject(): string { return !empty($this->custom_mail['subject']) ? $this->custom_mail['subject'] : $this->replaceTags($this->template->subject); } public function getBody() { $body = !empty($this->custom_mail['body']) ? $this->custom_mail['body'] : $this->replaceTags($this->template->body); return $body . $this->getFooter(); } public function replaceTags(string $content): string { $pattern = $this->getTagsPattern(); $replacement = $this->applyQuote($this->getTagsReplacement()); return $this->revertQuote(preg_replace($pattern, $replacement, $content)); } public function getFooter() { $url = 'https://akaunting.com/lp/accounting-software?utm_source=email&utm_medium=software&utm_campaign=footer&utm_content=' . $this->template->alias; $get_started = '' . trans('footer.get_started') . ''; return view('components.email.footer', compact('url', 'get_started')); } public function getTagsPattern(): array { $pattern = []; foreach($this->getTags() as $tag) { $pattern[] = "/" . $tag . "/"; } return $pattern; } public function getTags(): array { return []; } public function getTagsReplacement(): array { return []; } public function getTagsBinding(): array { $bindings = []; $tags = $this->getTags(); $replacements = $this->getTagsReplacement(); $wrappers = ['{', '}']; foreach ($tags as $index => $tag) { $key = Str::replace($wrappers, '', $tag); $bindings[$key] = $replacements[$index]; } return $bindings; } public function applyQuote(array $vars): array { $new_vars = []; foreach ($vars as $var) { $new_vars[] = preg_quote($var); } return $new_vars; } public function revertQuote(string $content): string { return str_replace('\\', '', $content); } /** * @deprecated 3.0 */ public function initMessage() { return $this->initMailMessage(); } }