LSsearch : improve and add doc for formaterLSformat extraDisplayedColumns's parameter
authorBenjamin Renard <brenard@easter-eggs.com>
Wed, 12 Aug 2015 12:26:21 +0000 (14:26 +0200)
committerBenjamin Renard <brenard@easter-eggs.com>
Wed, 12 Aug 2015 12:26:21 +0000 (14:26 +0200)
doc/conf/LSobject/LSsearch.docbook
public_html/includes/class/class.LSsearch.php
public_html/includes/class/class.LSsearchEntry.php

index 129a4bb..768282b 100644 (file)
@@ -50,7 +50,8 @@ configuration des &LSobjects;, dans la variable <varname>LSsearch</varname>
       'alternativeLSformats' => array (
         '[LSformat 1]',
         '[LSformat 2]'
-      )
+      ),
+      'formaterLSformat' => '[LSformat]',
     )
   ),
   'customActions' =>  array (
@@ -268,6 +269,19 @@ contexte dans lequel cette recherche est effectuée.</para>
         </listitem>
       </varlistentry>
 
+      <varlistentry>
+        <term>formaterLSformat</term>
+        <listitem>
+          <simpara>&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 <literal>
+          LSformat</literal> et <literal>alternativeLSformats</literal> 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 <literal>val</literal>.</simpara>
+        </listitem>
+      </varlistentry>
+
     </variablelist>
   </listitem>
 </varlistentry>
index e19d4a6..d3ddc4e 100644 (file)
@@ -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']);
         }
index d29271f..90a398e 100644 (file)
@@ -47,6 +47,9 @@ class LSsearchEntry {
   
   // Cache
   private $cache=array();
+
+  // Other values
+  private $other_values=array();
   
   /**
    * Constructor
@@ -81,12 +84,27 @@ 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
    * 
    * @param[in] $format string The format of the value
@@ -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;
     }