Skip to content
Extraits de code Groupes Projets
Valider 4835d7a7 rédigé par esj's avatar esj
Parcourir les fichiers

Eclater le fichier balises.php, en enlevant surtout les balises qui pose un pb...

Eclater le fichier balises.php, en enlevant surtout les balises qui pose un pb en compilation distante. Leur code n'a pas changé dans ce dépot.
parent 4a8beb70
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -413,6 +413,8 @@ ecrire/action/tester_taille.php -text ...@@ -413,6 +413,8 @@ ecrire/action/tester_taille.php -text
ecrire/action/tourner.php -text ecrire/action/tourner.php -text
ecrire/action/virtualiser.php -text ecrire/action/virtualiser.php -text
ecrire/balise/index.php -text ecrire/balise/index.php -text
ecrire/balise/logo_.php -text
ecrire/balise/url_.php -text
ecrire/base/admin_repair.php -text ecrire/base/admin_repair.php -text
ecrire/base/convert_sql_utf8.php -text ecrire/base/convert_sql_utf8.php -text
ecrire/base/convert_utf8.php -text ecrire/base/convert_utf8.php -text
......
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2007 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) return;
//
// Fonction des balises #LOGO_XXXX
// (les balises portant ce type de nom sont traitees en bloc ici)
//
function balise_logo__dist ($p) {
preg_match(",^LOGO_([A-Z]+)(_.*)?$,i", $p->nom_champ, $regs);
$type_objet = $regs[1];
$suite_logo = @$regs[2];
// cas de #LOGO_SITE_SPIP
if (preg_match(",^_SPIP(.*)$,", $suite_logo, $regs)) {
$type_objet = 'SITE';
$suite_logo = $regs[1];
$_id_objet = "\"'0'\"";
$id_objet = 'id_syndic'; # parait faux mais donne bien "siteNN"
} else {
if ($type_objet == 'SITE')
$id_objet = "id_syndic";
else
$id_objet = "id_".strtolower($type_objet);
$_id_objet = champ_sql($id_objet, $p);
}
// analyser les faux filtres
$flag_fichier = $flag_stop = $flag_lien_auto = $code_lien = $filtres = $align = $lien = $params = '';
if (is_array($p->fonctions)) {
foreach($p->fonctions as $couple) {
if (!$flag_stop) {
$nom = trim($couple[0]);
// double || signifie "on passe aux vrais filtres"
if ($nom == '') {
if ($couple[1]) {
$params = $couple[1]; // recuperer #LOGO_DOCUMENT{20,30}
array_shift($p->param);
}
else
$flag_stop = true;
} else {
// faux filtres
array_shift($p->param);
switch($nom) {
case 'left':
case 'right':
case 'center':
case 'top':
case 'bottom':
$align = $nom;
break;
case 'lien':
$flag_lien_auto = 'oui';
$flag_stop = true; # apres |lien : vrais filtres
break;
case 'fichier':
$flag_fichier = 1;
$flag_stop = true; # apres |fichier : vrais filtres
break;
default:
$lien = $nom;
$flag_stop = true; # apres |#URL... : vrais filtres
break;
}
}
}
}
}
//
// Preparer le code du lien
//
// 1. filtre |lien
if ($flag_lien_auto AND !$lien)
$code_lien = '($lien = generer_url_'.$type_objet.'('.$_id_objet.')) ? $lien : ""';
// 2. lien indique en clair (avec des balises : imprimer#ID_ARTICLE.html)
else if ($lien) {
$code_lien = "'".texte_script(trim($lien))."'";
while (preg_match(",^([^#]*)#([A-Za-z_]+)(.*)$,", $code_lien, $match)) {
$c = new Champ();
$c->nom_champ = $match[2];
$c->id_boucle = $p->id_boucle;
$c->boucles = &$p->boucles;
$c->descr = $p->descr;
$c = calculer_champ($c);
$code_lien = str_replace('#'.$match[2], "'.".$c.".'", $code_lien);
}
// supprimer les '' disgracieux
$code_lien = preg_replace("@^''\.|\.''$@", "", $code_lien);
}
if ($flag_fichier)
$code_lien = "'',''" ;
else {
if (!$code_lien)
$code_lien = "''";
$code_lien .= ", '". $align . "'";
}
// cas des documents
if ($type_objet == 'DOCUMENT') {
$p->code = "calcule_logo_document($_id_objet, '" .
$p->descr['documents'] .
'\', $doublons, '. intval($flag_fichier).", $code_lien, '".
// #LOGO_DOCUMENT{x,y} donne la taille maxi
texte_script($params)
."')";
}
else {
$p->code = "affiche_logos(calcule_logo('$id_objet', '" .
(($suite_logo == '_SURVOL') ? 'off' :
(($suite_logo == '_NORMAL') ? 'on' : 'ON')) .
"', $_id_objet," .
(($suite_logo == '_RUBRIQUE') ?
champ_sql("id_rubrique", $p) :
(($type_objet == 'RUBRIQUE') ? "quete_parent($_id_objet)" : "''")) .
", '$flag_fichier'), $code_lien)";
}
$p->interdire_scripts = false;
return $p;
}
?>
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2007 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) return;
function balise_URL__dist($p) {
if ($f = charger_fonction($p->nom_champ, 'balise', true))
return $f($p);
else return NULL;
}
// http://doc.spip.org/@balise_URL_SITE_SPIP_dist
function balise_URL_SITE_SPIP_dist($p) {
$p->code = "sinon(\$GLOBALS['meta']['adresse_site'],'.')";
$p->code = "htmlspecialchars(".$p->code.")";
$p->interdire_scripts = false;
return $p;
}
// http://doc.spip.org/@balise_URL_ARTICLE_dist
function balise_URL_ARTICLE_dist($p) {
// Cas particulier des boucles (SYNDIC_ARTICLES)
if ($p->type_requete == 'syndic_articles') {
$p->code = champ_sql('url', $p);
} else $p->code = generer_generer_url('article', $p);
$p->interdire_scripts = false;
return $p;
}
// http://doc.spip.org/@balise_URL_AUTEUR_dist
function balise_URL_AUTEUR_dist($p) {
$p->code = generer_generer_url('auteur', $p);
$p->interdire_scripts = false;
return $p;
}
// http://doc.spip.org/@balise_URL_RUBRIQUE_dist
function balise_URL_RUBRIQUE_dist($p) {
$p->code = generer_generer_url('rubrique', $p);
$p->interdire_scripts = false;
return $p;
}
// http://doc.spip.org/@balise_URL_BREVE_dist
function balise_URL_BREVE_dist($p) {
$p->code = generer_generer_url('breve', $p);
$p->interdire_scripts = false;
return $p;
}
// http://doc.spip.org/@balise_URL_MOT_dist
function balise_URL_MOT_dist($p) {
$p->code = generer_generer_url('mot', $p);
$p->interdire_scripts = false;
return $p;
}
// http://doc.spip.org/@balise_URL_FORUM_dist
function balise_URL_FORUM_dist($p) {
$p->code = generer_generer_url('forum', $p);
$p->interdire_scripts = false;
return $p;
}
// http://doc.spip.org/@balise_URL_DOCUMENT_dist
function balise_URL_DOCUMENT_dist($p) {
$p->code = generer_generer_url('document', $p);
$p->interdire_scripts = false;
return $p;
}
# URL_SITE est une donnee "brute" tiree de la base de donnees
# URL_SYNDIC correspond a l'adresse de son backend.
# Il n'existe pas de balise pour afficher generer_url_site($id_syndic),
# a part [(#ID_SYNDIC|generer_url_site)]
//
// #URL_PAGE{backend} -> backend.php3 ou ?page=backend selon les cas
// Pour les pages qui commencent par "spip_", il faut eventuellement
// aller chercher spip_action.php?action=xxxx
//
// http://doc.spip.org/@balise_URL_PAGE_dist
function balise_URL_PAGE_dist($p) {
if ($p->boucles[$p->id_boucle]->sql_serveur) {
$p->code = 'generer_url_public("404")';
return $p;
}
$p->code = interprete_argument_balise(1,$p);
$args = interprete_argument_balise(2,$p);
if ($args != "''" && $args!==NULL)
$p->code .= ','.$args;
// autres filtres (???)
array_shift($p->param);
$p->code = 'generer_url_public(' . $p->code .')';
#$p->interdire_scripts = true;
return $p;
}
//
// #URL_ECRIRE{naviguer} -> ecrire/?exec=naviguer
//
// http://doc.spip.org/@balise_URL_ECRIRE_dist
function balise_URL_ECRIRE_dist($p) {
if ($p->boucles[$p->id_boucle]->sql_serveur) {
$p->code = 'generer_url_public("404")';
return $p;
}
$p->code = interprete_argument_balise(1,$p);
$args = interprete_argument_balise(2,$p);
if ($args != "''" && $args!==NULL)
$p->code .= ','.$args;
// autres filtres (???)
array_shift($p->param);
$p->code = 'generer_url_ecrire(' . $p->code .')';
#$p->interdire_scripts = true;
return $p;
}
//
// #URL_ACTION_AUTEUR{converser,arg,redirect} -> ecrire/?action=converser&arg=arg&hash=xxx&redirect=redirect
//
// http://doc.spip.org/@balise_URL_ACTION_AUTEUR_dist
function balise_URL_ACTION_AUTEUR_dist($p) {
if ($p->boucles[$p->id_boucle]->sql_serveur) {
$p->code = 'generer_url_public("404")';
return $p;
}
$p->code = interprete_argument_balise(1,$p);
$args = interprete_argument_balise(2,$p);
if ($args != "''" && $args!==NULL)
$p->code .= ".'\",\"'.".$args;
$redirect = interprete_argument_balise(3,$p);
if ($redirect != "''" && $redirect!==NULL)
$p->code .= ".'\",\"'.".$redirect;
$p->code = "'<"."?php echo generer_action_auteur(\"'." . $p->code .".'\"); ?>'";
$p->interdire_scripts = false;
return $p;
}
?>
...@@ -10,7 +10,6 @@ ...@@ -10,7 +10,6 @@
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/ \***************************************************************************/
// //
// Ce fichier regroupe la quasi totalite des definitions de #BALISES de spip // Ce fichier regroupe la quasi totalite des definitions de #BALISES de spip
// Pour chaque balise, il est possible de surcharger, dans mes_fonctions, // Pour chaque balise, il est possible de surcharger, dans mes_fonctions,
...@@ -26,9 +25,9 @@ if (!defined("_ECRIRE_INC_VERSION")) return; ...@@ -26,9 +25,9 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
function interprete_argument_balise($n,$p) { function interprete_argument_balise($n,$p) {
if (($p->param) && (!$p->param[0][0]) && (count($p->param[0])>$n)) if (($p->param) && (!$p->param[0][0]) && (count($p->param[0])>$n))
return calculer_liste($p->param[0][$n], return calculer_liste($p->param[0][$n],
$p->descr, $p->descr,
$p->boucles, $p->boucles,
$p->id_boucle); $p->id_boucle);
else else
return NULL; return NULL;
} }
...@@ -161,78 +160,6 @@ function balise_SPIP_VERSION_dist($p) { ...@@ -161,78 +160,6 @@ function balise_SPIP_VERSION_dist($p) {
return $p; return $p;
} }
// http://doc.spip.org/@balise_URL_SITE_SPIP_dist
function balise_URL_SITE_SPIP_dist($p) {
$p->code = "sinon(\$GLOBALS['meta']['adresse_site'],'.')";
$p->code = "htmlspecialchars(".$p->code.")";
$p->interdire_scripts = false;
return $p;
}
// http://doc.spip.org/@balise_URL_ARTICLE_dist
function balise_URL_ARTICLE_dist($p) {
// Cas particulier des boucles (SYNDIC_ARTICLES)
if ($p->type_requete == 'syndic_articles') {
$p->code = champ_sql('url', $p);
} else $p->code = generer_generer_url('article', $p);
$p->interdire_scripts = false;
return $p;
}
// http://doc.spip.org/@balise_URL_AUTEUR_dist
function balise_URL_AUTEUR_dist($p) {
$p->code = generer_generer_url('auteur', $p);
$p->interdire_scripts = false;
return $p;
}
// http://doc.spip.org/@balise_URL_RUBRIQUE_dist
function balise_URL_RUBRIQUE_dist($p) {
$p->code = generer_generer_url('rubrique', $p);
$p->interdire_scripts = false;
return $p;
}
// http://doc.spip.org/@balise_URL_BREVE_dist
function balise_URL_BREVE_dist($p) {
$p->code = generer_generer_url('breve', $p);
$p->interdire_scripts = false;
return $p;
}
// http://doc.spip.org/@balise_URL_MOT_dist
function balise_URL_MOT_dist($p) {
$p->code = generer_generer_url('mot', $p);
$p->interdire_scripts = false;
return $p;
}
// http://doc.spip.org/@balise_URL_FORUM_dist
function balise_URL_FORUM_dist($p) {
$p->code = generer_generer_url('forum', $p);
$p->interdire_scripts = false;
return $p;
}
// http://doc.spip.org/@balise_URL_DOCUMENT_dist
function balise_URL_DOCUMENT_dist($p) {
$p->code = generer_generer_url('document', $p);
$p->interdire_scripts = false;
return $p;
}
# URL_SITE est une donnee "brute" tiree de la base de donnees
# URL_SYNDIC correspond a l'adresse de son backend.
# Il n'existe pas de balise pour afficher generer_url_site($id_syndic),
# a part [(#ID_SYNDIC|generer_url_site)]
// #NOM_SITE affiche le nom du site, ou sinon l'URL ou le titre de l'objet // #NOM_SITE affiche le nom du site, ou sinon l'URL ou le titre de l'objet
// http://doc.spip.org/@balise_NOM_SITE_dist // http://doc.spip.org/@balise_NOM_SITE_dist
...@@ -648,134 +575,6 @@ function balise_GRAND_TOTAL_dist($p) { ...@@ -648,134 +575,6 @@ function balise_GRAND_TOTAL_dist($p) {
} }
//
// Fonction commune aux balises #LOGO_XXXX
// (les balises portant ce type de nom sont traitees en bloc ici)
//
// http://doc.spip.org/@calculer_balise_logo_dist
function calculer_balise_logo_dist ($p) {
preg_match(",^LOGO_([A-Z]+)(_.*)?$,i", $p->nom_champ, $regs);
$type_objet = $regs[1];
$suite_logo = @$regs[2];
// cas de #LOGO_SITE_SPIP
if (preg_match(",^_SPIP(.*)$,", $suite_logo, $regs)) {
$type_objet = 'SITE';
$suite_logo = $regs[1];
$_id_objet = "\"'0'\"";
$id_objet = 'id_syndic'; # parait faux mais donne bien "siteNN"
} else {
if ($type_objet == 'SITE')
$id_objet = "id_syndic";
else
$id_objet = "id_".strtolower($type_objet);
$_id_objet = champ_sql($id_objet, $p);
}
// analyser les faux filtres
$flag_fichier = $flag_stop = $flag_lien_auto = $code_lien = $filtres = $align = $lien = $params = '';
if (is_array($p->fonctions)) {
foreach($p->fonctions as $couple) {
if (!$flag_stop) {
$nom = trim($couple[0]);
// double || signifie "on passe aux vrais filtres"
if ($nom == '') {
if ($couple[1]) {
$params = $couple[1]; // recuperer #LOGO_DOCUMENT{20,30}
array_shift($p->param);
}
else
$flag_stop = true;
} else {
// faux filtres
array_shift($p->param);
switch($nom) {
case 'left':
case 'right':
case 'center':
case 'top':
case 'bottom':
$align = $nom;
break;
case 'lien':
$flag_lien_auto = 'oui';
$flag_stop = true; # apres |lien : vrais filtres
break;
case 'fichier':
$flag_fichier = 1;
$flag_stop = true; # apres |fichier : vrais filtres
break;
default:
$lien = $nom;
$flag_stop = true; # apres |#URL... : vrais filtres
break;
}
}
}
}
}
//
// Preparer le code du lien
//
// 1. filtre |lien
if ($flag_lien_auto AND !$lien)
$code_lien = '($lien = generer_url_'.$type_objet.'('.$_id_objet.')) ? $lien : ""';
// 2. lien indique en clair (avec des balises : imprimer#ID_ARTICLE.html)
else if ($lien) {
$code_lien = "'".texte_script(trim($lien))."'";
while (preg_match(",^([^#]*)#([A-Za-z_]+)(.*)$,", $code_lien, $match)) {
$c = new Champ();
$c->nom_champ = $match[2];
$c->id_boucle = $p->id_boucle;
$c->boucles = &$p->boucles;
$c->descr = $p->descr;
$c = calculer_champ($c);
$code_lien = str_replace('#'.$match[2], "'.".$c.".'", $code_lien);
}
// supprimer les '' disgracieux
$code_lien = preg_replace("@^''\.|\.''$@", "", $code_lien);
}
if ($flag_fichier)
$code_lien = "'',''" ;
else {
if (!$code_lien)
$code_lien = "''";
$code_lien .= ", '". $align . "'";
}
// cas des documents
if ($type_objet == 'DOCUMENT') {
$p->code = "calcule_logo_document($_id_objet, '" .
$p->descr['documents'] .
'\', $doublons, '. intval($flag_fichier).", $code_lien, '".
// #LOGO_DOCUMENT{x,y} donne la taille maxi
texte_script($params)
."')";
}
else {
$p->code = "affiche_logos(calcule_logo('$id_objet', '" .
(($suite_logo == '_SURVOL') ? 'off' :
(($suite_logo == '_NORMAL') ? 'on' : 'ON')) .
"', $_id_objet," .
(($suite_logo == '_RUBRIQUE') ?
champ_sql("id_rubrique", $p) :
(($type_objet == 'RUBRIQUE') ? "quete_parent($_id_objet)" : "''")) .
", '$flag_fichier'), $code_lien)";
}
$p->interdire_scripts = false;
return $p;
}
// #EXTRA // #EXTRA
// [(#EXTRA|extra{isbn})] // [(#EXTRA|extra{isbn})]
// ou [(#EXTRA|isbn)] (ce dernier applique les filtres definis dans mes_options) // ou [(#EXTRA|isbn)] (ce dernier applique les filtres definis dans mes_options)
...@@ -891,83 +690,6 @@ function balise_SELF_dist($p) { ...@@ -891,83 +690,6 @@ function balise_SELF_dist($p) {
} }
//
// #URL_PAGE{backend} -> backend.php3 ou ?page=backend selon les cas
// Pour les pages qui commencent par "spip_", il faut eventuellement
// aller chercher spip_action.php?action=xxxx
//
// http://doc.spip.org/@balise_URL_PAGE_dist
function balise_URL_PAGE_dist($p) {
if ($p->boucles[$p->id_boucle]->sql_serveur) {
$p->code = 'generer_url_public("404")';
return $p;
}
$p->code = interprete_argument_balise(1,$p);
$args = interprete_argument_balise(2,$p);
if ($args != "''" && $args!==NULL)
$p->code .= ','.$args;
// autres filtres (???)
array_shift($p->param);
$p->code = 'generer_url_public(' . $p->code .')';
#$p->interdire_scripts = true;
return $p;
}
//
// #URL_ECRIRE{naviguer} -> ecrire/?exec=naviguer
//
// http://doc.spip.org/@balise_URL_ECRIRE_dist
function balise_URL_ECRIRE_dist($p) {
if ($p->boucles[$p->id_boucle]->sql_serveur) {
$p->code = 'generer_url_public("404")';
return $p;
}
$p->code = interprete_argument_balise(1,$p);
$args = interprete_argument_balise(2,$p);
if ($args != "''" && $args!==NULL)
$p->code .= ','.$args;
// autres filtres (???)
array_shift($p->param);
$p->code = 'generer_url_ecrire(' . $p->code .')';
#$p->interdire_scripts = true;
return $p;
}
//
// #URL_ACTION_AUTEUR{converser,arg,redirect} -> ecrire/?action=converser&arg=arg&hash=xxx&redirect=redirect
//
// http://doc.spip.org/@balise_URL_ACTION_AUTEUR_dist
function balise_URL_ACTION_AUTEUR_dist($p) {
if ($p->boucles[$p->id_boucle]->sql_serveur) {
$p->code = 'generer_url_public("404")';
return $p;
}
$p->code = interprete_argument_balise(1,$p);
$args = interprete_argument_balise(2,$p);
if ($args != "''" && $args!==NULL)
$p->code .= ".'\",\"'.".$args;
$redirect = interprete_argument_balise(3,$p);
if ($redirect != "''" && $redirect!==NULL)
$p->code .= ".'\",\"'.".$redirect;
$p->code = "'<"."?php echo generer_action_auteur(\"'." . $p->code .".'\"); ?>'";
$p->interdire_scripts = false;
return $p;
}
// //
// #CHEMIN{fichier} -> find_in_path(fichier) // #CHEMIN{fichier} -> find_in_path(fichier)
// //
......
...@@ -163,14 +163,14 @@ function calculer_balise($nom, $p) { ...@@ -163,14 +163,14 @@ function calculer_balise($nom, $p) {
return $res; return $res;
} }
// S'agit-il d'un logo ? Une fonction speciale les traite tous // Certaines des balises comportant un _ sont generiques
if (strncmp('LOGO_', $nom,5)==0) { if ($f = strpos($nom, '_')
if (!function_exists($f = 'calculer_balise_logo')) $f .= '_dist'; AND $f = charger_fonction(substr($nom,0,$f), 'balise', true)) {
$res = $f($p); $res = $f($p);
if ($res !== NULL) if ($res !== NULL)
return $res; return $res;
} }
spip_log("bal $nom");
// ca pourrait etre un champ SQL homonyme, // ca pourrait etre un champ SQL homonyme,
$p->code = index_pile($p->id_boucle, $nom, $p->boucles, $p->nom_boucle); $p->code = index_pile($p->id_boucle, $nom, $p->boucles, $p->nom_boucle);
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter