From 5edd844c2ce25be7ace123559b09202c899699b9 Mon Sep 17 00:00:00 2001 From: grandeljay Date: Thu, 16 Jun 2022 22:18:03 +0200 Subject: [PATCH] Fix empty emails being sent --- src/api/wishlists.php | 23 +++++------------------ src/classes/email.php | 17 ++++++++++++++--- src/pages/login.php | 28 +++++++--------------------- 3 files changed, 26 insertions(+), 42 deletions(-) diff --git a/src/api/wishlists.php b/src/api/wishlists.php index 7eb4f933..b0d344ff 100644 --- a/src/api/wishlists.php +++ b/src/api/wishlists.php @@ -60,30 +60,17 @@ switch ($_SERVER['REQUEST_METHOD']) { /** Send email */ $user = new User($wishlist['user']); $email = new Email($user->email, __('Wish request'), 'default', 'wishlist-request-wishes'); - $email->mjml = str_replace( - 'TEXT_HELLO', - __('Hello,'), - $email->mjml - ); - $email->mjml = str_replace( + $email->setPlaceholder('TEXT_HELLO', __('Hello,')); + $email->setPlaceholder( 'TEXT_WISHLIST_REQUEST_WISHES', sprintf( /** TRANSLATORS: %s: Wishlist name */ __('somebody has requested that you add more wishes to your wishlist %s.'), '' . $wishlist['name'] . '' - ), - $email->mjml - ); - $email->mjml = str_replace( - 'TEXT_WISH_ADD', - __('Add wish'), - $email->mjml - ); - $email->mjml = str_replace( - 'LINK_WISH_ADD', - $href . '&wish_add=true', - $email->mjml + ) ); + $email->setPlaceholder('TEXT_WISH_ADD', __('Add wish')); + $email->setPlaceholder('LINK_WISH_ADD', $href . '&wish_add=true'); $success = $email->send(); diff --git a/src/classes/email.php b/src/classes/email.php index 90b6694b..1925182e 100644 --- a/src/classes/email.php +++ b/src/classes/email.php @@ -16,7 +16,9 @@ use Qferrer\Mjml\Renderer\ApiRenderer; class Email { - public string $mjml; + private string $mjml = ''; + private string $contentsTemplate; + private string $contentsPart; public function __construct( private string $to, @@ -24,8 +26,15 @@ class Email private string $template, private string $part ) { - $this->mjml = file_get_contents(ROOT . '/src/mjml/' . $this->template . '.mjml'); - $this->mjml = str_replace('MJML_PART', 'parts/' . $this->part . '.mjml', $this->mjml); + $this->contentsTemplate = file_get_contents(ROOT . '/src/mjml/' . $this->template . '.mjml'); + $this->contentsPart = file_get_contents(ROOT . '/src/mjml/parts/' . $this->part . '.mjml'); + + $this->mjml = str_replace('', $this->contentsPart, $this->contentsTemplate); + } + + public function setPlaceholder(string $placeholder, string $replacement): void + { + $this->mjml = str_replace($placeholder, $replacement, $this->mjml); } public function send(): bool @@ -62,6 +71,8 @@ class Email $success = mail($to, $subject, $message, $headers); + error_log($html); + return $success; } } diff --git a/src/pages/login.php b/src/pages/login.php index 61515842..63c0708d 100644 --- a/src/pages/login.php +++ b/src/pages/login.php @@ -69,32 +69,18 @@ if (isset($_POST['reset'], $_POST['email'])) { ;'); $emailReset = new Email($_POST['email'], __('Password reset link'), 'default', 'password-reset'); - $emailReset->mjml = str_replace( - 'TEXT_HELLO', - __('Hello,'), - $emailReset->mjml - ); - $emailReset->mjml = str_replace( + $emailReset->setPlaceholder('TEXT_HELLO', __('Hello,')); + $emailReset->setPlaceholder( 'TEXT_PASSWORD_RESET', - __('somebody has requested a password reset for this email address from wishthis.online. If this was you, click the button below to invalidate your current password and set a new one.'), - $emailReset->mjml + __('somebody has requested a password reset for this email address from wishthis.online. If this was you, click the button below to invalidate your current password and set a new one.') ); - $emailReset->mjml = str_replace( - 'TEXT_SET_NEW_PASSWORD', - __('Set new password'), - $emailReset->mjml - ); - $emailReset->mjml = str_replace( - 'wishthis.online', - $_SERVER['HTTP_HOST'], - $mjml - ); - $emailReset->mjml = str_replace( + $emailReset->setPlaceholder('TEXT_SET_NEW_PASSWORD', __('Set new password')); + $emailReset->setPlaceholder('wishthis.online', $_SERVER['HTTP_HOST']); + $emailReset->setPlaceholder( 'password-reset-link', $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['HTTP_HOST'] . - Page::PAGE_REGISTER . '&password-reset=' . $_POST['email'] . '&token=' . $token, - $mjml + Page::PAGE_REGISTER . '&password-reset=' . $_POST['email'] . '&token=' . $token ); $emailReset->send();