From 6a1c9bf8f9b79871388927f4d7b9904f5d87d60a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=B4me=20Chilliet?= <come.chilliet@fusiondirectory.org>
Date: Tue, 7 Jul 2020 15:52:36 +0200
Subject: [PATCH] :ambulance: fix(core) Do not call renderTree unless needed

This avoid a problem in webservice where it was crashing because smarty
 is not setup.

issue #6071
---
 include/class_baseSelector.inc   | 12 +++++++++---
 include/class_standAlonePage.inc |  1 +
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/include/class_baseSelector.inc b/include/class_baseSelector.inc
index c72940e4d..88e936395 100644
--- a/include/class_baseSelector.inc
+++ b/include/class_baseSelector.inc
@@ -1,8 +1,9 @@
 <?php
 /*
   This code is part of FusionDirectory (http://www.fusiondirectory.org/)
+
   Copyright (C) 2003-2010  Cajus Pollmeier
-  Copyright (C) 2011-2019  FusionDirectory
+  Copyright (C) 2011-2020  FusionDirectory
 
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -34,7 +35,7 @@ class baseSelector
   private $action;
   private $height         = 500;
   private $submitButton   = TRUE;
-  protected $tree         = '';
+  protected $tree         = NULL;
   protected $pathMapping  = [];
   protected $lastState;
 
@@ -181,7 +182,8 @@ class baseSelector
       return TRUE;
     }
 
-    $this->renderTree();
+    /* Force tree render next time render() is called */
+    $this->tree = NULL;
 
     $this->lastState = TRUE;
     return TRUE;
@@ -255,6 +257,10 @@ class baseSelector
    */
   function render (): string
   {
+    if (!isset($this->tree)) {
+      $this->renderTree();
+    }
+
     return $this->tree;
   }
 
diff --git a/include/class_standAlonePage.inc b/include/class_standAlonePage.inc
index 705d96fa8..0633ae6a5 100644
--- a/include/class_standAlonePage.inc
+++ b/include/class_standAlonePage.inc
@@ -139,6 +139,7 @@ class standAlonePage
   function setupSmarty ()
   {
     global $config;
+
     $smarty = get_smarty();
 
     /* Set template compile directory */
-- 
GitLab