From 3c8a0485dea4e545838ac35a1a34645d73f2689f Mon Sep 17 00:00:00 2001
From: root <root@dsv.su.se>
Date: Tue, 14 Sep 2021 22:45:28 +0200
Subject: [PATCH] Testing a hopefully faster ldap lookup

---
 include/Ajax.php         | 2 +-
 include/CheckoutPage.php | 2 +-
 include/Cron.php         | 6 ++++--
 include/Page.php         | 6 +++---
 include/Responder.php    | 2 ++
 include/User.php         | 9 ++++-----
 include/UserPage.php     | 2 +-
 7 files changed, 16 insertions(+), 13 deletions(-)

diff --git a/include/Ajax.php b/include/Ajax.php
index 8ddadd3..4ede200 100644
--- a/include/Ajax.php
+++ b/include/Ajax.php
@@ -112,7 +112,7 @@ class Ajax extends Responder {
             $user = $loan->get_user();
             $userlink = replace(array('page' => 'users',
                                       'id'   => $user->get_id(),
-                                      'name' => $user->get_displayname()),
+                                      'name' => $user->get_displayname($this->ldap)),
                                 $this->fragments['item_link']);
             $productlink = replace(array('page' => 'products',
                                          'id'   => $product->get_id(),
diff --git a/include/CheckoutPage.php b/include/CheckoutPage.php
index e07f199..1da4759 100644
--- a/include/CheckoutPage.php
+++ b/include/CheckoutPage.php
@@ -33,7 +33,7 @@ class CheckoutPage extends Page {
         $disabled = 'disabled';
         if($this->user !== null) {
             $username = $this->user->get_name();
-            $displayname = $this->user->get_displayname();
+            $displayname = $this->user->get_displayname($this->ldap);
             $notes = $this->user->get_notes();
             $enddate = format_date(default_loan_end(time()));
             $disabled = '';
diff --git a/include/Cron.php b/include/Cron.php
index 50682f7..7ca58e8 100644
--- a/include/Cron.php
+++ b/include/Cron.php
@@ -4,11 +4,13 @@ class Cron {
     private $sender = '';
     private $error = '';
     private $kvs;
+    private $ldap;
     public function __construct($sender, $error) {
         $this->now = time();
         $this->sender = $sender;
         $this->error = $error;
         $this->kvs = new Kvs();
+        $this->ldap = new Ldap();
     }
 
     public function run() {
@@ -89,7 +91,7 @@ EOF;
 
         $subject = replace(array('count' => $overdue_count,
                                  'late'  => $late), $subject_template);
-        $message = replace(array('name'       => $user->get_displayname(),
+        $message = replace(array('name'       => $user->get_displayname($this->ldap),
                                  'list_sv'    => $reminder_list_sv,
                                  'product_sv' => $product_sv,
                                  'it_sv'      => $it_sv,
@@ -101,7 +103,7 @@ EOF;
                            $message_template);
 
         try {
-            mb_send_mail($user->get_email(),
+            mb_send_mail($user->get_email($this->ldap),
                          $subject,
                          $message,
                          'From: '.$this->sender);
diff --git a/include/Page.php b/include/Page.php
index b783547..696bed7 100644
--- a/include/Page.php
+++ b/include/Page.php
@@ -103,7 +103,7 @@ abstract class Page extends Responder {
                 $replacements['has_notes'] = '*';
             }
             $userlink = replace(array('id' => $user->get_id(),
-                                      'name' => $user->get_displayname(),
+                                      'name' => $user->get_displayname($this->ldap),
                                       'page' => 'users'),
                                 $this->fragments['item_link']);
             $replacements['item_link'] = $userlink;
@@ -151,7 +151,7 @@ abstract class Page extends Responder {
                 case 'overdue':
                     $loan = $product->get_active_loan();
                     $user = $loan->get_user();
-                    $replacements = array('name' => $user->get_displayname(),
+                    $replacements = array('name' => $user->get_displayname($this->ldap),
                                           'id'   => $user->get_id(),
                                           'page' => 'users');
                     $userlink = replace($replacements,
@@ -237,7 +237,7 @@ abstract class Page extends Responder {
                 }
             } else if($event instanceof Loan) {
                 $user = $event->get_user();
-                $userlink = replace(array('name' => $user->get_displayname(),
+                $userlink = replace(array('name' => $user->get_displayname($this->ldap),
                                           'id' => $user->get_id(),
                                           'page' => 'users'),
                                     $this->fragments['item_link']);
diff --git a/include/Responder.php b/include/Responder.php
index 6d05f51..ff621cd 100644
--- a/include/Responder.php
+++ b/include/Responder.php
@@ -1,9 +1,11 @@
 <?php
 abstract class Responder {
     protected $fragments = array();
+    protected $ldap = null;
     
     public function __construct() {
         $this->fragments = get_fragments('./html/fragments.html');
+        $this->ldap = new Ldap();
     }
     
     final protected function escape_tags($tags) {
diff --git a/include/User.php b/include/User.php
index 80ed297..658fea7 100644
--- a/include/User.php
+++ b/include/User.php
@@ -33,7 +33,6 @@ class User {
         }
         $this->id = $id;
         $this->update_fields();
-        $this->ldap = new Ldap();
     }
     
     private function update_fields() {
@@ -68,17 +67,17 @@ class User {
         return true;
     }
 
-    public function get_displayname() {
+    public function get_displayname($ldap) {
         try {
-            return $this->ldap->get_user($this->name);
+            return $ldap->get_user($this->name);
         } catch(Exception $e) {
             return 'Ej i SUKAT';
         }
     }
 
-    public function get_email() {
+    public function get_email($ldap, $format = true) {
         try {
-            return $this->ldap->get_user_email($this->name);
+            return $ldap->get_user_email($this->name);
         } catch(Exception $e) {
             return 'Mailadress saknas';
         }
diff --git a/include/UserPage.php b/include/UserPage.php
index ab1b544..c5ff4e1 100644
--- a/include/UserPage.php
+++ b/include/UserPage.php
@@ -56,7 +56,7 @@ class UserPage extends Page {
                              'inactive_loans' => $table_inactive,
                              'id' => $this->user->get_id(),
                              'name' => $this->user->get_name(),
-                             'displayname' => $this->user->get_displayname(),
+                             'displayname' => $this->user->get_displayname($this->ldap),
                              'notes' => $this->user->get_notes()),
                        $this->fragments['user_details']);
     }