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;
}