From 1b28066189dd693427452d9322e0639c2ee9734f Mon Sep 17 00:00:00 2001 From: Benjamin Renard Date: Wed, 5 Jun 2019 12:40:56 +0200 Subject: [PATCH] Fix global_search in multiple subDn context --- public_html/global_search.php | 9 ++++---- .../includes/class/class.LSsession.php | 22 +++++++++++++++---- public_html/templates/default/top.tpl | 2 +- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/public_html/global_search.php b/public_html/global_search.php index 764b74f9..cc0daafb 100644 --- a/public_html/global_search.php +++ b/public_html/global_search.php @@ -24,7 +24,7 @@ require_once 'core.php'; if(LSsession :: startLSsession()) { if (LSsession :: globalSearch()) { - $LSobjects = LSsession :: $ldapServer['LSaccess']; + $LSaccess = LSsession :: getLSaccess(); $pattern = (isset($_REQUEST['pattern'])?$_REQUEST['pattern']:''); $LSview_actions=array(); @@ -44,8 +44,8 @@ if(LSsession :: startLSsession()) { if (LSsession :: loadLSclass('LSsearch')) { $pages=array(); - foreach ($LSobjects as $LSobject) { - if ( LSsession :: loadLSobject($LSobject) ) { + foreach ($LSaccess as $LSobject => $label) { + if ( $LSobject != SELF && LSsession :: loadLSobject($LSobject) ) { if (!LSconfig::get("LSobjects.$LSobject.globalSearch", true, 'bool')) continue; $object = new $LSobject(); @@ -80,6 +80,7 @@ if(LSsession :: startLSsession()) { } } } + $LSsearch -> afterUsingResult(); } } } @@ -94,8 +95,6 @@ if(LSsession :: startLSsession()) { LStemplate :: assign('pattern',$pattern); LStemplate :: assign('pages',$pages); LSsession :: setTemplate('global_search.tpl'); - - LStemplate :: addEvent('displayed', array($LSsearch, 'afterUsingResult')); } else { LSerror :: addErrorCode('LSsession_11'); diff --git a/public_html/includes/class/class.LSsession.php b/public_html/includes/class/class.LSsession.php index f746cc36..138d9a8b 100644 --- a/public_html/includes/class/class.LSsession.php +++ b/public_html/includes/class/class.LSsession.php @@ -1404,10 +1404,9 @@ class LSsession { $Css_txt.="\n"; } LStemplate :: assign('LSsession_css',$Css_txt); - - if (isset(self :: $LSaccess[self :: $topDn])) { - LStemplate :: assign('LSaccess',self :: $LSaccess[self :: $topDn]); - } + + // Access + LStemplate :: assign('LSaccess', self :: getLSaccess()); LStemplate :: assign('LSaddonsViewsAccess',self :: $LSaddonsViewsAccess); // Niveau @@ -1785,6 +1784,21 @@ class LSsession { $_SESSION['LSsession']['LSaccess'] = $LSaccess; } + /** + * Get user access + * + * @param[in] $topDn string Top DN (optional, default : current) + * + * @retval array User's access + **/ + public static function getLSaccess($topDn=null) { + if (is_null($topDn)) $topDn = self :: $topDn; + if (isset(self :: $LSaccess[self :: $topDn])) { + return self :: $LSaccess[self :: $topDn]; + } + return array(); + } + /** * Load user access to LSaddons views * diff --git a/public_html/templates/default/top.tpl b/public_html/templates/default/top.tpl index cb464ed5..36c81008 100644 --- a/public_html/templates/default/top.tpl +++ b/public_html/templates/default/top.tpl @@ -29,7 +29,7 @@ {/if} - {if $globalSearch} + {if $globalSearch && $LSaccess}