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}