[PLUGINS] ~maj spip-bonux 2.3.0-->2.3.2
[velocampus/web/www.git] / www / plugins / auto / spip-bonux / spip_bonux_fonctions.php
index c2f9d3a..1c5e02d 100644 (file)
@@ -12,8 +12,8 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 include_spip('inc/core21_filtres');
 
 /**
- * une fonction pour generer des menus avec liens
- * ou un span lorsque l'item est selectionne
+ * une fonction pour générer des menus avec liens
+ * ou un span lorsque l'item est sélectionné
  *
  * @param string $url
  * @param string $libelle
@@ -28,7 +28,7 @@ function aoustrong($url,$libelle,$on=false,$class="",$title="",$rel=""){
 
 
 /**
- * une fonction pour generer une balise img a partir d'un nom de fichier
+ * une fonction pour générer une balise img à partir d'un nom de fichier
  *
  * @param string $img
  * @param string $alt
@@ -51,7 +51,7 @@ function affiche_un_ou_plusieurs($nb,$chaine_un,$chaine_plusieurs,$var='nb'){
 }
 
 /**
- * Ajouter un timestamp a une url de fichier
+ * Ajouter un timestamp à une url de fichier
  *
  * @param unknown_type $fichier
  * @return unknown
@@ -63,15 +63,15 @@ function timestamp($fichier){
 }
 
 /**
- * Transformer un tableau d'entrees array("rubrique|9","article|8",...)
- * en un tableau contenant uniquement les identifiants d'un type donne.
- * Accepte aussi que les valeurs d'entrees soient une chaine brute
+ * Transformer un tableau d'entrées array("rubrique|9","article|8",...)
+ * en un tableau contenant uniquement les identifiants d'un type donné.
+ * Accepte aussi que les valeurs d'entrées soient une chaîne brute
  * "rubrique|9,article|8,..." 
  *
- * @param array/string $selected liste des entrees : tableau ou chaine separee par des virgules
- * @param string $type type de valeur a recuperer ('rubrique', 'article')
+ * @param array/string $selected liste des entrées : tableau ou chaîne séparée par des virgules
+ * @param string $type type de valeur à récuperer ('rubrique', 'article')
  * 
- * @return array liste des identifiants trouves.
+ * @return array liste des identifiants trouvés.
 **/
 function picker_selected($selected, $type){
        $select = array();
@@ -105,15 +105,15 @@ function picker_identifie_id_rapide($ref,$rubriques=0,$articles=0){
 }
 
 /**
- * Donner n'importe quelle information sur un objet de maniere generique.
+ * Donner n'importe quelle information sur un objet de manière générique.
  *
- * La fonction va gerer en interne deux cas particuliers les plus utilises :
+ * La fonction va gérer en interne deux cas particuliers les plus utilisés :
  * l'URL et le titre (qui n'est pas forcemment la champ SQL "titre").
  *
- * On peut ensuite personnaliser les autres infos en creant une fonction
+ * On peut ensuite personnaliser les autres infos en créant une fonction
  * generer_<nom_info>_entite($id_objet, $type_objet, $ligne).
- * $ligne correspond a la ligne SQL de tous les champs de l'objet, les fonctions
- * de personnalisation n'ont donc pas a refaire de requete.
+ * $ligne correspond à la ligne SQL de tous les champs de l'objet, les fonctions
+ * de personnalisation n'ont donc pas à refaire de requête.
  *
  * @param int $id_objet
  * @param string $type_objet
@@ -121,7 +121,7 @@ function picker_identifie_id_rapide($ref,$rubriques=0,$articles=0){
  * @return string
  */
 function generer_info_entite($id_objet, $type_objet, $info, $etoile=''){
-       // On verifie qu'on a tout ce qu'il faut
+       // On vérifie qu'on a tout ce qu'il faut
        $id_objet = intval($id_objet);
        if (!($id_objet and $type_objet and $info))
                return '';
@@ -130,7 +130,7 @@ function generer_info_entite($id_objet, $type_objet, $info, $etoile=''){
        if ($info == 'url')
                return generer_url_entite($id_objet, $type_objet);
        
-       // Si on demande le titre, on le gere en interne
+       // Si on demande le titre, on le gère en interne
        if ($demande_titre = ($info == 'titre')){
                global $table_titre;
                $champ_titre = $table_titre[table_objet($type_objet)];
@@ -138,10 +138,10 @@ function generer_info_entite($id_objet, $type_objet, $info, $etoile=''){
                $champ_titre = ", $champ_titre";
        }
        
-       // Sinon on va tout chercher dans la table et on garde en memoire
+       // Sinon on va tout chercher dans la table et on garde en mémoire
        static $objets;
        
-       // On ne fait la requete que si on a pas deja l'objet ou si on demande le titre mais qu'on ne l'a pas encore
+       // On ne fait la requête que si on n'a pas déjà l'objet ou si on demande le titre mais qu'on ne l'a pas encore
        if (!$objets[$type_objet][$id_objet] or ($demande_titre and !$objets[$type_objet][$id_objet]['titre'])){
                include_spip('base/abstract_sql');
                include_spip('base/connect_sql');
@@ -162,7 +162,7 @@ function generer_info_entite($id_objet, $type_objet, $info, $etoile=''){
        else
                $info_generee = $ligne[$info];
        
-       // On va ensuite chercher les traitements automatiques a faire
+       // On va ensuite chercher les traitements automatiques à faire
        global $table_des_traitements;
        $maj = strtoupper($info);
        $traitement = $table_des_traitements[$maj];
@@ -178,8 +178,8 @@ function generer_info_entite($id_objet, $type_objet, $info, $etoile=''){
 }
 
 /**
- * Proteger les champs passes dans l'url et utiliser dans {tri ...}
- * preserver l'espace pour interpreter ensuite num xxx et multi xxx
+ * Protéger les champs passés dans l'url et utilisés dans {tri ...}
+ * préserver l'espace pour interpréter ensuite num xxx et multi xxx
  * @param string $t
  * @return string
  */
@@ -188,10 +188,10 @@ function tri_protege_champ($t){
 }
 
 /**
- * Interpreter les multi xxx et num xxx utilise comme tri
+ * Interpréter les multi xxx et num xxx utilisés comme tri
  * pour la clause order
- * 'multi xxx' devient simplement 'multi' qui est calcule dans le select
- * 'hasard' est calculé dans le select
+ * 'multi xxx' devient simplement 'multi' qui est calculé dans le select
+ * 'hasard' est calculé dans le select
  * @param string $t
  * @return string
  */
@@ -199,7 +199,7 @@ function tri_champ_order($t,$table=NULL,$field=NULL){
        if (strncmp($t,'num ',4)==0){
                $t = substr($t,4);
                $t = preg_replace(',\s,','',$t);
-               // Lever une ambiguit� possible si le champs fait partie de la table (pour compatibilit� de la balise tri avec compteur, somme, etc.)
+               // Lever une ambiguïté possible si le champ fait partie de la table (pour compatibilité de la balise tri avec compteur, somme, etc.)
                if (!is_null($table) && !is_null($field) && in_array($t,unserialize($field)))
                        $t = "0+$table.$t";
                else
@@ -211,7 +211,7 @@ function tri_champ_order($t,$table=NULL,$field=NULL){
        }
        else {
                $t = preg_replace(',\s,','',$t);
-               // Lever une ambiguit� possible si le champs fait partie de la table (pour compatibilit� de la balise tri avec compteur, somme, etc.)
+               // Lever une ambiguïté possible si le champ fait partie de la table (pour compatibilité de la balise tri avec compteur, somme, etc.)
                if (!is_null($table) && !is_null($field) && in_array($t,unserialize($field)))
                        return $table.'.'.$t;
                else
@@ -220,10 +220,10 @@ function tri_champ_order($t,$table=NULL,$field=NULL){
 }
 
 /**
- * Interpreter les multi xxx et num xxx utilise comme tri
+ * Interpréter les multi xxx et num xxx utilisés comme tri
  * pour la clause select
  * 'multi xxx' devient select "...." as multi
- * les autres cas ne produisent qu'une chaine vide '' en select
+ * les autres cas ne produisent qu'une chaîne vide '' en select
  * 'hasard' devient 'rand() AS hasard' dans le select
  *
  * @param string $t
@@ -244,7 +244,7 @@ function tri_champ_select($t){
 
 /**
  * Rediriger une page suivant une autorisation,
- * et ce, n'importe o� dans un squelette, m�me dans les inclusions.
+ * et ce, n'importe où dans un squelette, même dans les inclusions.
  *
  * @param bool $ok Indique si l'on doit rediriger ou pas
  * @param string $url Adresse vers laquelle rediriger
@@ -263,7 +263,7 @@ function filtre_sinon_interdire_acces_dist($ok=false, $url='', $statut=0){
        
        // Si aucun argument on essaye de deviner quoi faire
        if (!$url and !$statut){
-               // Si on est dans l'espace priv�, on g�n�re du 403 Forbidden
+               // Si on est dans l'espace privé, on génère du 403 Forbidden
                if (test_espace_prive()){
                        http_status(403);
                        $echec = charger_fonction('403','exec');
@@ -275,11 +275,11 @@ function filtre_sinon_interdire_acces_dist($ok=false, $url='', $statut=0){
                }
        }
        
-       // Sinon on suit les directives indiques dans les deux arguments
+       // Sinon on suit les directives indiquées dans les deux arguments
        
        // S'il y a un statut
        if ($statut){
-               // Dans tous les cas on modifie l'ent�te avec ce qui est demand�
+               // Dans tous les cas on modifie l'entité avec ce qui est demandé
                http_status($statut);
                // Si le statut est une erreur 4xx on va chercher le squelette
                if ($statut >= 400)
@@ -292,4 +292,40 @@ function filtre_sinon_interdire_acces_dist($ok=false, $url='', $statut=0){
        exit;
 }
 
-?>
+/**
+ * Calculer et retourner la profondeur de la rubrique
+ * (dans spip3, c'est un champ de la table rubrique)
+ * les rubriques à la racine sont à une profondeur de 1
+ *
+ * @param string
+ * @return int
+*/
+function filtre_profondeur_dist($id_rubrique) {
+       $id_rubrique = intval($id_rubrique);
+       
+       // sauver les calculs déjà faits
+       static $profs = array();
+       if (isset($profs[$id_rubrique])) {
+               return $profs[$id_rubrique];
+       }
+
+       // récupérer le parent.
+       $id_parent = sql_getfetsel('id_parent', 'spip_rubriques', 'id_rubrique='.$id_rubrique);
+
+       // pas de parent : id_rubrique n'existe pas
+       if (is_null($id_parent)) {
+               return '';
+       }
+
+       // parent zéro : on est tout en haut (racine)
+       if ($id_parent == '0') {
+               return $profs[$id_rubrique] = 1;
+       }
+
+       // sinon, on trouve la profondeur du parent
+       $parent = filtre_profondeur_dist($id_parent);
+       $profs[$id_rubrique] = ($parent + 1);
+       return $profs[$id_rubrique];
+}
+
+?>
\ No newline at end of file