sont librement inspirés des tags de SPIP
// Ils permettrent d'afficher, tant dans l'espace privé que public, des contenues
// différents selon le statut de l'internaute.
/* Exemples d'utilisations:
Ce texte sera affiché si la personne ne s'est pas identifier
[ad]Ce texte sera affiché si la personne s'est identifier comme Administrateur
[re]Ce texte sera affiché si la personne s'est identifier comme Rédacteur
[vi]Ce texte sera affiché si la personne s'est identifier comme Visiteur
[ad]
Les Administrateurs identifiés seront les seuls à voir ce texte dans l'interface privée et publique.
[re]
Les rédacteurs identifiés seront les seuls à voir ce texte dans l'interface publique. Dans l'interface privée, les Administrateurs verront également ce texte pour faciliter la validation.
[vi]
Les Visiteurs identifiés seront les seuls à voir ce texte dans l'interface publique. Dans l'interface privée, les Administrateurs verront également ce texte pour faciliter la validation.
[pu]
Les personnes non identifiés verront ce texte dans l'interface publique. Dans l'interface privée, les Administrateurs verront également ce texte pour faciliter la validation.
*/
function avant_propre($texte) {
return extraire_statut($texte);
}
function multi_statut ($trads) {
// Donner la valeur 1 à la variable $affiche_tout pour permettre aux administrateurs de voir dans l'interface privée toutes les versions.
// Donner la valeur 0 à la variable $affiche_tout pour permettre aux administrateurs de voir dans l'interface privée toutes la même version
// qu'il verront dans l'interface publique
$affiche_tout=1;
global $id_rubrique;
$image = 'visit-12.gif';
$statut = $GLOBALS['auteur_session']['statut'];
// S'il n'y a aucun texte spécifique pour les visiteurs, afficher pour les visiteurs le texte par défaut
if ($trads['vi']=='')$trads['vi']=$trads['pu'];
// S'il n'y a aucun texte spécifique pour les rédacteurs, afficher pour les rédacteurs le texte le texte des visiteurs
if ($trads['re']==''){
$trads['re']=$trads['vi'];
}else{
$image = 'redac-12.gif';
}
// S'il n'y a aucun texte spécifique pour les administrateurs, afficher pour les administrateurs le texte le texte des rédacteurs
if ($trads['ad']==''){
$trads['ad']=$trads['re'];
}else{
$image = 'admin-12.gif';
}
switch ($statut) {
case '0minirezo':
$statut='ad';
if ($trads[$statut]!='')
$afficher = "
";
break;
case '1comite':
$statut='re';
if (isset($trads[$statut])&&strlen($trads[$statut])!=''){
$afficher = "
";
}
break;
case '6forum':
$statut='vi';
break;
default:
$statut='pu';
break;
}
if (isset($trads[$statut])) {
// dans l'espace prive, mettre une image admin
if (!_DIR_RESTREINT) {
if($statut=='ad'&&$affiche_tout){
if ($trads['ad']!=''&&$trads['ad']!=$trads['re']){
$image = 'admin-12.gif';
$afficher = "
";
$retour = $afficher.$trads['ad'].$afficher;
}
if ($trads['re']!=''&&$trads['re']!=$trads['vi']){
$image = 'redac-12.gif';
$afficher = "
";
$retour .= '
'.$afficher.$trads['re'].$afficher;
}
if ($trads['vi']!=''&&$trads['vi']!=$trads['pu']){
$image = 'visit-12.gif';
$afficher = "
";
$retour .= '
'.$afficher.$trads['vi'].$afficher;
}
if ($trads['pu']!=''){
$image = 'plus.gif';
$afficher = "
";
$retour .= '
'.$afficher.$trads['pu'].$afficher;
}
return $retour;
}
if ($statut=='ad'&&$trads['ad']!=''&&$trads['ad']!=$trads['re']){
$image = 'admin-12.gif';
$afficher = "
";
}else if ($trads['re']!=''&&$trads['re']!=$trads['vi']&&$trads['re']!=$trads['pu']){
$image = 'redac-12.gif';
$afficher = "
";
}else if ($trads['vi']!=''&&$trads['vi']!=$trads['pu']){
$image = 'visit-12.gif';
$afficher = "
";
}
else if ($trads['pu']!=''){
$image = 'plus.gif';
$afficher = "
";
}
return $afficher.$trads[$statut].$afficher;
}
return $trads[$statut];
}
else if (ereg('^([a-z]+)_', $statut, $regs) AND isset($trads[$regs[1]])) {
return $trads[$regs[1]];
}
else return array_shift($trads);
}
// analyse un bloc statut
function analyse_statut ($bloc) {
$statut = 'pu';
// Créer par défaut un tableau avec des valeurs vides
$trads= array('','pu'=>'','ad'=>'','re'=>'','vi'=>'');
while (preg_match("/^(.*?)[{\[]([a-z_]+)[}\]]/si", $bloc, $regs)) {
//while (preg_match("/^(.*?)[\[]([a-z_]+)[\]]/si", $bloc, $regs)){//http://permalink.gmane.org/gmane.comp.web.spip.devel/29558
$texte = trim($regs[1]);
if ($texte OR $statut)
$trads[$statut] = $texte;
$bloc = substr($bloc, strlen($regs[0]));
$statut = $regs[2];
}
$trads[$statut] = $bloc;
return multi_statut($trads);
}
// repere les blocs statut dans un texte et extrait le bon
function extraire_statut ($letexte) {
if (strpos($letexte, '') === false) return $letexte; // perf
if (preg_match_all("@(.*?)@s", $letexte, $regs, PREG_SET_ORDER))
foreach ($regs as $reg)
$letexte = str_replace($reg[0], analyse_statut($reg[1]), $letexte);
return $letexte;
}
/*******************************************************************************************/
?>