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
/**
- * 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
}
/**
- * Ajouter un timestamp a une url de fichier
+ * Ajouter un timestamp à une url de fichier
*
* @param unknown_type $fichier
* @return unknown
}
/**
- * 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();
}
/**
- * 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
* @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 '';
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)];
$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');
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];
}
/**
- * 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
*/
}
/**
- * 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
*/
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
}
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
}
/**
- * 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
/**
* 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
// 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');
}
}
- // 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)
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