From 5aaf5654f22d1859d28ad323feca17e7cf968edd Mon Sep 17 00:00:00 2001 From: Erik Thuning <boooink@gmail.com> Date: Wed, 14 Feb 2024 10:46:28 +0100 Subject: [PATCH 1/4] Added comment to the subject prefix setting --- config.php.example | 1 + 1 file changed, 1 insertion(+) diff --git a/config.php.example b/config.php.example index 32cc899..82ee321 100644 --- a/config.php.example +++ b/config.php.example @@ -7,6 +7,7 @@ $db_pass = 'dbpassword'; $db_name = 'dbuser'; # Email subject prefix +# Will be prepended without change, so should probably end with a space $email_subject_prefix = "System name: "; # Address to use as the sender for reminder emails From 7cb0b1ea57241366ec52b1717584cdb719d40dec Mon Sep 17 00:00:00 2001 From: Erik Thuning <boooink@gmail.com> Date: Wed, 14 Feb 2024 10:48:01 +0100 Subject: [PATCH 2/4] Updated the Cron.php email logic to use configurable fragments instead of hardcoded text --- email-fragments.txt.example | 29 ++++++++++++++++++++++++ include/Cron.php | 45 ++++++++++++++++++++----------------- 2 files changed, 54 insertions(+), 20 deletions(-) create mode 100644 email-fragments.txt.example diff --git a/email-fragments.txt.example b/email-fragments.txt.example new file mode 100644 index 0000000..512269f --- /dev/null +++ b/email-fragments.txt.example @@ -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 diff --git a/include/Cron.php b/include/Cron.php index 9fcaed8..3d58a3f 100644 --- a/include/Cron.php +++ b/include/Cron.php @@ -15,6 +15,7 @@ class Cron { $this->run_interval = DateInterval::createFromDateString('1 day'); $this->kvs = new Kvs(); $this->ldap = new Ldap(); + $this->email_fragments = get_fragments('./email-fragments.txt'); $days = $this->warn_time->d; $this->strings = array( @@ -148,18 +149,21 @@ class Cron { $info_sv = array(); $info_en = array(); if($new_count > 0) { - $info_sv[] = "Eventuella artiklar du inte hämtat ut redan kan hämtas från Helpdesk."; - $info_en[] = "Any products you haven't already picked up can be collected from Helpdesk."; + $info_sv[] = $this->email_fragments['sv_new_loans_pickup']; + $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_en[] = "Please reply to this email if you have any questions."; $info_sv = implode(' ', $info_sv); $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 Hej $name! -Det här är ett automatiskt meddelande från Helpdesk. +$intro_sv $list_sv @@ -167,17 +171,13 @@ $info_sv ---- -This is an automated message from Helpdesk. +$intro_en $list_en $info_en -Mvh -DSV Helpdesk -helpdesk@dsv.su.se -08 - 16 16 48 - +$footer EOF; $this->send_email($uid, $subject, $message); } @@ -262,7 +262,9 @@ EOF; $loan = "lånet"; $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; case 'en': if($count > 1) { @@ -272,7 +274,9 @@ EOF; $loan = "loan"; $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; default: throw new Exception("Invalid language: ".$lang); @@ -291,6 +295,9 @@ EOF; $subject = $this->make_reminder_subject($expiring_count, $overdue_count); + $intro_sv = $this->email_fragments['sv_reminder_intro']; + $intro_en = $this->email_fragments['en_reminder_intro']; + $info_sv = array(); $info_en = array(); if($expiring_count > 0) { @@ -302,15 +309,17 @@ EOF; $info_en[] = $this->make_notice('en', 'overdue', $overdue); } $info_sv = implode("\n\n", $info_sv); - $returns_sv = $this->make_return_info('sv', $total); - $info_en = implode("\n\n", $info_en); + + $returns_sv = $this->make_return_info('sv', $total); $returns_en = $this->make_return_info('en', $total); + $footer = $this->email_fragments['footer']; + $message = <<<EOF Hej $name! -Det här är en automatisk påminnelse om lånade artiklar från Helpdesk. +$intro_sv $info_sv @@ -318,17 +327,13 @@ $returns_sv ---- -This is an automated reminder regarding items on loan from Helpdesk. +$intro_en $info_en $returns_en -Mvh -DSV Helpdesk -helpdesk@dsv.su.se -08 - 16 16 48 - +$footer EOF; $this->send_email($uid, $subject, $message); } From 8afeeb3fc50fc6940aff50182c48417c7627eee0 Mon Sep 17 00:00:00 2001 From: Erik Thuning <boooink@gmail.com> Date: Wed, 14 Feb 2024 10:54:33 +0100 Subject: [PATCH 3/4] Ignoring the email fragments file --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 54a456b..abe7e9a 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ .#* .htaccess config.php +email-fragments.txt test* From bd8e50493b22588b7129201a2a46f08bfde8b0b2 Mon Sep 17 00:00:00 2001 From: Erik Thuning <boooink@gmail.com> Date: Wed, 14 Feb 2024 10:54:48 +0100 Subject: [PATCH 4/4] Aded minimal documentation --- README.md | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index c8475f3..727903a 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,16 @@ # Boka2 - -There should be a description here -Additional line +Track an inventory of products -additional line 2 +## Installation + + * Clone the repo + * copy `config.php.example` to `config.php` and set correct values + * copy `email-fragments.txt.example` to `email-fragments.txt` and change as necessary + * point a webserver to the project root + * REMOTE_USER authentication should be configured for the entire application (context path /) + * exempt `/cron.php` from authentication + * set up a cron job along these lines: + ``` + * * * * 1-5 root curl -sS https://example.com/cron.php + ```