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 = " \"(statut)\" "; break; case '1comite': $statut='re'; if (isset($trads[$statut])&&strlen($trads[$statut])!=''){ $afficher = " \"(statut)\" "; } 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 = " \"(statut)\" "; $retour = $afficher.$trads['ad'].$afficher; } if ($trads['re']!=''&&$trads['re']!=$trads['vi']){ $image = 'redac-12.gif'; $afficher = " \"(statut)\" "; $retour .= '
'.$afficher.$trads['re'].$afficher; } if ($trads['vi']!=''&&$trads['vi']!=$trads['pu']){ $image = 'visit-12.gif'; $afficher = " \"(statut)\" "; $retour .= '
'.$afficher.$trads['vi'].$afficher; } if ($trads['pu']!=''){ $image = 'plus.gif'; $afficher = " \"(statut)\" "; $retour .= '
'.$afficher.$trads['pu'].$afficher; } return $retour; } if ($statut=='ad'&&$trads['ad']!=''&&$trads['ad']!=$trads['re']){ $image = 'admin-12.gif'; $afficher = " \"(statut)\" "; }else if ($trads['re']!=''&&$trads['re']!=$trads['vi']&&$trads['re']!=$trads['pu']){ $image = 'redac-12.gif'; $afficher = " \"(statut)\" "; }else if ($trads['vi']!=''&&$trads['vi']!=$trads['pu']){ $image = 'visit-12.gif'; $afficher = " \"(statut)\" "; } else if ($trads['pu']!=''){ $image = 'plus.gif'; $afficher = " \"(statut)\" "; } 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; } /*******************************************************************************************/ ?>