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
+  ```