From 3f350d331c866e227e72315ef5163ccc07a636dc Mon Sep 17 00:00:00 2001 From: Benjamin Renard Date: Wed, 12 Aug 2015 14:26:21 +0200 Subject: [PATCH] LSsearch : improve and add doc for formaterLSformat extraDisplayedColumns's parameter --- doc/conf/LSobject/LSsearch.docbook | 16 +++++++++++++- public_html/includes/class/class.LSsearch.php | 6 +++++ .../includes/class/class.LSsearchEntry.php | 22 +++++++++++++++++++ 3 files changed, 43 insertions(+), 1 deletion(-) diff --git a/doc/conf/LSobject/LSsearch.docbook b/doc/conf/LSobject/LSsearch.docbook index 129a4bbd..768282b6 100644 --- a/doc/conf/LSobject/LSsearch.docbook +++ b/doc/conf/LSobject/LSsearch.docbook @@ -50,7 +50,8 @@ configuration des &LSobjects;, dans la variable LSsearch 'alternativeLSformats' => array ( '[LSformat 1]', '[LSformat 2]' - ) + ), + 'formaterLSformat' => '[LSformat]', ) ), 'customActions' => array ( @@ -268,6 +269,19 @@ contexte dans lequel cette recherche est effectuée. + + formaterLSformat + + &LSformat; optionnel permettant de mettre en forme le résultat obtenu des + &LSformats; précédents. Ce &LSformat; ne sera utilisé que si le résultat obtenu + précédement n'est pas vide. Il est ainsi possible d'utiliser les paramètres + LSformat et alternativeLSformats afin de récupérer la + valeur à afficher, puis de la mettre en forme grâce à ce &LSformat;. Ce format est + composé à partir des attributs des objets LDAP dans leur format brut et de la valeur + retournés précedement accessible via la variable val. + + + diff --git a/public_html/includes/class/class.LSsearch.php b/public_html/includes/class/class.LSsearch.php index e19d4a61..d3ddc4e7 100644 --- a/public_html/includes/class/class.LSsearch.php +++ b/public_html/includes/class/class.LSsearch.php @@ -807,6 +807,12 @@ class LSsearch { else { $attrs=array_merge($attrs,getFieldInFormat($conf['alternativeLSformats'])); } + if(isset($conf['formaterLSformat'])) { + $attrs=array_unique(array_merge($attrs,getFieldInFormat($conf['formaterLSformat']))); + if(($key = array_search('val', $attrs)) !== false) { + unset($attrs[$key]); + } + } if(is_array($retval['attributes'])) { $retval['attributes']=array_merge($attrs,$retval['attributes']); } diff --git a/public_html/includes/class/class.LSsearchEntry.php b/public_html/includes/class/class.LSsearchEntry.php index d29271fc..90a398ef 100644 --- a/public_html/includes/class/class.LSsearchEntry.php +++ b/public_html/includes/class/class.LSsearchEntry.php @@ -47,6 +47,9 @@ class LSsearchEntry { // Cache private $cache=array(); + + // Other values + private $other_values=array(); /** * Constructor @@ -81,11 +84,26 @@ class LSsearchEntry { if (in_array($key,array_keys($this -> attrs))) { return $this -> attrs[$key]; } + elseif (array_key_exists($key,$this->other_values)) { + return $this->other_values[$key]; + } elseif ($key=='subDn' || $key=='subDnName') { return $this -> subDn; } } + /** + * Add value in array $this -> other_values + * + * @param[in] $name string The value name + * @param[in] $value mixed The value + * + * @retval void + **/ + function registerOtherValue($name,$value) { + $this -> other_values[$name]=$value; + } + /** * Get formated text value of entry * @@ -185,6 +203,10 @@ class LSsearchEntry { if (!empty($ret)) break; } } + if (!empty($ret) && isset($this->LSsearch->extraDisplayedColumns[$key]['formaterLSformat'])) { + $this -> registerOtherValue('val',$ret); + $ret=$this -> getFData($this->LSsearch->extraDisplayedColumns[$key]['formaterLSformat']); + } $this -> cache[$key] = $ret; return $ret; }