/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
- * Copyright (c) 2001-2014 *
+ * Copyright (c) 2001-2016 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
function balise_RANG_dist($p) {
$b = index_boucle($p);
if ($b === '') {
- $msg = array('zbug_champ_hors_boucle',
- array('champ' => '#RANG')
- );
+ $msg = array(
+ 'zbug_champ_hors_boucle',
+ array('champ' => '#RANG')
+ );
erreur_squelette($msg, $p);
- }
- else {
+ } else {
// chercher d'abord un champ sql rang (mais pas dans le env : defaut '' si on trouve pas de champ sql)
// dans la boucle immediatement englobante uniquement
// sinon on compose le champ calcule
$_rang = champ_sql('rang', $p, '', false);
// si pas trouve de champ sql rang :
- if (!$_rang){
+ if (!$_rang) {
$boucle = &$p->boucles[$b];
- $trouver_table = charger_fonction('trouver_table','base');
+ $trouver_table = charger_fonction('trouver_table', 'base');
$desc = $trouver_table($boucle->id_table);
- $_titre = ''; # champ dont on extrait le numero
- if (isset($desc['titre'])){
- $t=$desc['titre'];
- if (preg_match(';(^|,)([^,]*titre)(,|$);',$t,$m)){
- $m = preg_replace(",as\s+titre$,i","",$m[2]);
- $m = trim($m);
- if ($m!="''"){
- if (!preg_match(",\W,",$m))
- $m = $boucle->id_table . ".$m";
- $m .= " AS titre_rang";
-
- $boucle->select[] = $m;
- $_titre = '$Pile[$SP][\'titre_rang\']';
- }
- }
+ $_titre = ''; # où extraire le numero ?
+
+ if (isset($desc['titre'])) {
+ $t = $desc['titre'];
+ if (
+ // Soit on trouve avec la déclaration de la lang AVANT
+ preg_match(';(?:lang\s*,)\s*(.*?titre)\s*(,|$);', $t, $m)
+ // Soit on prend depuis le début
+ or preg_match(';^(.*?titre)\s*(,|$);', $t, $m)
+ ) {
+ $m = preg_replace(',as\s+titre$,i', '', $m[1]);
+ $m = trim($m);
+ if ($m != "''") {
+ if (!preg_match(",\W,", $m)) {
+ $m = $boucle->id_table . ".$m";
+ }
+
+ $m .= " AS titre_rang";
+
+ $boucle->select[] = $m;
+ $_titre = '$Pile[$SP][\'titre_rang\']';
+ }
+ }
}
- if (!$_titre)
+
+ // si on n'a rien trouvé, on utilise le champ titre classique
+ if (!$_titre) {
$_titre = champ_sql('titre', $p);
+ }
+
$_rang = "recuperer_numero($_titre)";
}
+
$p->code = $_rang;
$p->interdire_scripts = false;
}
+
return $p;
}
AND $champ = ($p->param[0][1][0]->texte))
$p->code = champ_sql($champ, $p);
else {
- $err_b_s_a = array('zbug_balise_sans_argument', array('balise' => ' URL_'));
+ $err_b_s_a = array('zbug_balise_sans_argument', array('balise' => ' CHAMP_SQL'));
erreur_squelette($err_b_s_a, $p);
}
#$p->interdire_scripts = true;
}
-//
-// #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
+ * @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);
+ $header = interprete_argument_balise(1, $p);
if (!$header) {
$err_b_s_a = array('zbug_balise_sans_argument', array('balise' => 'HTTP_HEADER'));
erreur_squelette($err_b_s_a, $p);
- } else $p->code = "'<'.'?php header(\"' . "
- . $header
- . " . '\"); ?'.'>'";
+ } else {
+ $p->code = "'<'.'?php header(' . _q("
+ . $header
+ . ") . '); ?'.'>'";
+ }
$p->interdire_scripts = false;
+
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