diff --git a/doc/conf/LSobject/LSsearch.docbook b/doc/conf/LSobject/LSsearch.docbook
index d387a321..8d7ee3a6 100644
--- a/doc/conf/LSobject/LSsearch.docbook
+++ b/doc/conf/LSobject/LSsearch.docbook
@@ -54,6 +54,10 @@ configuration des &LSobjects;, dans la variable LSsearch
'formaterLSformat' => '[LSformat]',
'formaterFunction' => '[fonction de formatage]',
'cssStyle' => '[CSS style]',
+ 'visibleTo' => array (
+ '[LSprofile 1]',
+ '[LSprofile 2]'
+ )
)
),
'customActions' => array (
@@ -304,6 +308,14 @@ contexte dans lequel cette recherche est effectuée.
+
+ visibleTo
+
+ Ce paramètre permet de restreindre la visibilité de cette colonne aux seuls
+ &LSprofiles; spécifiés. S'il est omis, la colonne sera visible pour tous.
+
+
+
diff --git a/public_html/includes/class/class.LSsearch.php b/public_html/includes/class/class.LSsearch.php
index d3ddc4e7..b5b154e3 100644
--- a/public_html/includes/class/class.LSsearch.php
+++ b/public_html/includes/class/class.LSsearch.php
@@ -1088,6 +1088,18 @@ class LSsearch {
return False;
}
}
+ elseif ($key=='visibleExtraDisplayedColumns') {
+ if ($this->params['extraDisplayedColumns'] && is_array($this -> config['extraDisplayedColumns'])) {
+ $ret=array();
+ foreach($this->config['extraDisplayedColumns'] as $col => $conf) {
+ if (isset($conf['visibleTo']) && !LSsession :: isLSprofiles($this -> basedn, $conf['visibleTo'])) {
+ continue;
+ }
+ $ret[$col]=$conf;
+ }
+ return $ret;
+ }
+ }
else {
throw new Exception('Incorrect property !');
}
diff --git a/public_html/includes/class/class.LSsession.php b/public_html/includes/class/class.LSsession.php
index fc184fbf..338b0d82 100644
--- a/public_html/includes/class/class.LSsession.php
+++ b/public_html/includes/class/class.LSsession.php
@@ -1796,9 +1796,9 @@ class LSsession {
/**
* Dit si l'utilisateur est du profil pour le DN spécifié
*
- * @param[in] string $profile de l'objet
* @param[in] string $dn DN de l'objet
- *
+ * @param[in] string $profile Profil
+ *
* @retval boolean True si l'utilisateur est du profil sur l'objet, false sinon.
*/
public static function isLSprofile($dn,$profile) {
@@ -1814,6 +1814,22 @@ class LSsession {
}
return;
}
+
+ /**
+ * Dit si l'utilisateur est d'au moins un des profils pour le DN spécifié
+ *
+ * @param[in] string $dn DN de l'objet
+ * @param[in] string $profiles Profils
+ *
+ * @retval boolean True si l'utilisateur est d'au moins un profil sur l'objet, false sinon.
+ */
+ public static function isLSprofiles($dn,$profiles) {
+ foreach ($profiles as $profile) {
+ if (self :: isLSprofile($dn,$profile))
+ return true;
+ }
+ return false;
+ }
/**
* Retourne qui est l'utilisateur par rapport à l'object
diff --git a/public_html/templates/default/viewSearch.tpl b/public_html/templates/default/viewSearch.tpl
index 0025a4b7..6bd16d25 100644
--- a/public_html/templates/default/viewSearch.tpl
+++ b/public_html/templates/default/viewSearch.tpl
@@ -71,7 +71,7 @@
{/if}
{if $LSsearch->extraDisplayedColumns}
- {foreach from=$LSsearch->extraDisplayedColumns item=conf key=cid}
+ {foreach from=$LSsearch->visibleExtraDisplayedColumns item=conf key=cid}
{if $LSsearch->sort}
@@ -95,7 +95,7 @@
| {$object->displayName} |
{if $LSsearch->displaySubDn}{$object->subDn} | {/if}
{if $LSsearch->extraDisplayedColumns}
- {foreach from=$LSsearch->extraDisplayedColumns item=conf key=cid}
+ {foreach from=$LSsearch->visibleExtraDisplayedColumns item=conf key=cid}
{$object->$cid} |
{/foreach}
{/if}
@@ -107,7 +107,7 @@
{foreachelse}
-
+ |
{$LSsearch->label_no_result}
|