Updated the Cron.php email logic to use configurable fragments instead of hardcoded text

This commit is contained in:
Erik Thuning 2024-02-14 10:48:01 +01:00
parent 5aaf5654f2
commit 7cb0b1ea57
2 changed files with 54 additions and 20 deletions

@ -0,0 +1,29 @@
¤¤ sv_new_loans_intro ¤¤
Det här är ett automatiskt meddelande från Helpdesk.
¤¤ en_new_loans_intro ¤¤
This is an automated message from Helpdesk.
¤¤ sv_reminder_intro ¤¤
Det här är en automatisk påminnelse om lånade artiklar från Helpdesk.
¤¤ en_reminder_intro ¤¤
This is an automated reminder regarding items on loan from Helpdesk.
¤¤ sv_new_loans_pickup ¤¤
Eventuella artiklar du inte hämtat ut redan kan hämtas från Helpdesk.
¤¤ en_new_loans_pickup ¤¤
Any products you haven't already picked up can be collected from Helpdesk.
¤¤ sv_return_info ¤¤
Vänligen kontakta Helpdesk för att förlänga ¤loan¤ eller lämna tillbaka ¤product¤.
¤¤ en_return_info ¤¤
Please contact Helpdesk in order to extend the ¤loan¤ or return the ¤product¤.
¤¤ footer ¤¤
Mvh
DSV Helpdesk
helpdesk@dsv.su.se
08 - 16 16 48

@ -15,6 +15,7 @@ class Cron {
$this->run_interval = DateInterval::createFromDateString('1 day'); $this->run_interval = DateInterval::createFromDateString('1 day');
$this->kvs = new Kvs(); $this->kvs = new Kvs();
$this->ldap = new Ldap(); $this->ldap = new Ldap();
$this->email_fragments = get_fragments('./email-fragments.txt');
$days = $this->warn_time->d; $days = $this->warn_time->d;
$this->strings = array( $this->strings = array(
@ -148,18 +149,21 @@ class Cron {
$info_sv = array(); $info_sv = array();
$info_en = array(); $info_en = array();
if($new_count > 0) { if($new_count > 0) {
$info_sv[] = "Eventuella artiklar du inte hämtat ut redan kan hämtas från Helpdesk."; $info_sv[] = $this->email_fragments['sv_new_loans_pickup'];
$info_en[] = "Any products you haven't already picked up can be collected from Helpdesk."; $info_en[] = $this->email_fragments['en_new_loans_pickup'];
} }
$info_sv[] = "Svara på det här mailet om du har några frågor."; $info_sv[] = "Svara på det här mailet om du har några frågor.";
$info_en[] = "Please reply to this email if you have any questions."; $info_en[] = "Please reply to this email if you have any questions.";
$info_sv = implode(' ', $info_sv); $info_sv = implode(' ', $info_sv);
$info_en = implode(' ', $info_en); $info_en = implode(' ', $info_en);
$intro_sv = $this->email_fragments['sv_new_loans_intro'];
$intro_en = $this->email_fragments['en_new_loans_intro'];
$footer = $this->email_fragments['footer'];
$message = <<<EOF $message = <<<EOF
Hej $name! Hej $name!
Det här är ett automatiskt meddelande från Helpdesk. $intro_sv
$list_sv $list_sv
@ -167,17 +171,13 @@ $info_sv
---- ----
This is an automated message from Helpdesk. $intro_en
$list_en $list_en
$info_en $info_en
Mvh $footer
DSV Helpdesk
helpdesk@dsv.su.se
08 - 16 16 48
EOF; EOF;
$this->send_email($uid, $subject, $message); $this->send_email($uid, $subject, $message);
} }
@ -262,7 +262,9 @@ EOF;
$loan = "lånet"; $loan = "lånet";
$product = "artikeln"; $product = "artikeln";
} }
return "Vänligen kontakta Helpdesk för att förlänga $loan eller lämna tillbaka $product."; return replace(array('loan' => $loan,
'product' => $product),
$this->email_fragments['sv_return_info']);
break; break;
case 'en': case 'en':
if($count > 1) { if($count > 1) {
@ -272,7 +274,9 @@ EOF;
$loan = "loan"; $loan = "loan";
$product = "item"; $product = "item";
} }
return "Please contact Helpdesk in order to extend the $loan or return the $product."; return replace(array('loan' => $loan,
'product' => $product),
$this->email_fragments['en_return_info']);
break; break;
default: default:
throw new Exception("Invalid language: ".$lang); throw new Exception("Invalid language: ".$lang);
@ -291,6 +295,9 @@ EOF;
$subject = $this->make_reminder_subject($expiring_count, $subject = $this->make_reminder_subject($expiring_count,
$overdue_count); $overdue_count);
$intro_sv = $this->email_fragments['sv_reminder_intro'];
$intro_en = $this->email_fragments['en_reminder_intro'];
$info_sv = array(); $info_sv = array();
$info_en = array(); $info_en = array();
if($expiring_count > 0) { if($expiring_count > 0) {
@ -302,15 +309,17 @@ EOF;
$info_en[] = $this->make_notice('en', 'overdue', $overdue); $info_en[] = $this->make_notice('en', 'overdue', $overdue);
} }
$info_sv = implode("\n\n", $info_sv); $info_sv = implode("\n\n", $info_sv);
$returns_sv = $this->make_return_info('sv', $total);
$info_en = implode("\n\n", $info_en); $info_en = implode("\n\n", $info_en);
$returns_sv = $this->make_return_info('sv', $total);
$returns_en = $this->make_return_info('en', $total); $returns_en = $this->make_return_info('en', $total);
$footer = $this->email_fragments['footer'];
$message = <<<EOF $message = <<<EOF
Hej $name! Hej $name!
Det här är en automatisk påminnelse om lånade artiklar från Helpdesk. $intro_sv
$info_sv $info_sv
@ -318,17 +327,13 @@ $returns_sv
---- ----
This is an automated reminder regarding items on loan from Helpdesk. $intro_en
$info_en $info_en
$returns_en $returns_en
Mvh $footer
DSV Helpdesk
helpdesk@dsv.su.se
08 - 16 16 48
EOF; EOF;
$this->send_email($uid, $subject, $message); $this->send_email($uid, $subject, $message);
} }