From 6e7699ce5f99e7dab0d6b1fef184d499527e5b86 Mon Sep 17 00:00:00 2001 From: ericgaspar Date: Mon, 30 Aug 2021 17:20:07 +0200 Subject: [PATCH] Fix --- conf/Mailer.php | 164 ++++++++++++++++++++++++++++++++++++++++++++++++ scripts/install | 11 ++++ 2 files changed, 175 insertions(+) create mode 100644 conf/Mailer.php diff --git a/conf/Mailer.php b/conf/Mailer.php new file mode 100644 index 0000000..402d822 --- /dev/null +++ b/conf/Mailer.php @@ -0,0 +1,164 @@ +loadStrings($lang); + } + + /** + * Send email to one or more users in the provided list. + * + * @param $emails List of email addresses (must have at least one). + * @param $data Object containing template type and replacements for template. + */ + public function sendMail($emails, $data) { + $this->initMail(); + + if (count($emails) < 1) { + return ''; + } + + foreach($emails as $user) { + $this->mail->addAddress($user); + } + + $this->mail->Subject = $this->strings->mail_subject; + $this->mail->msgHTML($this->parseTemplate($data)); + + if (!$this->mail->send()) { + return $this->strings->mail_error; + } + + return $this->strings->mail_sent; // @codeCoverageIgnore + } + + private function parseTemplate(EmailData $data) { + $template = $this->getTemplate($data->type); + + $template = str_replace('%hostUrl%', $data->hostUrl, $template); + $template = str_replace('%boardId%', $data->boardId, $template); + + $template = str_replace('%username%', $data->username, $template); + $template = str_replace('%boardName%', $data->boardName, $template); + + $template = str_replace('%comment%', $data->comment, $template); + $template = str_replace('%taskName%', $data->taskName, $template); + + $template = + str_replace('%taskDescription%', $data->taskDescription, $template); + $template = str_replace('%taskDueDate%', $data->taskDueDate, $template); + $template = str_replace('%taskAssignees%', $data->taskAssignees, $template); + $template = + str_replace('%taskCategories%', $data->taskCategories, $template); + $template = str_replace('%taskPoints%', $data->taskPoints, $template); + $template = + str_replace('%taskColumnName%', $data->taskColumnName, $template); + $template = str_replace('%taskPosition%', $data->taskPosition, $template); + + return $template; + } + + /** + * @codeCoverageIgnore + */ + private function getTemplate($type) { + $template = ''; + + switch($type) { + case 'newBoard': + $template = $this->strings->mail_template_newBoard; + break; + + case 'newComment': + $template = $this->strings->mail_template_newComment; + break; + + case 'newTask': + $template = $this->strings->mail_template_newTask; + + case 'editBoard': + $template = $this->strings->mail_template_editBoard; + break; + + case 'editComment': + $template = $this->strings->mail_template_editComment; + break; + + case 'editTask': + $template = $this->strings->mail_template_editTask; + break; + + case 'removeBoard': + $template = $this->strings->mail_template_removeBoard; + break; + + case 'removeComment': + $template = $this->strings->mail_template_removeComment; + break; + + case 'removeTask': + $template = $this->strings->mail_template_removeTask; + break; + } + + $template .= $this->strings->mail_template_openBoardLink; + + return $template; + } + + private function initMail() { + $this->mail = new PHPMailer(); + $this->mail->isSendmail(); + + $this->mail->setFrom(Mailer::FROM_EMAIL, Mailer::FROM_NAME); + $this->mail->CharSet = PHPMailer::CHARSET_UTF8; + + // @codeCoverageIgnoreStart + if (!Mailer::USE_SENDMAIL) { + $this->mail->isSMTP(); + + $this->mail->Host = Mailer::SMTP_HOST; + $this->mail->Port = Mailer::SMTP_PORT; + $this->mail->Username = Mailer::SMTP_USER; + $this->mail->Password = Mailer::SMTP_PASS; + + $this->mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; + $this->mail->SMTPAuth = true; + } + // @codeCoverageIgnoreEnd + } + + private function loadStrings($lang) { + $json = '{}'; + + try { + $json = + file_get_contents(__DIR__ . '/../../strings/' . $lang . '_api.json'); + } catch (Exception $ex) { + $ex->getMessage(); + + $json = file_get_contents(__DIR__ . '/../../json/' . $lang . '_api.json'); + } + + $this->strings = json_decode($json); + } +} diff --git a/scripts/install b/scripts/install index 02f478e..57d341a 100644 --- a/scripts/install +++ b/scripts/install @@ -90,6 +90,17 @@ ynh_script_progression --message="Configuring PHP-FPM..." --weight=3 ynh_add_fpm_config --package="$extra_php_dependencies" phpversion=$(ynh_app_setting_get --app=$app --key=phpversion) +#================================================= +# ADD A CONFIGURATION +#================================================= +ynh_script_progression --message="Adding a configuration file..." --time --weight=1 + +dir="__DIR__" +ynh_add_config --template="../conf/Mailer.php" --destination="$final_path/api/helpers/Mailer.php" + +chmod 400 "$final_path/api/helpers/Mailer.php" +chown $app:$app "$final_path/api/helpers/Mailer.php" + #================================================= # INTEGRATE SERVICE IN YUNOHOST #=================================================