From 3dd0975626b970aa29f69712d66f12be457f9a35 Mon Sep 17 00:00:00 2001 From: "Committo,Ergo:sum" <esj@rezo.net> Date: Sun, 12 Dec 2004 22:05:28 +0000 Subject: [PATCH] balise #HTTP_VARS, #SELF & #FORMULAIRE_ en squelette --- auteur-dist.html | 3 +- formulaire_ecrire_auteur-dist.html | 19 +++++ formulaire_forum-dist.html | 56 +++++++++++++ formulaire_inscription-dist.html | 14 ++++ formulaire_recherche-dist.html | 8 ++ formulaire_signature.html | 41 ++++++++++ formulaire_site-dist.html | 10 +++ inc-balises.php3 | 29 ++++++- inc-calcul-outils.php3 | 46 +++++------ inc-compilo.php3 | 46 +++++------ inc-criteres.php3 | 60 +++++++++----- inc-ecrire_auteur.php3 | 93 ++++++++-------------- inc-forum.php3 | 112 +++++++++----------------- inc-html-squel.php3 | 124 ++++++++++++++--------------- inc-inscription.php3 | 70 +++++++--------- inc-public-global.php3 | 6 ++ inc-recherche.php3 | 13 +-- inc-signature.php3 | 82 +++++-------------- inc-site.php3 | 11 +-- sommaire-dist.html | 5 +- spip_image.php3 | 22 +++-- spip_pass.php3 | 16 ++-- 22 files changed, 482 insertions(+), 404 deletions(-) create mode 100644 formulaire_ecrire_auteur-dist.html create mode 100644 formulaire_forum-dist.html create mode 100644 formulaire_inscription-dist.html create mode 100644 formulaire_recherche-dist.html create mode 100644 formulaire_signature.html create mode 100644 formulaire_site-dist.html diff --git a/auteur-dist.html b/auteur-dist.html index 8fab45ed52..eacd9278fe 100644 --- a/auteur-dist.html +++ b/auteur-dist.html @@ -66,7 +66,8 @@ [<div class="notes">(#NOTES)</div>] </div> -[<p><b><:envoyer_message:></b></p>(#FORMULAIRE_ECRIRE_AUTEUR)] +[<p><b><:envoyer_message:></b></p> +<div class='spip_encadrer'><b>(#FORMULAIRE_ECRIRE_AUTEUR)</b></div>] <!-- Articles de l'auteur --> diff --git a/formulaire_ecrire_auteur-dist.html b/formulaire_ecrire_auteur-dist.html new file mode 100644 index 0000000000..8b54cf3086 --- /dev/null +++ b/formulaire_ecrire_auteur-dist.html @@ -0,0 +1,19 @@ +[<br /><img src='puce(#HTTP_VARS{sujetko}).gif' border='0' alt='-' /> <:form_prop_indiquer_sujet:><br /> ] +[<br /><img src='puce(#HTTP_VARS{mailko}).gif' border='0' alt='-' /> <:form_prop_indiquer_email:><br /><br />] +<form action="#SELF" method='post'> +<:form_pet_votre_email:><br /> + <input type="text" class="forml" name="email_message_auteur" + value="[(#HTTP_VARS{mail})]" SIZE="30" /> +<p><:form_prop_sujet:><br /> + <input type="text" class="forml" name="sujet_message_auteur" + value="[(#HTTP_VARS{sujet})]" SIZE="30" /> +</p> +<p> +<textarea name='texte_message_auteur' rows='10' class='forml' cols='40' wrap=soft>[(#HTTP_VARS{texte})]</textarea> +</p> +[<input type="hidden" name="id_auteur" value="(#HTTP_VARS{id_auteur})" />] +<div align="right"> + <input type="submit" class="spip_bouton" name="valide" + value="[(#HTTP_VARS{valide})"] /> +</div> +</form> diff --git a/formulaire_forum-dist.html b/formulaire_forum-dist.html new file mode 100644 index 0000000000..f5a43ad70a --- /dev/null +++ b/formulaire_forum-dist.html @@ -0,0 +1,56 @@ +<form action='[(#HTTP_VARS{url})]' method='post' name='formulaire'> +<input type='hidden' name='ajout_forum' value='oui' /> +<input type='hidden' name='id_message', value='[(#HTTP_VARS{id_message})]' /> +<input type='hidden' name='alea', value='[(#HTTP_VARS{alea})]' /> +<input type='hidden' name='hash', value='[(#HTTP_VARS{hash})]' /> +<input type='hidden' name='retour' value='[(#HTTP_VARS{retour})]' /> +[(#HTTP_VARS{modere})] +[(#HTTP_VARS{afficher_non})] +[(#HTTP_VARS{previsu}) + <div class='spip_encadrer'><b><:forum_titre:></b> + <br /> + <input type='text' name='titre' + value='[(#HTTP_VARS{titre})]' class='forml' size='40' /> + </div> + <br /> + <div class='spip_encadrer'><b><:forum_texte:></b> + <br /> + <:info_creation_paragraphe:> + <br /> + [(#HTTP_VARS{afficher_barre})] + <textarea name='texte' rows='12' class='forml' cols='40' + [(#HTTP_VARS{afficher_claret})] >[(#HTTP_VARS{texte})]</textarea> + </div> + [(#HTTP_VARS{table})] + <br /><div class='spip_encadrer'> + <:forum_lien_hyper:> + <br /> + <:forum_page_url:> + <br /> + <:forum_titre:> + <br /> + <input type='text' name='nom_site_forum' class='forml' size='40'" + value='[(#HTTP_VARS{nom_site_forum})]' /> + <br /> + <:forum_url:> + <br /> + <input type='text' name='url_site' class='forml' size='40' + value='[(#HTTP_VARS{url_site})]' /> + </div> + <br /><div class='spip_encadrer'> + <:forum_qui_etes_vous:> + <br /> + <:forum_votre_nom:> + <br /> + <input type='text' name='auteur' value='[(#HTTP_VARS{auteur})]' + class='forml' size='40[(#HTTP_VARS{disabled})] /> + <br /> + <:forum_votre_email:> + <br /> + <input type='text' name='email_auteur' value='[(#HTTP_VARS{email_auteur})]' + class='forml' size='40[(#HTTP_VARS{disabled})] /> + </div> + <br /><div align='right'> + <input type='submit' value='<:forum_voir_avant:>' class='spip_bouton'></div>] +</form> + diff --git a/formulaire_inscription-dist.html b/formulaire_inscription-dist.html new file mode 100644 index 0000000000..0348166ea9 --- /dev/null +++ b/formulaire_inscription-dist.html @@ -0,0 +1,14 @@ +</b></div><:form_forum_indiquer_nom_email:> +<form method='post' action='#SELF' style='border: 0px; margin: 0px;'> +<div><b> +<:form_pet_votre_nom:> +</b></div> +<div><input type="text" class="forml" name="nom_inscription" value="" size="30" /></div> +<div><b> +<:form_pet_votre_email:> +</b></div> +<div><input type="text" class="forml" name="mail_inscription" value="" size="30" /></div> +<br /> +<div align="right"><input type="submit" class="spip_bouton" value="<:bouton_valider:>" /></div> +</form> +<div><b> diff --git a/formulaire_recherche-dist.html b/formulaire_recherche-dist.html new file mode 100644 index 0000000000..154cbd4580 --- /dev/null +++ b/formulaire_recherche-dist.html @@ -0,0 +1,8 @@ +<form action='[(#HTTP_VARS{lien})]' method='get' class='formrecherche'> + <input type='text' + id='formulaire_recherche' + size='50' + class='formrecherche' + name='recherche' + value='[(#HTTP_VARS{recherche})]' /> +</form> diff --git a/formulaire_signature.html b/formulaire_signature.html new file mode 100644 index 0000000000..2ba6abbc8c --- /dev/null +++ b/formulaire_signature.html @@ -0,0 +1,41 @@ +<BOUCLE1(ARTICLES){id_article}> +<form method='post' + action='#SELF#sp#ID_ARTICLE' > + +<input type="hidden" name="url_page" value="#URL_SITE_SPIP/#SELF"> +[(#HTTP_VARS{texte}|traiter_raccourcis|interdire_scripts)] +<div> + <a name='#sp#ID_ARTICLE'></a> + <fieldset> + <p> + <b><:form_pet_votre_nom:></b><br /> + <input type="text" class="forml" name="nom_email" value="" size="20" /> + </p> + <p> + <b><:form_pet_votre_email:></b><br /> + <input type="text" class="forml" name="adresse_email" value="" size="20" /> + </p> + </fieldset> + <br /> + <fieldset> + <p> + [(#HTTP_VARS{site_obli}) <:form_pet_votre_site:><br />] + <b><:form_pet_nom_site2:></b><br /> + <input type="text" class="forml" name="nom_site" value="" size="20" /> + </p> + <p> + <b><:form_pet_adresse_site:></b><br /> + <input type="text" class="forml" name="url_site" value="http://" size="20" /> + </p> + </fieldset> + [(#HTTP_VARS{message}) <br /> + <fieldset> + <b><:form_pet_message_commentaire:></b><br /> + <textarea name="message" rows="3" class="forml" cols="20" wrap='soft'></textarea> + </fieldset> + ] +</div> +<br /> +<div align="right"><input type="submit" name="Valider" class="spip_bouton" value="<:bouton_valider:>" /></div> +</form> +</BOUCLE1> \ No newline at end of file diff --git a/formulaire_site-dist.html b/formulaire_site-dist.html new file mode 100644 index 0000000000..fbb5b8e70d --- /dev/null +++ b/formulaire_site-dist.html @@ -0,0 +1,10 @@ +<form action="#SELF" method="post"> +<p><div class='spip_encadrer'><b><:form_prop_nom_site:></b><br /> +<input type="text" class="forml" name="nom_site" value="" size="30"> +</p><p><b><:form_prop_url_site:></b></p><br /> +<input type="text" class="forml" name="url_site" value="" size="30"></div> +<p><b><:form_prop_description:></b></p><br /> +<textarea name='description_site' rows='5' class='forml' cols='40' wrap=soft></textarea> +<div align="right"><input type="submit" name="valider" class="spip_bouton" value=" <:bouton_valider:>"> +</div> +</form> diff --git a/inc-balises.php3 b/inc-balises.php3 index 0892482084..9ff8e10dc6 100644 --- a/inc-balises.php3 +++ b/inc-balises.php3 @@ -1,3 +1,4 @@ + <?php // @@ -655,7 +656,7 @@ function balise_PARAMETRES_FORUM_dist($p) { // Ca donne les arguments a chercher dans la pile,on compile leur localisation // Ensuite on delegue a une fonction generale definie dans inc-calcul-outils // qui recevra a l'execution la valeurs des arguments, -// ainsi que les filtres (que la compilation ignore pour le moment) +// ainsi que les filtres (qui ne sont donc pas traites ā la compil) function calculer_balise_formulaire($p) { balise_distante_interdite($p); @@ -670,6 +671,7 @@ function calculer_balise_formulaire($p) { . (!$filtres ? '' : ("'" . join("','", $filtres) . "'")) . "))"; $p->statut = 'php'; + $p->fonctions = ''; return $p; } @@ -701,4 +703,29 @@ function balise_FORMULAIRE_ADMIN_dist($p) { return $p; } +// reference a l'URL de la page courante + +function balise_SELF_dist($p) { + $p->code = 'quote_amp($GLOBALS["clean_link"]->getUrl())'; + $p->statut = 'php'; + return $p; +} + +// reference aux parametres GET & POST + +function balise_HTTP_VARS_dist($p) { + $a = $p->fonctions; + if ($a) list(,$nom) = each($a) ; else $nom = ''; + if (!ereg(' *\{ *([][a-zA-Z0-9_-]+) *\} *',$nom, $m)) + erreur_squelette(_L("Champ #HTTP_VARS argument '$nom' fautif"), + $p->id_boucle); + else { + $p->code = '$Pile[0]["' . addslashes($m[1]) . '"]'; + $p->statut = 'php'; + $filtres= array(); + while (list(, $nom) = each($a)) if ($nom) $filtres[] = $nom; + $p->fonctions = $filtres; + } + return $p; +} ?> diff --git a/inc-calcul-outils.php3 b/inc-calcul-outils.php3 index 67acd66fa8..73ee061457 100644 --- a/inc-calcul-outils.php3 +++ b/inc-calcul-outils.php3 @@ -84,14 +84,14 @@ function affiche_logos($arton, $artoff, $lien, $align) { global $espace_logos; $num_survol++; - if ($arton) { - if ($align) $align="align='$align' "; - - $milieu = "<img src='$arton' $align". - " name='image$num_survol' border='0' alt=''". - " hspace='$espace_logos' vspace='$espace_logos' class='spip_logos' />"; - - if ($artoff) { + if (!$arton) return ''; + $milieu = "<img src='$arton'" + . ($align ? " align='$align' " : '') + . " name='image$num_survol' border='0' " + . "alt='image$num_survol'" + . " hspace='$espace_logos' vspace='$espace_logos' class='spip_logos' />"; + + if ($artoff) { if ($lien) { $afflien = "<a href='$lien'"; $afflien2 = "a>"; @@ -103,13 +103,11 @@ function affiche_logos($arton, $artoff, $lien, $align) { $milieu = "$afflien onmouseover=\"image$num_survol.src=". "'$artoff'\" onmouseout=\"image$num_survol.src=". "'$arton'\">$milieu</$afflien2"; - } + } else if ($lien) { $milieu = "<a href='$lien'>$milieu</a>"; } - } else { - $milieu=""; - } + return $milieu; } @@ -155,7 +153,7 @@ function calculer_formulaire($nom, $args, $filtres) $r = $f($args, $filtres); if (is_string($r)) return $r; - else + else { return ('<'.'?php include_ecrire(\'inc_lang.php3\'); @@ -165,14 +163,15 @@ lang_select(\'' include_local("' . $file . '"); -echo ' +inclure_formulaire(' . $nom - . '_dyn(' - . join(',',$r) - . '); + . '_dyn(\'' + . join("', '", array_map("addslashes", $r)) + . '\')); lang_dselect(); ?' .">"); + } } // @@ -370,18 +369,17 @@ function sql_auteurs($id_article, $table, $id_boucle, $serveur='') function sql_petitions($id_article, $table, $id_boucle, $serveur, &$Cache) { $retour = spip_abstract_fetsel( - array('id_article', 'email_unique', 'site_obli', 'site_unique', - 'message', 'texte'), - array('petitions'), - array("id_article=".intval($id_article)), - '','','','',1, - $table, $id_boucle, $serveur); + array('id_article'), + array('petitions'), + array("id_article=".intval($id_article)), + '','','','',1, + $table, $id_boucle, $serveur); # cette page est invalidee par toute petition if ($retour AND $Cache) $Cache['petition']['petition'] = 1; - return $retour; + return ($retour ? $id_article : ''); } # retourne le chapeau d'un article, et seulement s'il est publie diff --git a/inc-compilo.php3 b/inc-compilo.php3 index 8344a2ad7b..8501ac66e2 100644 --- a/inc-compilo.php3 +++ b/inc-compilo.php3 @@ -37,36 +37,32 @@ include_ecrire('inc_serialbase.php3'); function calculer_inclure($fichier, $params, $id_boucle, &$boucles) { global $dossier_squelettes; - $criteres = ''; + $l = array(); if ($params) { - foreach($params as $param) { - if (ereg("^([_0-9a-zA-Z]+)[[:space:]]*(=[[:space:]]*([^}]+))?$", $param, $args)) { - $var = $args[1]; - $val = ereg_replace('^["\'](.*)["\']$', "\\1", trim($args[3])); - $val = addslashes(addslashes($val)); - - // Cas de la langue : passer $spip_lang - // et non table.lang (car depend de {lang_select}) - if ($var =='lang') { - if ($val) - $l[] = "\'lang\' => \'$val\'"; - else - $l[] = "\'lang\' => \''.\$GLOBALS[\"spip_lang\"].'\'"; - } - - // Cas normal {var=val} - else - if ($val) - $l[] = "\'$var\' => \'$val\'"; + foreach($params as $var => $val) { + if ($val) { + $val = trim($val); + $val = ereg_replace('^["\'](.*)["\']$', "\\1",$val); + $l[] = "\'$var\' => \'" . + addslashes(calculer_param_dynamique($val, + $boucles, + $idb)) . + "\'"; + } + else { + // Cas de la langue : passer $spip_lang + // et non table.lang (car depend de {lang_select}) + if ($var =='lang') + $l[] = "\'lang\' => \''.\$GLOBALS[\"spip_lang\"].'\'"; else $l[] = "\'$var\' => \'' . addslashes(" . index_pile($id_boucle, $var, $boucles) . ") .'\'"; - } - $criteres = join(", ",$l); - } + } + } } return "\n'<". - "?php\n\t\$contexte_inclus = array($criteres);\n\t". - "\$fichier_inclus = \'$fichier\';\n" . + "?php\n\t\$contexte_inclus = array(" . + join(", ",$l) . + ");\n\t\$fichier_inclus = \'$fichier\';\n" . (($dossier_squelettes) ? (" if (@file_exists(\'$dossier_squelettes/$fichier\')){ diff --git a/inc-criteres.php3 b/inc-criteres.php3 index 61b5e28efc..83305ac7f3 100644 --- a/inc-criteres.php3 +++ b/inc-criteres.php3 @@ -258,6 +258,33 @@ function critere_par_dist($idb, &$boucles, $param, $not) { +function calculer_critere_parties($idb, &$boucles, $param, $not, $match) { + global $tables_relations, $table_des_tables, $table_date, $tables_des_serveurs_sql; + $boucle = &$boucles[$idb]; + list(,$a1,$op,$a2) = $match; + list($a11,$a12) = calculer_critere_parties_aux($idb, $boucles, $a1); + list($a21,$a22) = calculer_critere_parties_aux($idb, $boucles, $a2); + + if (($op== ',')&&(is_numeric($a11) && (is_numeric($a21)))) + $boucle->limit = $a11 .',' . $a21; + else { + $boucle->partie = ($a11 != 'n') ? $a11 : $a12; + $boucle->total_parties = ($a21 != 'n') ? $a21 : $a22; + $boucle->mode_partie = (($op == '/') ? '/' : + (($a1=='n')?'-':'+').(($a2=='n')?'-':'+')); + } +} + +function calculer_critere_parties_aux($idb, &$boucles, $param) { + ereg('^(([0-9]+)|n|(#.*))(-([0-9]+))?$', $param, $m); + if ($m[1] == 'n') + $a = 'n'; + else { + $a = calculer_param_dynamique($m[1], $boucles, $idb); + if (ereg('" \. *addslashes(.*)\. "', $a, $m2)) $a = $m2[1]; + } + return array($a, ($m[5] ? $m[5] : 0)); +} // // La fonction d'aiguillage sur le nom du criteres @@ -299,28 +326,11 @@ function calculer_critere_DEFAUT($idb, &$boucles, $param, $not) { $primary = $boucle->primary; $id_field = $id_table . '.' . $primary; - if (ereg('^([0-9]+)/([0-9]+)$', $param, $match)) { - $boucle->partie = $match[1]; - $boucle->total_parties = $match[2]; - $boucle->mode_partie = '/'; - } - else if (ereg('^(([0-9]+)|n)(-([0-9]+))?,(([0-9]+)|n)(-([0-9]+))?$', $param, $match)) { - if (($match[2]!='') && ($match[6]!='')) - $boucle->limit = $match[2].','.$match[6]; - else { - $boucle->partie = - ($match[1] != 'n') ? $match[1] : - ($match[4] ? $match[4] : 0); - $boucle->total_parties = - ($match[5] != 'n') ? $match[5] : - ($match[8] ? $match[8] : 0); - $boucle->mode_partie = - (($match[1]=='n')?'-':'+').(($match[5]=='n')?'-':'+'); - } - } + if (ereg('^([0-9a-zA-Z#_\{\}]+)([,/])([0-9a-zA-Z#_\{\}]+)$', $param, $match)) + calculer_critere_parties($idb, $boucles, $param, $not, $match); // Restriction de valeurs (implicite ou explicite) - else if (eregi('^([a-z_]+\(?[a-z_]*\)?) *(\??)((!?)(<=?|>=?|==?|IN) *"?([^<>=!"]*))?"?$', $param, $match)) { + else if (eregi('^([a-z_]+\(?[a-z_]*\)?) *(\??)((!?)(<=?|>=?|==?|IN) *"?([^<>=!"]*))?"?$', $param, $match)) { $op = $match[5]; // Variable comparee $col = $match[1]; @@ -574,11 +584,14 @@ define("_REF_HTTP_GET_VAR", '%'); // Calculer les parametres // function calculer_param_dynamique($val, &$boucles, $idb) { - if (ereg(NOM_DE_CHAMP, $val, $regs)) { +# if (ereg('^ *\((.*)) *$', $val, $m)) $val = $m[1]; # si on veut (#...) + if (ereg(NOM_DE_CHAMP . "(\{[^}]*\})?", $val, $regs)) { + spip_log("dyn: '$val'" . join("','", $regs)); $champ = new Champ; $champ->nom_boucle = $regs[2]; $champ->nom_champ = $regs[3]; $champ->etoile = $regs[4]; + $champ->fonctions = $regs[5] ? array($regs[5]) : ''; $champ->id_boucle = $boucles[$idb]->id_parent; $champ->boucles = &$boucles; $champ->id_mere = $idb; @@ -586,8 +599,11 @@ function calculer_param_dynamique($val, &$boucles, $idb) { return '" . addslashes(' . $champ . ') . "'; } else { - if ($val[0]==_REF_HTTP_GET_VAR) + if ($val[0]==_REF_HTTP_GET_VAR) { + spip_log($val . + " est obsolete; utiliser HTTP_VARS{" . substr($val,1) . "}"); return '" . addslashes($Pile[0][\''. substr($val,1) ."']) . \""; + } else return addslashes($val); } diff --git a/inc-ecrire_auteur.php3 b/inc-ecrire_auteur.php3 index c9b4a1d4f9..f7b1791bf6 100644 --- a/inc-ecrire_auteur.php3 +++ b/inc-ecrire_auteur.php3 @@ -12,70 +12,41 @@ function ecrire_auteur_stat($args, $filtres) { list($id_auteur, $mail, $sujet, $texte, $adres) = $args; return (!email_valide($mail) ? '' : - array("$id_auteur", - "'$mail'", - "'" . addslashes($sujet) ."'", - "'" . addslashes($texte) ."'", - "'" . addslashes($adres) ."'")); + array($id_auteur, $mail,$sujet, $texte, $adres)); } function ecrire_auteur_dyn($id_auteur, $mail, $sujet, $texte, $adres) { - global $flag_wordwrap, $spip_lang_rtl; - $puce_ligne = "<br /><img src='puce$spip_lang_rtl.gif' border='0' alt='-' /> "; - - include_ecrire("inc_filtres.php3"); - - if ($texte) { - if ($sujet == "") - $erreur = _T('form_prop_indiquer_sujet'); - else if (! email_valide($adres) ) - $erreur = _T('form_prop_indiquer_email'); - else if ($GLOBALS['valide_message_auteur']) { // verifier hash ? - $texte .= "\n\n-- "._T('envoi_via_le_site')." ".lire_meta('nom_site')." (".lire_meta('adresse_site')."/) --\n"; - include_ecrire("inc_mail.php3"); - envoyer_mail($mail, - $sujet, $texte, $adres, + global $flag_wordwrap, $clean_link, $spip_lang_rtl; + include_ecrire("inc_lang.php3"); // pour spip_lang_rtl + if (!$spip_lang_rt) $spip_lang_rtl = '_rtl'; # INDISPENSABLE cf skel + $mailko = $texte && !email_valide($adres); + $validable = $texte && $sujet && (!$mailko); + + if ($validable && ($GLOBALS['valide'] == _T('form_prop_confirmer_envoi'))) { + $texte .= "\n\n-- "._T('envoi_via_le_site')." ".lire_meta('nom_site')." (".lire_meta('adresse_site')."/) --\n"; + include_ecrire("inc_mail.php3"); + envoyer_mail($mail, $sujet, $texte, $adres, "X-Originating-IP: ".$GLOBALS['REMOTE_ADDR']); - return $puce_ligne . _T('form_prop_message_envoye'); - } else { //preview - if ($flag_wordwrap) $texte = wordwrap($texte); - $link = $GLOBALS['clean_link']; - $link->addVar('email_message_auteur', $adres); - $link->addVar('sujet_message_auteur', $sujet); - $link->addVar('texte_message_auteur', $texte); - $link->addVar('valide_message_auteur', 'oui'); - return - "<br />" - . _T('form_prop_sujet') - . " <b>" - . entites_html($sujet) - . "</b></div>" - . "<pre>" - . entites_html($texte) - . "</pre>" - . $link->getForm('post') - . "<div align=\"right\"><input type=\"submit\" class=\"spip_bouton\" value=\"" - . _T('form_prop_confirmer_envoi') - . "\" />" - . "</form>"; - } - } - - if ($erreur) $res = $puce_ligne . $erreur . '<br /><br /> '; - - $retour = $GLOBALS['REQUEST_URI']; - $link = $GLOBALS['clean_link']; - return $res - . $link->getForm('post') - ._T('form_pet_votre_email')."<br />" . - "<input type=\"text\" class=\"forml\" name=\"email_message_auteur\" value=\"".entites_html($adres)."\" SIZE=\"30\" />\n" . - "<p>"._T('form_prop_sujet')."<br />" . - "<input type=\"text\" class=\"forml\" name=\"sujet_message_auteur\" value=\"".entites_html($sujet)."\" SIZE=\"30\" /></p>\n" . - "<p><textarea name='texte_message_auteur' rows='10' class='forml' cols='40' wrap=soft>" - .entites_html($texte)."</textarea></p>\n" . - "<div align=\"right\"><input type=\"submit\" class=\"spip_bouton\" value=\""._T('form_prop_envoyer')."\" /></div>" . - "</form>"; - + return _T('form_prop_message_envoye'); + } + + $clean_link->delVar('sujet_message_auteur'); + $clean_link->delVar('texte_message_auteur'); + $clean_link->delVar('email_message_auteur'); + $clean_link->delVar('id_auteur'); + return + array('formulaire_ecrire_auteur', 0, + array( + 'id_auteur' => $id_auteur, + 'mailko' => $mailko ? $spip_lang_rtl : '', + 'mail' => entites_html($adres), + 'sujetko' => ($texte && !$sujet) ? $spip_lang_rtl : '', + 'sujet' => entites_html($sujet), + 'texte' => entites_html($texte), + 'valide' => ($validable ? + _T('form_prop_confirmer_envoi') : + _T('form_prop_envoyer')) + ) + ); } - ?> diff --git a/inc-forum.php3 b/inc-forum.php3 index 31030da7c2..ee31160efd 100644 --- a/inc-forum.php3 +++ b/inc-forum.php3 @@ -41,6 +41,10 @@ function retour_forum($id_rubrique, $id_forum, $id_article, $id_breve, $id_syndi global $REMOTE_ADDR, $id_message, $afficher_texte, $spip_forum_user; + // ne pas mettre '', sinon le squelette n'affichera rien. + + $previsu = ' '; + // Recuperer le message a previsualiser if ($id_message = intval($GLOBALS[HTTP_POST_VARS][id_message])) { $titre = $GLOBALS[HTTP_POST_VARS][titre]; @@ -92,7 +96,7 @@ function retour_forum($id_rubrique, $id_forum, $id_article, $id_breve, $id_syndi $previsu = preg_replace("@<(/?)f(orm[>[:space:]])@ism", "<\\1no-f\\2", $previsu); } } else { - // Si premiere edition, initialiser l'auteur + // Premiere edition, initialiser l'auteur // puis s'accorder une nouvelle entree dans la table if ($spip_forum_user && is_array($cookie_user = unserialize($spip_forum_user))) { $auteur = $cookie_user['nom']; @@ -120,8 +124,6 @@ function retour_forum($id_rubrique, $id_forum, $id_article, $id_breve, $id_syndi $forum_id_syndic = intval($id_syndic); $hash = calculer_action_auteur("ajout_forum $forum_id_rubrique $forum_id_forum $forum_id_article $forum_id_breve $forum_id_syndic $alea"); $titre = entites_html($titre); - if (!$url_site) $url_site = "http://"; - if ($forums_publics == "abo") $disabled = " disabled='disabled'"; // Faut-il ajouter des propositions de mots-cles if ((lire_meta("mots_cles_forums") == "oui") && ($table != 'forum')) @@ -129,64 +131,37 @@ function retour_forum($id_rubrique, $id_forum, $id_article, $id_breve, $id_syndi else $table = ''; - $url = quote_amp($url); - - return ("<form action='$url' method='post' name='formulaire'>\n" . - boutonne('hidden', 'retour', $retour) . - boutonne('hidden', 'ajout_forum','oui') . - boutonne('hidden', 'id_message', $id_message) . - boutonne('hidden', 'alea', $alea) . - boutonne('hidden', 'hash', $hash) . - (($forums_publics != 'pri') ? '' : - (_T('forum_info_modere'). '<p>')) . - (($afficher_texte == "non") ? - (boutonne('hidden', 'titre', $titre) . - $table . - "\n<br /><div align='right'>" . - boutonne('submit', '', _T('forum_valider'), "class='spip_bouton'") . - "</div>") : - ($previsu . "<div class='spip_encadrer'><b>"._T('forum_titre')."</b>\n<br />". - boutonne('text', 'titre', $titre, "class='forml' size='40'") . "</div>\n<br />" - ."<div class='spip_encadrer'><b>" . - _T('forum_texte') . - "</b>\n<br />" . - _T('info_creation_paragraphe') . - "\n<br /> " . - afficher_barre('formulaire', 'texte', true) . - "<textarea name='texte' " . - afficher_claret() . - " rows='12' class='forml' cols='40'>" . - entites_html($texte) . - "</textarea></div>" . - $table . - "\n<br /><div class='spip_encadrer'>" . - _T('forum_lien_hyper') . - "\n<br />" . - _T('forum_page_url') . - "\n<br />" . - _T('forum_titre') . - "\n<br />" . - boutonne('text', 'nom_site_forum', entites_html($nom_site_forum), " class='forml' size='40'") . - "\n<br />" . - _T('forum_url') . - "\n<br />" . - boutonne('text', 'url_site', entites_html($url_site), - " class='forml' size='40'") . - "</div>\n<br /><div class='spip_encadrer'>" . - _T('forum_qui_etes_vous') . - "\n<br />" . - _T('forum_votre_nom') . - "\n<br />" . - boutonne('text', 'auteur', entites_html($auteur), - "class='forml' size='40'$disabled") . - "\n<br />" . - _T('forum_votre_email') . - "\n<br />" . - boutonne('text', 'email_auteur', entites_html($email_auteur), - "class='forml' size='40'$disabled") . - "</div>\n<br /><div align='right'>" . - boutonne('submit', '', _T('forum_voir_avant'), "class='spip_bouton'") . - "</div>\n</form>"))); + return array( + 'formulaire_forum', + 0, + array( + 'afficher_claret' => afficher_claret(), + // ca devrait plutot etre un squelette + 'afficher_barre' => afficher_barre('formulaire', 'texte', true), + 'afficher_non' => + ($afficher_texte != 'non' ? '' : + (boutonne('hidden', 'titre', $titre) . + $table . + "\n<br /><div align='right'>" . + boutonne('submit', '', _T('forum_valider'), "class='spip_bouton'") . + "</div>")), + 'alea' => $alea, + 'auteur' => entites_html($auteur), + 'disabled' => ($forums_publics == "abo")? " disabled='disabled'" : '', + 'email_auteur' => entites_html($email_auteur), + 'hash' => $hash, + 'id_message' => $id_message, + 'modere' => (($forums_publics != 'pri') ? '' : + (_T('forum_info_modere'). '<p>')), + 'nom_site_forum' => entites_html($nom_site_forum), + 'previsu' => $previsu, + 'retour' => $retour, + 'table' => $table, + 'texte' => entites_html($texte), + 'titre' => $titre, + 'url' => quote_amp($url), + 'url_site' => ($url_site ? entites_html($url_site) : "http://") + )); } @@ -342,21 +317,12 @@ function forum_stat($args, $filtres) // recuperer les donnees du forum auquel on repond, false = forum interdit if (!$r = sql_recherche_donnees_forum ($idr, $idf, $ida, $idb, $ids)) return ''; + list($titre, $table, $accepter_forum) = $r; return - array("'" - . str_replace('\'', '\\\'', - str_replace('\\', '\\\\', serialize($args))) - . "'", - "'" - . str_replace('\'', '\\\'', - str_replace('\\', '\\\\', serialize($r))) - . "'"); + array($titre, $table, $accepter_forum, $idr, $idf, $ida, $idb, $ids); } -function forum_dyn($args, $donnees_forum) { - - list ($idr, $idf, $ida, $idb, $ids) = unserialize($args); - list($titre, $table, $accepter_forum) = unserialize($donnees_forum); +function forum_dyn($titre, $table, $accepter_forum, $idr, $idf, $ida, $idb, $ids) { // url de reference if (!$url = rawurldecode($GLOBALS['url'])) diff --git a/inc-html-squel.php3 b/inc-html-squel.php3 index 97fd95605b..fa2ebe050a 100644 --- a/inc-html-squel.php3 +++ b/inc-html-squel.php3 @@ -9,30 +9,36 @@ define("_INC_HTML_SQUEL", "1"); # il est charge par un include calcule dans inc-calcul-squel # pour permettre differentes syntaxes en entree -define(NOM_DE_BOUCLE, "[0-9]+|[-_][-_.a-zA-Z0-9]*"); -define(NOM_DE_CHAMP, "#((" . NOM_DE_BOUCLE . "):)?([A-Z_]+)(\*?)"); -define(CHAMP_ETENDU, '\[([^]\[]*)\(' . NOM_DE_CHAMP . '([^]\[)]*)\)([^]\[]*)\]'); -define(PARAM_DE_BOUCLE,'\{[^}]*\}'); -define(TYPE_DE_BOUCLE, "[^)]*"); -define(BALISE_DE_BOUCLE, +define('NOM_DE_BOUCLE', "[0-9]+|[-_][-_.a-zA-Z0-9]*"); +define('NOM_DE_CHAMP', "#((" . NOM_DE_BOUCLE . "):)?([A-Z_]+)(\*?)"); +define('CHAMP_ETENDU', '\[([^]\[]*)\(' . NOM_DE_CHAMP . '([^]\[)]*)\)([^]\[]*)\]'); +define('PARAM_DE_BOUCLE','[[:space:]]*\{[[:space:]]*([^{}]*(\{[^\}]*\}[^\} ]*)?)[[:space:]]*\}'); +define('TYPE_DE_BOUCLE', "[^)]*"); +define('BALISE_DE_BOUCLE', "^<BOUCLE(" . NOM_DE_BOUCLE . ')[[:space:]]*\((' . TYPE_DE_BOUCLE . - ')\)[[:space:]]*(([[:space:]]*' . + ')\)((' . PARAM_DE_BOUCLE . ')*)[[:space:]]*>'); -define(BALISE_INCLURE,"<INCLU[DR]E[[:space:]]*\(([-_0-9a-zA-Z./ ]+)\)([^>]*)>"); +define('PARAM_INCLURE','[[:space:]]*\{[[:space:]]*([_0-9a-zA-Z]+)[[:space:]]*(=[[:space:]]*([^\{\}]*(\{[^\}]*\}[^\} ]*)?))?[[:space:]]*\}'); +define('BALISE_INCLURE',"<INCLU[DR]E[[:space:]]*\(" . + '([-_0-9a-zA-Z./ ]+)' . + '\)((' . + PARAM_INCLURE . + ')*)[[:space:]]*>'); +define('DEBUT_DE_BOUCLE','/<B('.NOM_DE_BOUCLE.')>.*?<BOUCLE\1[^-_.a-zA-Z0-9]|<BOUCLE('.NOM_DE_BOUCLE.')/ms'); # preg -define(DEBUT_DE_BOUCLE,'/<B('.NOM_DE_BOUCLE.')>.*?<BOUCLE\1[^-_.a-zA-Z0-9]|<BOUCLE('.NOM_DE_BOUCLE.')/ms'); # preg +function parser_inclure($texte) { + while (($p=strpos($texte, '<INCLU')) !== false) { + $fin = substr($texte, $p); -function parser_texte($texte) { - while (ereg(BALISE_INCLURE, $texte, $match)) { + if (!ereg('^' . BALISE_INCLURE, $fin, $match)) break; $s = $match[0]; - $p = strpos($texte, $s); $debut = substr($texte, 0, $p); - $texte = substr($texte, $p + strlen($s)); + $texte = substr($fin, strlen($s)); if ($debut) { $champ = new Texte; @@ -41,27 +47,22 @@ function parser_texte($texte) { } $champ = new Inclure; $champ->fichier = $match[1]; - + $champ->params = array(); $p = trim($match[2]); - if (!$p) - $champ->params = ''; - else { - if (!(ereg('^\\{(.*)\\}$', $p, $params))) { - erreur_squelette(_L("Paramètres d'inclusion incorrects"), $s); + if ($p) { + while (ereg('^' . PARAM_INCLURE . '(.*)$', $p, $m)) { + $champ->params[$m[1]] = $m[3]; + $p = $m[5]; } - else - $champ->params = split("\}[[:space:]]*\{", $params[1]); + + if ($p) erreur_squelette(_L("Paramètres d'inclusion incorrects"), $s); } $result[] = $champ; } - if ($texte) { - $champ = new Texte; - $champ->texte = $texte; - $result[] = $champ; - } - - return $result; + if ($texte) + return array_merge($result, parser_champs_etendus($texte)); + else return $result; } function parser_champs($texte) { @@ -69,8 +70,9 @@ function parser_champs($texte) { while (ereg(NOM_DE_CHAMP . '(.*)$', $texte, $regs)) { $p = strpos($texte, $regs[0]); if ($p) { - $result = array_merge($result, - parser_texte(substr($texte, 0, $p))); + $champ = new Texte; + $champ->texte = (substr($texte, 0, $p)); + $result[] = $champ; } $champ = new Champ; @@ -80,10 +82,12 @@ function parser_champs($texte) { $texte = $regs[5]; $result[] = $champ; } - if (!$texte) + if ($texte) { + $champ = new Texte; + $champ->texte = $texte; + $result[] = $champ; + } return $result; - else - return array_merge($result, parser_texte($texte)); } // Gestion des imbrications: @@ -126,7 +130,6 @@ function parser_champs_interieurs($texte, $sep, $result) { $champ->cond_avant = parser_champs_exterieurs($regs[1],$sep,$result); $champ->cond_apres = parser_champs_exterieurs($regs[7],$sep,$result); $fonctions = $regs[6]; - if ($fonctions) { $fonctions = explode('|', ereg_replace("^\|", "", $fonctions)); foreach($fonctions as $f) $champ->fonctions[]= $f; @@ -153,12 +156,20 @@ function parser_champs_interieurs($texte, $sep, $result) { function parser_param($params, &$result) { $params2 = Array(); $type = $result->type_requete; - $i = 1; - while (ereg('^[[:space:]]*\{[[:space:]]*([^ }])([^"}]*)(["}])(.*)$', $params, $args)) { - if ($args[3] == "}") { - $params = $args[4]; - ereg("^(.*[^ \t\n])[[:space:]]*$", $args[2], $m); - $param = $args[1] . $m[1]; + while (ereg('^' . PARAM_DE_BOUCLE . '[[:space:]]*(.*)$', $params, $m)) { + $params = $m[3]; + // cas d'un critere avec {...} + if ($m[2]) + $params2[] = $m[1]; + else { + if (strlen($m[1]) < 2 ) + $params2[] = $m[1]; + else { + ereg('(.)([^"}]*)(.)', $m[1], $args); + // cas syntaxique general, + // traiter qq lexemes particuliers pour faciliter la suite + if ($args[3] != '"') { + $param = $m[1]; if (($param == 'tout') OR ($param == 'tous')) { $result->tout = true; unset ($param); @@ -185,35 +196,21 @@ function parser_param($params, &$result) { // l'ajouter if ($param) $params2[] = $param; - } + } else { + // cas d'un guillemet final if ($args[1] == '"') { - if (!ereg("[[:space:]]*\}(.*)$", $params, $m)) - break; - else { - $params = $m[1]; - $result->separateur = + // si tout le param est entre guillement, vite vu + $result->separateur = ereg_replace("'","\'",$args[2]); - } } else { - if (!ereg("([^\"]*\"[[:space:]]*)\}(.*)$", $args[4], $m)) - break; - else { - $params = $m[2]; - $params2[] = $args[1] . $args[2] . '"' . $m[1]; - } + $params2[] = $args[1] . $args[2] . '"' . $m[1]; } } - $i++; - } - - if ($params) { - erreur_squelette(($result->id_boucle . - _L(": Paramètre $i (ou suivants) incorrect")), - $params); + } + } } - $result->param = $params2; } @@ -238,6 +235,7 @@ function parser($texte, $id_parent, &$boucles, $nom) { // $debut = substr($texte, 0, $p); $milieu = substr($texte, $p); + if (!ereg(BALISE_DE_BOUCLE, $milieu, $match)) { erreur_squelette((_T('erreur_boucle_syntaxe')), $milieu); } @@ -321,7 +319,7 @@ function parser($texte, $id_parent, &$boucles, $nom) { $result->cond_altern = parser($result->cond_altern,$id_parent,$boucles, $nom); $result->milieu = parser($milieu, $id_boucle,$boucles, $nom); - $all_res = array_merge($all_res, parser_champs_etendus($debut)); + $all_res = array_merge($all_res, parser_inclure($debut)); $all_res[] = $result; if ($boucles[$id_boucle]) { erreur_squelette(_T('erreur_boucle_syntaxe'), @@ -331,7 +329,7 @@ function parser($texte, $id_parent, &$boucles, $nom) { $boucles[$id_boucle] = $result; } - return array_merge($all_res, parser_champs_etendus($texte)); + return array_merge($all_res, parser_inclure($texte)); } ?> diff --git a/inc-inscription.php3 b/inc-inscription.php3 index 8fdfb394ed..a686ff1aee 100644 --- a/inc-inscription.php3 +++ b/inc-inscription.php3 @@ -1,53 +1,25 @@ <?php -global $inscription_array; -$inscription_array = array(); +global $inscription_array ; +$inscription_array = array('mail_inscription', 'nom_inscription'); function inscription_stat($args, $filtres) { + list($mail_inscription, $nom_inscription) = $args; return ((lire_meta('accepter_inscriptions') != 'oui') ? '' : - array("'redac'")); + array('redac', $mail_inscription, $nom_inscription)); } -function inscription_dyn($type) { - - switch (status_inscription($type)) { - case 1: return ''; - case 2: return ''; - case 3: return "<div class='reponse_formulaire'><b>" ._T('form_forum_identifiant_mail') . "</b></div>"; - case 4: return "<div class='reponse_formulaire'><b>" ._T('form_forum_probleme_mail') . "</b></div>"; - case 5: return "<div class='reponse_formulaire'><b>" ._T('form_forum_access_refuse') . "</b></div>"; - case 6: return "<div class='reponse_formulaire'><b>" ._T('form_forum_email_deja_enregistre') . "</b></div>"; - case 7: - - $link = new Link; - $url = $link->getUrl(); - $url = quote_amp($url); - return _T('form_forum_indiquer_nom_email') . - "<form method='post' action='$url' style='border: 0px; margin: 0px;'>\n" . - "<div><b>"._T('form_pet_votre_nom')."</b></div>" . - "<div><input type=\"text\" class=\"forml\" name=\"nom_inscription\" value=\"\" size=\"30\" /></div>" . - "<div><b>"._T('form_pet_votre_email')."</b></div>" . - "<div><input type=\"text\" class=\"forml\" name=\"mail_inscription\" value=\"\" size=\"30\" /></div>" . - "<div align=\"right\"><input type=\"submit\" class=\"spip_bouton\" value=\""._T('bouton_valider')."\" /></div>" . - "</form>"; - } -} - -function status_inscription($type) { - +function inscription_dyn($type, $mail_inscription, $nom_inscription) { if ($type == 'redac') { - if (lire_meta("accepter_inscriptions") != "oui") return 1; $statut = "nouveau"; } else if ($type == 'forum') { $statut = "6forum"; } - else return 2; // tentative de hack...? - - global $mail_inscription, $nom_inscription; + else return ''; // tentative de hack...? - if ($mail_inscription && $nom_inscription) { + if (test_mail_ins($type, $mail_inscription) && $nom_inscription) { include(_FILE_CONNECT); // envoyer les identifiants si l'abonne n'existe pas déjā. if (!$row = spip_fetch_array(spip_query("SELECT statut, id_auteur, login, pass FROM spip_auteurs WHERE email='".addslashes($mail_inscription)."' LIMIT 1"))) @@ -62,7 +34,7 @@ function status_inscription($type) { "('".addslashes($nom_inscription)."', '".addslashes($mail_inscription)."', '$login', '$mdpass', '$statut', '$htpass')"); ecrire_acces(); return envoyer_inscription($mail_inscription, $statut, $type, $login, $pass); - } + } else { // existant mais encore muet, renvoyer les infos @@ -71,15 +43,31 @@ function status_inscription($type) { } else { if ($row['statut'] == '5poubelle') // dead - return 5; + return _T('form_forum_access_refuse'); else // deja inscrit - return 6; + return _T('form_forum_email_deja_enregistre'); } } } // demande du formulaire - else return 7; + else { + if (!$nom_inscription) + { + return array("formulaire_inscription-dist",0); + } + else { + spip_log("Mail incorrect: '$mail_inscription'"); + return _L('adresse mail incorrecte'); + } + } +} + +// fonction qu'on peut redefinir pour filtrer selon l'adresse mail +// cas general: controler juste que l'adresse n'est pas vide + +function test_mail_ins($type, $mail_inscription) { + return trim($mail_inscription); } // envoyer identifiants par mail @@ -98,9 +86,9 @@ function envoyer_inscription($mail, $statut, $type, $login, $pass) { include_ecrire("inc_mail.php3"); if (envoyer_mail($mail, "[$nom_site_spip] "._T('form_forum_identifiants'), $message)) - return 3; + return _T('form_forum_identifiant_mail'); else - return 4; + return _T('form_forum_probleme_mail'); } diff --git a/inc-public-global.php3 b/inc-public-global.php3 index bfbf312c9a..6fe4ab832a 100644 --- a/inc-public-global.php3 +++ b/inc-public-global.php3 @@ -250,6 +250,12 @@ function inclure_page($fond, $delais_inclus, $contexte_inclus, $cache_incluant=' } +function inclure_formulaire($r) { + if (is_string($r)) + echo $r; + else { list($fond, $delais, $contexte_inclus) = $r; include('inc-public.php3'); } +} + // // Le bouton des administrateurs // diff --git a/inc-recherche.php3 b/inc-recherche.php3 index e7b383406c..e880a5a53d 100644 --- a/inc-recherche.php3 +++ b/inc-recherche.php3 @@ -5,12 +5,13 @@ $recherche_array = array(); function recherche_stat($args, $filtres) { - if (lire_meta("activer_moteur") != "oui") - return ''; - else { - if (!($lien = $filtre[0])) $lien = 'recherche.php3'; - return "<form action='$lien' method='get' class='formrecherche'><input type='text' id='formulaire_recherche' size='20' class='formrecherche' name='recherche' value='" . _T('info_rechercher') . "' /></form>"; - } + return (lire_meta("activer_moteur") != "oui") ? '' : array($filtres[0]); +} + +function recherche_dyn($lien) { + return array('formulaire_recherche', 0, + array('lien' => ($lien ? $lien : 'recherche.php3'), + 'recherche' => ($GLOBALS['recherche'] ? $GLOBALS['recherche'] : _T('info_rechercher')))); } ?> \ No newline at end of file diff --git a/inc-signature.php3 b/inc-signature.php3 index 32ed1bdce3..4962e0aa28 100644 --- a/inc-signature.php3 +++ b/inc-signature.php3 @@ -5,78 +5,36 @@ // global $signature_array; -$signature_array = array('id_article', 'petition'); +$signature_array = array('petition'); function signature_stat($args, $filtres) { - list($id_article, $petition) = $args; - return (!$petition ? '' : - array("'$id_article'", - "'" - . str_replace('\'', '\\\'', - str_replace('\\', '\\\\', serialize($petition))) - . "'")); + return ($args[0] ? $args : ''); } -function signature_dyn($id_article,$petition) { +function signature_dyn($id_article) { if ($GLOBALS['val_confirm']) return _REPONSE_CONFIRMATION_SIGNATURE; // geree par inc-public.php3 else if ($GLOBALS['nom_email'] AND $GLOBALS['adresse_email']) return reponse_signature($id_article); - else if (!$petition) - return ''; else { - $row_petition = (unserialize($petition)); - include_ecrire("inc_texte.php3"); - include_ecrire("inc_mail.php3"); - - $id_article = $row_petition['id_article']; - $email_unique = $row_petition['email_unique']; - $site_obli = $row_petition['site_obli']; - $site_unique = $row_petition['site_unique']; - $message_petition = $row_petition['message']; - $texte_petition = $row_petition['texte']; - - $link = new Link; - $url = lire_meta("adresse_site").'/'.$link->getUrl(); - $link->addVar('url_page', $url); - - $retour = $link->getForm('post', "sp$id_article"); - - $retour .= propre($texte_petition); - - $retour .= "<div><a name='sp$id_article'></a><fieldset><p><b>"._T('form_pet_votre_nom')."</b><br />"; - $retour .= "<input type=\"text\" class=\"forml\" name=\"nom_email\" value=\"\" size=\"20\" /></p>"; - - $retour .= "<p><b>"._T('form_pet_votre_email')."</b><br />"; - $retour .= "<input type=\"text\" class=\"forml\" name=\"adresse_email\" value=\"\" size=\"20\" /></p></fieldset>"; - - $retour .= "<br /><fieldset><p>"; - if ($site_obli != "oui") { - $retour .= _T('form_pet_votre_site')."<br />"; - } - $retour .= "<b>"._T('form_pet_nom_site2')."</b><br />"; - $retour .= "<input type=\"text\" class=\"forml\" name=\"nom_site\" value=\"\" size=\"20\" /></p>"; - - $retour .= "<p><b>"._T('form_pet_adresse_site')."</b><br />"; - $retour .= "<input type=\"text\" class=\"forml\" name=\"url_site\" value=\"http://\" size=\"20\" /></p></fieldset>"; - - if ($message_petition == "oui") { - $retour .= "<br /><fieldset>"; - - $retour .= "<b>"._T('form_pet_message_commentaire')."</b><br />"; - $retour .= "<textarea name=\"message\" rows=\"3\" class=\"forml\" cols=\"20\" wrap='soft'>"; - $retour .= "</textarea></fieldset>\n"; - } - else { - $retour .= "<input type=\"hidden\" name=\"message\" value=\"\" />"; - } - $retour .= "</div>"; - - $retour .= "<br /><div align=\"right\"><input type=\"submit\" name=\"Valider\" class=\"spip_bouton\" value=\""._T('bouton_valider')."\" />"; - $retour .= "</div></form>\n"; - - return $retour; + include(_FILE_CONNECT); + $query_petition = "SELECT * FROM spip_petitions WHERE id_article='$id_article'"; + $result_petition = spip_query($query_petition); + + if (!$row = spip_fetch_array($result_petition)) return ''; + $site_obli = $row['site_obli']; + $message = $row['message']; + $texte = $row['texte']; + return array('formulaire_signature', + 0, + array( + 'id_article' => $id_article, + 'texte' => $texte, + 'message' => (($message == 'oui') ? ' ' : ''), + 'site_obli' => (($site_obli != 'oui') ? ' ' : '') + ) + ); } } diff --git a/inc-site.php3 b/inc-site.php3 index 0cf7e96545..ed118ef4e4 100644 --- a/inc-site.php3 +++ b/inc-site.php3 @@ -51,16 +51,7 @@ function site_dyn($la_rubrique) { $res = "<div class='reponse_formulaire'>$res</div>"; } else { - $link = $GLOBALS['clean_link']; - $res = $link->getForm('POST') . - "<p><div class='spip_encadrer'><b>"._T('form_prop_nom_site')."</b><br />" . - "<input type=\"text\" class=\"forml\" name=\"nom_site\" value=\"\" size=\"30\">" . - "</p><p><b>"._T('form_prop_url_site')."</b></p><br />" . - "<input type=\"text\" class=\"forml\" name=\"url_site\" value=\"\" size=\"30\"></div>" . - "<p><b>"._T('form_prop_description')."</b></p><br />" . - "<textarea name='description_site' rows='5' class='forml' cols='40' wrap=soft></textarea>" . - "<div align=\"right\"><input type=\"submit\" name=\"valider\" class=\"spip_bouton\" value=\""._t('bouton_valider')."\">" . - "</div></form>"; + $res = array('formulaire_site', 0); } return $res; } diff --git a/sommaire-dist.html b/sommaire-dist.html index 4c0b9bd4d2..bedc291ea1 100644 --- a/sommaire-dist.html +++ b/sommaire-dist.html @@ -143,9 +143,8 @@ <!-- Inscription au site --> - [<div class="formulaire"><:participer_site:> - <br /><br /> - (#FORMULAIRE_INSCRIPTION)</div>] + [<div class="formulaire"><:participer_site:><br /><br /> + <div class='reponse_formulaire'><b>(#FORMULAIRE_INSCRIPTION)</b></div></div>] </div> diff --git a/spip_image.php3 b/spip_image.php3 index b655cf33f1..c2da970bc3 100644 --- a/spip_image.php3 +++ b/spip_image.php3 @@ -39,8 +39,16 @@ function effacer_image($nom) { } function creer_repertoire_documents($ext) { + global $dossier_squelettes; + # est-il bien raisonnable d'accepter de creer si creer_rep retourne '' ? $rep = _DIR_DOC . creer_repertoire(_DIR_DOC, $ext); + // Securite + if (($rep == $dossier_squelettes) || (substr($rep,0,-1) == $dossier_squelettes)) + { + spip_log("dossier squelette egal a DIR_DOC/html!!!"); + exit; + } if (lire_meta("creer_htaccess") == 'oui') { include_ecrire('inc_acces.php3'); verifier_htaccess($rep); @@ -217,20 +225,22 @@ function corriger_extension($ext) { // function ajout_image($source, $dest) { - global $redirect_url, $hash_id_auteur, $hash, $num_img; + global $redirect_url, $hash_id_auteur, $hash, $num_img, $dossier_squelettes; // Securite - if (verifier_action_auteur("ajout_image $dest", $hash, $hash_id_auteur)) { + if (verifier_action_auteur("ajout_image $dest", $hash, $hash_id_auteur) + AND _DIR_DOC != $dossier_squelettes) { // analyse le type de l'image (on ne fait pas confiance au nom de // fichier envoye par le browser : pour les Macs c'est plus sur) - deplacer_fichier_upload($source, _DIR_DOC . $dest . '.tmp'); - $size = @getimagesize(_DIR_DOC . $dest . '.tmp'); + $f =_DIR_DOC . $dest . '.tmp'; + deplacer_fichier_upload($source, $f); + $size = @getimagesize($f); $type = decoder_type_image($size[2], true); if ($type) - @rename (_DIR_DOC . $dest . '.tmp', _DIR_DOC . $dest . ".$type"); + @rename ($f, _DIR_DOC . $dest . ".$type"); else - @unlink (_DIR_DOC . $dest . '.tmp'); + @unlink ($f); } } diff --git a/spip_pass.php3 b/spip_pass.php3 index 17295891a6..4cd88667fe 100644 --- a/spip_pass.php3 +++ b/spip_pass.php3 @@ -17,7 +17,7 @@ utiliser_langue_visiteur(); unset($erreur); $mode = $GLOBALS['mode']; - +spip_log("mode $mode"); // recuperer le cookie de relance if ($p = addslashes($p)) { $mode = 'oubli_pass'; @@ -117,7 +117,10 @@ else { echo "\n</p>"; include_local("inc-inscription.php3"); - echo inscription_dyn($mode); + include_local("inc-public-global.php3"); + echo inclure_formulaire(inscription_dyn($mode, + $GLOBALS['mail_inscription'], + $GLOBALS['nom_inscription'])); } else { install_debut_html(_T('pass_erreur')); @@ -125,12 +128,13 @@ else { } } -echo "<p align='right'>" . +echo "<p align='right'>", http_script("if (window.opener) document.write(\"<a href='javascript:close();'>\"); else document.write(\"<a href='./'>\"); -document.write(\""._T('pass_quitter_fenetre')."</a>\");"), -"<noscript>[<a href='./'>"._T('pass_retour_public')."</a>]</noscript> -</p>"; +document.write(\""._T('pass_quitter_fenetre')."</a>\");", + '', + "[<a href='./'>"._T('pass_retour_public')."</a>]"), + "</p>"; install_fin_html(); -- GitLab