diff --git a/ecrire/public/balises.php b/ecrire/public/balises.php index c3166ced45d15b898b6eac2d356c6d13386a8b8b..151f727978953679ac5f38cfd1bb3b953c004f60 100644 --- a/ecrire/public/balises.php +++ b/ecrire/public/balises.php @@ -617,7 +617,63 @@ function balise_POPULARITE_MAX_dist($p) { return $p; } -// http://doc.spip.org/@balise_EXPOSE_dist + +/** + * Compile la balise `#VALEUR` retournant le champ `valeur` + * + * Utile dans une boucle DATA pour retourner une valeur. + * + * @balise VALEUR + * @link http://www.spip.net/5546 #CLE et #VALEUR + * @see table_valeur() + * @example + * ``` + * #VALEUR renvoie le champ valeur + * #VALEUR{x} renvoie #VALEUR|table_valeur{x}, + * équivalent à #X (si X n'est pas une balise spéficique à SPIP) + * #VALEUR{a/b} renvoie #VALEUR|table_valeur{a/b} + * ``` + * + * @param Champ $p + * Pile au niveau de la balise + * @return Champ + * Pile complétée par le code à générer +**/ +function balise_VALEUR_dist($p) { + $b = $p->nom_boucle ? $p->nom_boucle : $p->id_boucle; + $p->code = index_pile($p->id_boucle, 'valeur', $p->boucles, $b);; + if (($v = interprete_argument_balise(1,$p))!==NULL){ + $p->code = 'table_valeur('.$p->code.', '.$v.')'; + } + $p->interdire_scripts = true; + return $p; +} + +/** + * Compile la balise `#EXPOSE` qui met en évidence l'élément sur lequel + * la page se trouve + * + * Expose dans une boucle l'élément de la page sur laquelle on se trouve, + * en retournant `on` si l'élément correspond à la page, une chaîne vide sinon. + * + * On peut passer les paramètres à faire retourner par la balise. + * + * @example + * ``` + * <a href="#URL_ARTICLE"[ class="(#EXPOSE)"]> + * <a href="#URL_ARTICLE"[ class="(#EXPOSE{actif})"]> + * <a href="#URL_ARTICLE"[ class="(#EXPOSE{on,off})"]> + * ``` + * + * @balise EXPOSE + * @link http://www.spip.net/2319 Exposer un article + * @uses calculer_balise_expose() + * + * @param Champ $p + * Pile au niveau de la balise + * @return Champ + * Pile complétée par le code à générer +**/ function balise_EXPOSE_dist($p) { $on = "'on'"; $off= "''"; @@ -630,21 +686,20 @@ function balise_EXPOSE_dist($p) { return calculer_balise_expose($p, $on, $off); } -// #VALEUR renvoie le champ valeur -// #VALEUR{x} renvoie #VALEUR|table_valeur{x} -// #VALEUR{a/b} renvoie #VALEUR|table_valeur{a/b} -// http://doc.spip.org/@balise_VALEUR_dist -function balise_VALEUR_dist($p) { - $b = $p->nom_boucle ? $p->nom_boucle : $p->id_boucle; - $p->code = index_pile($p->id_boucle, 'valeur', $p->boucles, $b);; - if (($v = interprete_argument_balise(1,$p))!==NULL){ - $p->code = 'table_valeur('.$p->code.', '.$v.')'; - } - $p->interdire_scripts = true; - return $p; -} - -// http://doc.spip.org/@calculer_balise_expose +/** + * Calcul de la balise expose + * + * @see calcul_exposer() + * + * @param Champ $p + * Pile au niveau de la balise + * @param string $on + * Texte à afficher si l'élément est exposé (code à écrire tel que "'on'") + * @param string $off + * Texte à afficher si l'élément n'est pas exposé (code à écrire tel que "''") + * @return Champ + * Pile complétée par le code à générer +**/ function calculer_balise_expose($p, $on, $off) { $b = $p->nom_boucle ? $p->nom_boucle : $p->id_boucle; @@ -797,11 +852,21 @@ function balise_INTRODUCTION_dist($p) { } -// #LANG -// affiche la langue de l'objet (ou superieure), et a defaut la langue courante -// (celle du site ou celle qui a ete passee dans l'URL par le visiteur) -// #LANG* n'affiche rien si aucune langue n'est trouvee dans le sql/le contexte -// http://doc.spip.org/@balise_LANG_dist +/** + * Compile la balise `#LANG` qui affiche la langue de l'objet (ou d'une boucle supérieure), + * et à defaut la langue courante + * + * La langue courante est celle du site ou celle qui a été passée dans l'URL par le visiteur. + * L'étoile `#LANG*` n'affiche rien si aucune langue n'est trouvée dans le SQL ou le contexte. + * + * @balise LANG + * @link http://www.spip.net/3864 + * + * @param Champ $p + * Pile au niveau de la balise + * @return Champ + * Pile complétée par le code à générer +**/ function balise_LANG_dist ($p) { $_lang = champ_sql('lang', $p); if (!$p->etoile) @@ -1331,13 +1396,30 @@ function balise_CONNECT_dist($p) { return $p; } -// -// #SESSION -// Cette balise est un tableau des donnees du visiteur (nom, email etc) -// Si elle est invoquee, elle leve un drapeau dans le fichier cache, qui -// permet a public/cacher d'invalider le cache si le visiteur suivant n'a -// pas la meme session -// http://doc.spip.org/@balise_SESSION_dist + +/** + * Compile la balise `#SESSION` qui permet d’accéder aux informations + * liées au visiteur authentifié et de différencier automatiquement + * le cache en fonction du visiteur. + * + * Cette balise est un tableau des données du visiteur (nom, email etc). + * Si elle est invoquée, elle lève un drapeau dans le fichier cache, qui + * permet à public/cacher de créer un cache différent par visiteur + * + * @balise SESSION + * @link http://www.spip.net/3979 + * @see balise_AUTORISER_dist() + * @see balise_SESSION_SET_dist() + * @example + * ``` + * #SESSION{nom} + * ``` + * + * @param Champ $p + * Pile au niveau de la balise. + * @return Champ + * Pile completée du code PHP d'exécution de la balise +**/ function balise_SESSION_dist($p) { $p->descr['session'] = true; @@ -1349,10 +1431,25 @@ function balise_SESSION_dist($p) { return $p; } -// -// #SESSION_SET{x,y} -// Ajoute x=y dans la session du visiteur -// http://doc.spip.org/@balise_SESSION_SET_dist + +/** + * Compile la balise `#SESSION_SET` qui d’insérer dans la session + * des données supplémentaires + * + * @balise SESSION + * @link http://www.spip.net/3984 + * @see balise_AUTORISER_dist() + * @see balise_SESSION_SET_dist() + * @example + * ``` + * #SESSION_SET{x,y} ajoute x=y dans la session du visiteur + * ``` + * + * @param Champ $p + * Pile au niveau de la balise. + * @return Champ + * Pile completée du code PHP d'exécution de la balise +**/ function balise_SESSION_SET_dist($p) { $_nom = interprete_argument_balise(1,$p); $_val = interprete_argument_balise(2,$p); @@ -1367,19 +1464,33 @@ function balise_SESSION_SET_dist($p) { } - - -// -// #EVAL{...} -// evalue un code php ; a utiliser avec precaution :-) -// -// rq: #EVAL{code} produit eval('return code;') -// mais si le code est une expression sans balise, on se dispense -// de passer par une construction si compliquee, et le code est -// passe tel quel (entre parentheses, et protege par interdire_scripts) -// Exemples : #EVAL**{6+9} #EVAL**{_DIR_IMG_PACK} #EVAL{'date("Y-m-d")'} -// #EVAL{'str_replace("r","z", "roger")'} (attention les "'" sont interdits) -// http://doc.spip.org/@balise_EVAL_dist +/** + * Compile la balise `#EVAL` qui évalue un code PHP + * + * À utiliser avec précautions ! + * + * @balise EVAL + * @link http://www.spip.net/4587 + * @example + * ``` + * #EVAL{6+9} + * #EVAL{_DIR_IMG_PACK} + * #EVAL{'date("Y-m-d")'} + * #EVAL{$_SERVER['REQUEST_URI']} + * #EVAL{'str_replace("r","z", "roger")'} (attention les "'" sont interdits) + * ``` + * + * @note + * `#EVAL{code}` produit `eval('return code;')` + * mais si le code est une expression sans balise, on se dispense + * de passer par une construction si compliquée, et le code est + * passé tel quel (entre parenthèses, et protégé par interdire_scripts) + * + * @param Champ $p + * Pile au niveau de la balise. + * @return Champ + * Pile completée du code PHP d'exécution de la balise +**/ function balise_EVAL_dist($p) { $php = interprete_argument_balise(1,$p); if ($php) { @@ -1439,9 +1550,28 @@ function balise_CHAMP_SQL_dist($p){ return $p; } -// #VAL{x} renvoie 'x' (permet d'appliquer un filtre a une chaine) -// Attention #VAL{1,2} renvoie '1', indiquer #VAL{'1,2'} -// http://doc.spip.org/@balise_VAL_dist +/** + * Compile la balise `#VAL` qui retourne simplement le premier argument + * qui lui est transmis + * + * Cela permet d'appliquer un filtre à une chaîne de caractère + * + * @balise VAL + * @link http://www.spip.net/4026 + * @example + * ``` + * #VAL retourne '' + * #VAL{x} retourne 'x' + * #VAL{1,2} renvoie '1' (2 est considéré comme un autre paramètre) + * #VAL{'1,2'} renvoie '1,2' + * [(#VAL{a_suivre}|bouton_spip_rss)] + * ``` + * + * @param Champ $p + * Pile au niveau de la balise + * @return Champ + * Pile complétée par le code à générer +**/ function balise_VAL_dist($p){ $p->code = interprete_argument_balise(1,$p); if (!strlen($p->code)) @@ -1449,15 +1579,49 @@ function balise_VAL_dist($p){ $p->interdire_scripts = false; return $p; } -// #NOOP est un alias pour regler #948, ne pas documenter -// http://doc.spip.org/@balise_NOOP_dist + +/** + * Compile la balise `#NOOP`, alias (déprécié) de `#VAL` + * + * Alias pour regler #948. Ne plus utiliser. + * + * @balise NOOP + * @see balise_VAL_dist() + * @deprecated Utiliser #VAL + * + * @param Champ $p + * Pile au niveau de la balise + * @return Champ + * Pile complétée par le code à générer +**/ function balise_NOOP_dist($p) { return balise_VAL_dist($p); } -// -// #REM -// pour les remarques : renvoie toujours '' -// -// http://doc.spip.org/@balise_REM_dist + +/** + * Compile la balise `#REM` servant à commenter du texte + * + * Retourne toujours une chaîne vide. + * + * @balise REM + * @link http://www.spip.net/4578 + * @example + * ``` + * [(#REM) + * Ceci est une remarque ou un commentaire, + * non affiché dans le code généré + * ] + * ``` + * + * @note + * La balise `#REM` n'empêche pas l'exécution des balises SPIP contenues + * dedans (elle ne sert pas à commenter du code pour empêcher son + * exécution). + * + * @param Champ $p + * Pile au niveau de la balise + * @return Champ + * Pile complétée par le code à générer +**/ function balise_REM_dist($p) { $p->code="''"; $p->interdire_scripts = false; @@ -1465,13 +1629,24 @@ function balise_REM_dist($p) { } -// -// #HTTP_HEADER -// pour les entetes de retour http -// Ne fonctionne pas sur les INCLURE ! -// #HTTP_HEADER{Content-Type: text/css} -// -// http://doc.spip.org/@balise_HTTP_HEADER_dist +/** + * Compile la balise `#HTTP_HEADER` envoyant des entêtes de retour HTTP + * + * Doit être placée en tête de fichier et ne fonctionne pas dans une + * inclusion. + * + * @balise HTTP_HEADER + * @link http://www.spip.net/4631 + * @example + * ``` + * #HTTP_HEADER{Content-Type: text/csv; charset=#CHARSET} + * ``` + * + * @param Champ $p + * Pile au niveau de la balise + * @return Champ + * Pile complétée par le code à générer +**/ function balise_HTTP_HEADER_dist($p) { $header = interprete_argument_balise(1,$p); @@ -1485,9 +1660,27 @@ function balise_HTTP_HEADER_dist($p) { return $p; } -// Filtre a appliquer a l'ensemble de la page une fois calculee -// (filtrage fait au niveau du squelette, et sans s'appliquer aux <INCLURE>) -// http://doc.spip.org/@balise_FILTRE_dist + +/** + * Compile la balise `#FILTRE` qui exécute un filtre à l'ensemble du squelette + * une fois calculé. + * + * Le filtrage se fait au niveau du squelette, sans s'appliquer aux `<INCLURE>`. + * Plusieurs filtres peuvent être indiqués, séparés par des barres verticales `|` + * + * @balise FILTRE + * @link http://www.spip.net/4894 + * @example + * ``` + * #FILTRE{compacte_head} + * #FILTRE{supprimer_tags|filtrer_entites|trim} + * ``` + * + * @param Champ $p + * Pile au niveau de la balise + * @return Champ + * Pile complétée par le code à générer +**/ function balise_FILTRE_dist($p) { if ($p->param) { $args = array();