X-Git-Url: http://git.cyclocoop.org/?p=velocampus%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fplugins%2Fauto%2Fspip-bonux%2Fspip_bonux_fonctions.php;h=1c5e02d9a31df661cc90efad9f31f55bbb811036;hp=c2f9d3a60f00e6f8321fc4621950976ad3afed37;hb=a7986fd72f684eda0014e1c0659b70e771f4ad97;hpb=42c57c435a05e3b864fab51ed9d0ad3986610664 diff --git a/www/plugins/auto/spip-bonux/spip_bonux_fonctions.php b/www/plugins/auto/spip-bonux/spip_bonux_fonctions.php index c2f9d3a..1c5e02d 100644 --- a/www/plugins/auto/spip-bonux/spip_bonux_fonctions.php +++ b/www/plugins/auto/spip-bonux/spip_bonux_fonctions.php @@ -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__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 indiqu�es 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