templates = $templates; $this->renderer = $renderer; $this->emails = $emails; $this->settings = $settings; } /** * Renders a template and queues it for one recipient. * * @since 0.1.0 * * @param string $key Template key. * @param string $to_email Recipient address. * @param string $to_name Recipient name. * @param array $vars Merge tag values. * @param string $related_type Related object type, for the log. * @param int $related_id Related object id. * @return int Queue id, or 0 when nothing was queued (template off, bad address, or failure). */ public function queue( string $key, string $to_email, string $to_name, array $vars, string $related_type = '', int $related_id = 0 ): int { $template = $this->templates->get( $key ); if ( null === $template || ! $template['enabled'] || ! is_email( $to_email ) ) { return 0; } $rendered = $this->renderer->render( $key, $vars ); if ( null === $rendered ) { return 0; } $id = $this->emails->enqueue( array( 'to_email' => $to_email, 'to_name' => $to_name, 'subject' => $rendered['subject'], 'body_html' => $rendered['html'], 'body_text' => $rendered['text'], 'template_key' => $key, 'related_type' => $related_type, 'related_id' => $related_id, ) ); /** * Fires after an email was queued. * * @since 0.1.0 * * @param int $id Queue id. * @param string $key Template key. */ do_action( 'hostkhata_email_queued', $id, $key ); return $id; } /** * Queues a copy for the admin address from the settings. * * @since 0.1.0 * * @param string $key Template key. * @param array $vars Merge tag values. * @param string $related_type Related object type. * @param int $related_id Related object id. * @return int Queue id, or 0. */ public function queue_to_admin( string $key, array $vars, string $related_type = '', int $related_id = 0 ): int { return $this->queue( $key, (string) $this->settings->get( 'email_admin_recipient' ), '', $vars, $related_type, $related_id ); } }