/tags/v4.0/actu/formulaires/inc-menu_lang.php3 |
---|
New file |
0,0 → 1,23 |
<?php |
if (!defined("_ECRIRE_INC_VERSION")) return; #securite |
// Ce "menu_lang" collecte dans le contexte permet de forcer la langue |
// par defaut proposee dans le menu, en faisant une inclusion |
// <INCLURE(toto){menu_lang=xxx}> ; mais a quoi ca sert concretement ? |
global $balise_MENU_LANG_collecte; |
$balise_MENU_LANG_collecte = array('menu_lang'); |
// s'il n'y a qu'une langue eviter definitivement la balise ?php |
function balise_MENU_LANG_stat ($args, $filtres) { |
if (strpos(lire_meta('langues_multilingue'),',') === false) return ''; |
return $args; |
} |
// normalement $opt sera toujours non vide suite au test ci-dessus |
function balise_MENU_LANG_dyn($menu_lang) { |
include_local(find_in_path("inc-menu_lang_ecrire.php3")); |
return menu_lang_pour_tous('var_lang', $opt); |
} |
?> |
/tags/v4.0/actu/formulaires/inc-login_public.php3 |
---|
New file |
0,0 → 1,168 |
<?php |
if (!defined("_ECRIRE_INC_VERSION")) return; #securite |
include(_FILE_CONNECT); |
include_ecrire("inc_meta.php3"); |
include_ecrire("inc_session.php3"); |
include_ecrire("inc_filtres.php3"); |
global $balise_LOGIN_PUBLIC_collecte; |
$balise_LOGIN_PUBLIC_collecte = array('url'); |
# retourner: |
# 1. l'url collectee ci-dessus (args0) ou donnee en filtre (filtre0) |
# 2. l'eventuel parametre de la balise (args1) fournie par |
# calculer_balise_dynamique, en l'occurence le #LOGIN courant si l'on |
# programme une <boucle(AUTEURS)>[(#LOGIN_PUBLIC{#LOGIN})] |
function balise_LOGIN_PUBLIC_stat ($args, $filtres) { |
return array($filtres[0] ? $filtres[0] : $args[0], $args[1], $args[2]); |
} |
function balise_LOGIN_PUBLIC_dyn($url, $login) { |
if (!$url # pas d'url passee en filtr eou dans le contexte |
AND !$url = _request('url') # ni d'url passee par l'utilisateur |
) { |
$link = new Link(); |
$link->delVar('var_erreur'); |
$link->delVar('var_login'); |
$url = $link->getUrl(); |
} |
return login_explicite($login, $url); |
} |
function login_explicite($login, $cible) { |
global $auteur_session; |
$link = new Link(); |
$link->delVar('var_erreur'); |
$link->delVar('var_login'); |
$action = $link->getUrl(); |
if ($cible) { |
$cible = ereg_replace("[?&]var_erreur=[^&]*", '', $cible); |
$cible = ereg_replace("[?&]var_login=[^&]*", '', $cible); |
} else { |
if (ereg("[?&]url=([^&]*)", $action, $m)) |
$cible = urldecode($m[1]); |
else |
$cible = _DIR_RESTREINT ; |
} |
include_ecrire("inc_session.php3"); |
verifier_visiteur(); |
if ($auteur_session AND |
($auteur_session['statut']=='0minirezo' OR $auteur_session['statut']=='1comite')) { |
if (($cible != $action) && !headers_sent() |
AND !$_GET['var_mode']) |
redirige_par_entete($cible); |
return http_href($cible, _T('login_par_ici')); |
} |
return login_pour_tous($login ? $login : _request('var_login'), $cible, $action); |
} |
function login_pour_tous($login, $cible, $action) { |
global $ignore_auth_http, $php_module, $_SERVER, $_COOKIE; |
// en cas d'echec de cookie, inc_auth a renvoye vers spip_cookie qui |
// a tente de poser un cookie ; s'il n'est pas la, c'est echec cookie |
// s'il est la, c'est probablement un bookmark sur bonjour=oui, |
// et pas un echec cookie. |
if (_request('var_echec_cookie')) |
$echec_cookie = ($_COOKIE['spip_session'] != 'test_echec_cookie'); |
$auth_http = ($echec_cookie AND $php_module AND !$ignore_auth_http) ? |
'spip_cookie.php3' : ''; |
// Attention dans le cas 'intranet' la proposition de se loger |
// par auth_http peut conduire a l'echec. |
if ($_SERVER['PHP_AUTH_USER'] AND $_SERVER['PHP_AUTH_PW']) |
$auth_http = ''; |
// Le login est memorise dans le cookie d'admin eventuel |
if (!$login) { |
if (ereg("^@(.*)$", $_COOKIE['spip_admin'], $regs)) |
$login = $regs[1]; |
} else if ($login == '-1') |
$login = ''; |
$erreur = ''; |
if ($login) { |
$s = spip_query("SELECT * FROM spip_auteurs |
WHERE login='" .addslashes($login) ."'"); |
$row = spip_fetch_array($s); |
// Retrouver ceux qui signent de leur nom ou email |
if (!$row AND !$GLOBALS['ldap_present']) { |
if ($t = spip_fetch_array( |
spip_query( |
"SELECT * FROM spip_auteurs |
WHERE (nom LIKE '" .addslashes($login) ."' |
OR email LIKE '" .addslashes($login) ."') |
AND login<>'' AND statut<>'5poubelle'" |
))) { |
$row = $t; |
$login_alt = $login; # afficher ce qu'on a tape |
$login = $t['login']; |
} |
} |
if ((!$row AND !$GLOBALS['ldap_present']) OR |
($row['statut'] == '5poubelle') OR |
(($row['source'] == 'spip') AND $row['pass'] == '')) { |
$erreur = _T('login_identifiant_inconnu', |
array('login' => htmlspecialchars($login))); |
$row = array(); |
$login = ''; |
@spip_setcookie("spip_admin", "", time() - 3600); |
} else { |
// on laisse le menu decider de la langue |
unset($row['lang']); |
} |
} |
if (!$row) |
$row = array(); |
// afficher "erreur de mot de passe" si &var_erreur=pass |
if (_request('var_erreur') == 'pass') |
$erreur = _T('login_erreur_pass'); |
return array('formulaire_login', $GLOBALS['delais'], |
array_merge( |
array_map('texte_script', $row), |
array( |
'action2' => ($login ? 'spip_cookie.php3' : $action), |
'erreur' => $erreur, |
'action' => $action, |
'url' => $cible, |
'auth_http' => $auth_http, |
'echec_cookie' => ($echec_cookie ? ' ' : ''), |
'login' => $login, |
'login_alt' => ($login_alt ? $login_alt : $login), |
'self' => $GLOBALS["clean_link"]->getUrl() |
) |
) |
); |
} |
// Bouton duree de connexion |
function filtre_rester_connecte($prefs) { |
$prefs = unserialize(stripslashes($prefs)); |
return $prefs['cnx'] == 'perma' ? ' ' : ''; |
} |
// made in cherche_image_nommee. A partager. |
function silogoauteur($id_auteur, $formats = array ('gif', 'jpg', 'png')) { |
reset($formats); |
while (list(, $format) = each($formats)) { |
$d = _DIR_IMG . "auton$id_auteur.$format"; |
if (@file_exists($d)) return $d; |
} |
return ''; |
} |
?> |
/tags/v4.0/actu/formulaires/formulaire_ecrire_auteur.html |
---|
New file |
0,0 → 1,38 |
[<br />(#ENV*{sujetko})<:form_prop_indiquer_sujet:><br /> ][ |
<br />(#ENV*{mailko})<:form_prop_indiquer_email:><br /><br /> |
] |
<form action="#SELF" method='post'> |
[(#REM) Previsualisation ... ] |
[<input type="hidden" name="num_formulaire_ecrire_auteur" value="(#ENV{valide})" />] |
[<div class='spip_encadrer'> |
<i>[(#ENV{mail})]</i> - <strong>[(#ENV{sujet})]</strong> |
<div> |
[(#ENV{texte}|nl2br)] |
</div> |
<div style="text-align:#LANG_RIGHT;"> |
<input type="submit" class="spip_bouton" name="confirmer[(#ENV{id})]" |
value="(#ENV{boutonconfirmation})" /> |
</div> |
</div> |
] |
[(#REM) Formulaire normal ] |
<p><label><:form_pet_votre_email:><br /> |
<input type="text" class="forml" name="email_message_auteur[(#ENV{id})]" |
value="[(#ENV{mail})]" size="30" /> |
</label></p> |
<p><label><:form_prop_sujet:><br /> |
<input type="text" class="forml" name="sujet_message_auteur[(#ENV{id})]" |
value="[(#ENV{sujet})]" size="30" /> |
</label></p> |
<p> |
<textarea name="texte_message_auteur[(#ENV{id})]" rows='10' class='forml' cols='40'>[(#ENV{texte})]</textarea> |
</p> |
<div style="text-align:#LANG_RIGHT;"> |
<input type="submit" class="spip_bouton" name="valide" |
value="[(#ENV{bouton})]" /> |
</div> |
</form> |
/tags/v4.0/actu/formulaires/formulaires/inc-formulaire_ecrire_auteur.php3 |
---|
New file |
0,0 → 1,90 |
<?php |
if (!defined("_ECRIRE_INC_VERSION")) return; #securite |
// On prend l'email dans le contexte de maniere a ne pas avoir a le |
// verifier dans la base ni a le devoiler au visiteur |
global $balise_FORMULAIRE_ECRIRE_AUTEUR_collecte; |
$balise_FORMULAIRE_ECRIRE_AUTEUR_collecte = array('id_auteur', 'id_article', 'email'); |
function balise_FORMULAIRE_ECRIRE_AUTEUR_stat($args, $filtres) { |
// Pas d'id_auteur ni d'id_article ? Erreur de squelette |
if (!$args[0] AND !$args[1]) |
return erreur_squelette( |
_T('zbug_champ_hors_motif', |
array ('champ' => '#FORMULAIRE_ECRIRE_AUTEUR', |
'motif' => 'AUTEURS/ARTICLES')), ''); |
// Si on est dans un contexte article, sortir tous les mails des auteurs |
// de l'article |
if (!$args[0] AND $args[1]) { |
unset ($args[2]); |
$s = spip_query("SELECT auteurs.email AS email |
FROM spip_auteurs as auteurs, spip_auteurs_articles as lien |
WHERE lien.id_article=".intval($args[1]) |
. " AND auteurs.id_auteur = lien.id_auteur"); |
while ($row = spip_fetch_array($s)) |
if ($row['email'] AND email_valide($row['email'])) |
$args[2].= ','.$row['email']; |
$args[2] = substr($args[2], 1); |
} |
// On ne peut pas ecrire a un auteur dont le mail n'est pas valide |
if (!$args[2] OR !email_valide($args[2])) |
return ''; |
// OK |
return $args; |
} |
function balise_FORMULAIRE_ECRIRE_AUTEUR_dyn($id_auteur, $id_article, $mail) { |
include_ecrire('inc_texte.php3'); |
$puce = $GLOBALS['puce'.$GLOBALS['spip_lang_rtl']]; |
// id du formulaire (pour en avoir plusieurs sur une meme page) |
$id = ($id_auteur ? '_'.$id_auteur : '_ar'.$id_article); |
#spip_log("id formulaire = $id, "._request("valide".$id)); |
$sujet = _request('sujet_message_auteur'.$id); |
$texte = _request('texte_message_auteur'.$id); |
$adres = _request('email_message_auteur'.$id); |
$mailko = $texte && !email_valide($adres); |
$validable = $texte && $sujet && (!$mailko); |
// doit-on envoyer le mail ? |
if ($validable |
AND $id == _request('id_formulaire_ecrire_auteur')) { |
$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 _T('form_prop_message_envoye'); |
} |
$link = new Link; |
$link->delVar('sujet_message_auteur'.$id); |
$link->delVar('texte_message_auteur'.$id); |
$link->delVar('email_message_auteur'.$id); |
$link->delVar('id_formulaire_ecrire_auteur'); |
return |
array('formulaire_ecrire_auteur', 0, |
array( |
'action' => $link->getUrl(), |
'id' => $id, |
'mailko' => $mailko ? $puce : '', |
'mail' => $adres, |
'sujetko' => ($texte && !$sujet) ? $puce : '', |
'sujet' => $sujet, |
'texte' => $texte, |
'valide' => ($validable ? $id : ''), |
'bouton' => ($validable ? |
_T('form_prop_confirmer_envoi') : |
_T('form_prop_envoyer')) |
) |
); |
} |
?> |
/tags/v4.0/actu/formulaires/formulaires/inc-formulaire_signature.php3 |
---|
New file |
0,0 → 1,291 |
<?php |
if (!defined("_ECRIRE_INC_VERSION")) return; #securite |
// |
// Formulaire de signature d'une petition |
// |
// Contexte necessaire lors de la compilation |
// Il *faut* demander petition, meme si on ne s'en sert pas dans l'affichage, |
// car on doit obtenir la jointure avec sql_petitions pour verifier si |
// une petition est attachee a l'article |
global $balise_FORMULAIRE_SIGNATURE_collecte; |
$balise_FORMULAIRE_SIGNATURE_collecte = array('id_article', 'petition'); |
// Verification des arguments (contexte + filtres) |
function balise_FORMULAIRE_SIGNATURE_stat($args, $filtres) { |
// pas d'id_article => erreur de squelette |
if (!$args[0]) |
return erreur_squelette( |
_T('zbug_champ_hors_motif', |
array ('champ' => '#FORMULAIRE_SIGNATURE', |
'motif' => 'ARTICLES')), ''); |
// article sans petition => pas de balise |
else if (!$args[1]) |
return ''; |
else { |
// aller chercher dans la base la petition associee |
$s = spip_query("SELECT texte, site_obli, message |
FROM spip_petitions WHERE id_article = ".intval($args[0])); |
if ($r = spip_fetch_array($s)) { |
$args[2] = $r['texte']; |
// le signataire doit-il donner un site ? |
$args[3] = ($r['site_obli'] == 'oui') ? '':' '; |
// le signataire peut-il proposer un commentaire |
$args[4] = ($r['message'] == 'oui') ? ' ':''; |
} |
return $args; |
} |
} |
// Executer la balise |
function balise_FORMULAIRE_SIGNATURE_dyn($id_article, $petition, $texte, $site_obli, $message) { |
if (_request('var_confirm')) # _GET |
return reponse_confirmation($id_article); |
else if (_request('nom_email') AND _request('adresse_email')) # _POST |
return reponse_signature($id_article, |
_request('nom_email'), _request('adresse_email'), |
_request('message'), _request('signature_nom_site'), |
_request('signature_url_site'), _request('url_page') |
); |
else { |
return array('formulaire_signature', $GLOBALS['delais'], |
array( |
'id_article' => $id_article, |
'petition' => $petition, |
'texte' => $texte, |
'site_obli' => $site_obli, |
'message' => $message |
)); |
} |
} |
// Retour a l'ecran du lien de confirmation d'une signature de petition. |
// Si var_confirm est non vide, c'est l'appel en debut de inc-public |
// pour vider le cache au demarrage afin que la nouvelle signature apparaisse. |
// Sinon, c'est l'execution du formulaire et on retourne le message |
// de confirmation ou d'erreur construit lors de l'appel par inc-public. |
function reponse_confirmation($id_article, $var_confirm = '') { |
static $confirm = ''; |
if (!$var_confirm) return $confirm; |
include_local(_FILE_CONNECT); |
if ($GLOBALS['db_ok']) { |
include_ecrire("inc_texte.php3"); |
include_ecrire("inc_filtres.php3"); |
// Eviter les doublons |
$lock = "petition $id_article $var_confirm"; |
if (!spip_get_lock($lock, 5)) { |
$confirm= _T('form_pet_probleme_technique'); |
} |
else { |
$query_sign = "SELECT * FROM spip_signatures WHERE statut='".addslashes($var_confirm)."'"; |
$result_sign = spip_query($query_sign); |
if (spip_num_rows($result_sign) > 0) { |
while($row = spip_fetch_array($result_sign)) { |
$id_signature = $row['id_signature']; |
$id_article = $row['id_article']; |
$date_time = $row['date_time']; |
$nom_email = $row['nom_email']; |
$adresse_email = $row['ad_email']; |
$nom_site = $row['nom_site']; |
$url_site = $row['url_site']; |
$message = $row['message']; |
$statut = $row['statut']; |
} |
$query_petition = "SELECT * FROM spip_petitions WHERE id_article=$id_article"; |
$result_petition = spip_query($query_petition); |
while ($row = spip_fetch_array($result_petition)) { |
$id_article = $row['id_article']; |
$email_unique = $row['email_unique']; |
$site_obli = $row['site_obli']; |
$site_unique = $row['site_unique']; |
$message_petition = $row['message']; |
$texte_petition = $row['texte']; |
} |
if ($email_unique == "oui") { |
$email = addslashes($adresse_email); |
$query = "SELECT * FROM spip_signatures WHERE id_article=$id_article AND ad_email='$email' AND statut='publie'"; |
$result = spip_query($query); |
if (spip_num_rows($result) > 0) { |
$confirm= (_T('form_pet_deja_signe')); |
$refus = "oui"; |
} |
} |
if ($site_unique == "oui") { |
$site = addslashes($url_site); |
$query = "SELECT * FROM spip_signatures WHERE id_article=$id_article AND url_site='$site' AND statut='publie'"; |
$result = spip_query($query); |
if (spip_num_rows($result) > 0) { |
$confirm= (_T('form_pet_deja_enregistre')); |
$refus = "oui"; |
} |
} |
if ($refus == "oui") { |
$confirm= (_T('form_deja_inscrit')); |
} |
else { |
$query = "UPDATE spip_signatures |
SET statut='publie', date_time=NOW() |
WHERE id_signature='$id_signature'"; |
$result = spip_query($query); |
// invalider les pages ayant des boucles signatures |
include_ecrire('inc_invalideur.php3'); |
include_ecrire('inc_meta.php3'); |
suivre_invalideur("id='varia/pet$id_article'"); |
$confirm= (_T('form_pet_signature_validee')); |
} |
} |
else { |
$confirm= (_T('form_pet_aucune_signature')); |
} |
spip_release_lock($lock); |
} |
} |
else { |
$confirm= _T('form_pet_probleme_technique'); |
} |
} |
// |
// Retour a l'ecran de la signature d'une petition |
// |
function reponse_signature($id_article, $nom_email, $adresse_email, $message, $nom_site, $url_site, $url_page) { |
if ($GLOBALS['db_ok']) { |
include_ecrire("inc_texte.php3"); |
include_ecrire("inc_filtres.php3"); |
include_ecrire("inc_mail.php3"); |
// Eviter les doublons |
$lock = "petition $id_article $adresse_email"; |
if (!spip_get_lock($lock, 5)) { |
return _T('form_pet_probleme_technique'); |
} else { |
$query_petition = "SELECT * FROM spip_petitions WHERE id_article=$id_article"; |
$result_petition = spip_query($query_petition); |
while ($row = spip_fetch_array($result_petition)) { |
$id_article = $row['id_article']; |
$email_unique = $row['email_unique']; |
$site_obli = $row['site_obli']; |
$site_unique = $row['site_unique']; |
$message_petition = $row['message']; |
$texte_petition = $row['texte']; |
} |
if (strlen($nom_email) < 2) { |
return _T('form_indiquer_nom'); |
} |
if ($adresse_email == _T('info_mail_fournisseur')) { |
return _T('form_indiquer_email'); |
} |
if ($email_unique == "oui") { |
$email = addslashes($adresse_email); |
$query = "SELECT * FROM spip_signatures WHERE id_article=$id_article AND ad_email='$email' AND statut='publie'"; |
$result = spip_query($query); |
if (spip_num_rows($result) > 0) { |
return _T('form_pet_deja_signe'); |
} |
} |
if (!email_valide($adresse_email)) { |
return _T('form_email_non_valide'); |
} |
if ($site_obli == "oui") { |
if (!$nom_site) { |
return _T('form_indiquer_nom_site'); |
} |
include_ecrire("inc_sites.php3"); |
if (!recuperer_page($url_site)) { |
return _T('form_pet_url_invalide'); |
} |
} |
if ($site_unique == "oui") { |
$site = addslashes($url_site); |
$query = "SELECT * FROM spip_signatures WHERE id_article=$id_article AND url_site='$site' AND (statut='publie' OR statut='poubelle')"; |
$result = spip_query($query); |
if (spip_num_rows($result) > 0) { |
return _T('form_pet_site_deja_enregistre'); |
} |
} |
$passw = test_pass(); |
if ($refus == "oui") { |
return _T('form_pet_signature_pasprise'); |
} |
else { |
$query_site = "SELECT titre FROM spip_articles WHERE id_article=$id_article"; |
$result_site = spip_query($query_site); |
while ($row = spip_fetch_array($result_site)) { |
$titre = $row['titre']; |
} |
$link = new Link($url_page); |
$link->addVar('var_confirm', $passw); |
$url = $link->getUrl("sp$id_article"); |
$messagex = _T('form_pet_mail_confirmation', array('titre' => $titre, 'nom_email' => $nom_email, 'nom_site' => $nom_site, 'url_site' => $url_site, 'url' => $url)); |
if (envoyer_mail($adresse_email, _T('form_pet_confirmation')." ".$titre, $messagex)) { |
$nom_email = addslashes($nom_email); |
$adresse_email = addslashes($adresse_email); |
$nom_site = addslashes($nom_site); |
$url_site = addslashes($url_site); |
$message = addslashes($message); |
spip_query("INSERT INTO spip_signatures (id_article, date_time, nom_email, ad_email, nom_site, url_site, message, statut) VALUES ($id_article, NOW(), '$nom_email', '$adresse_email', '$nom_site', '$url_site', '$message', '$passw')"); |
return _T('form_pet_envoi_mail_confirmation'); |
} |
else { |
return _T('form_pet_probleme_technique'); |
} |
} |
spip_release_lock($lock); |
} |
} |
else { |
return _T('form_pet_probleme_technique'); |
} |
} |
function test_pass() { |
include_ecrire("inc_acces.php3"); |
for (;;) { |
$passw = creer_pass_aleatoire(); |
$query = "SELECT statut FROM spip_signatures WHERE statut='$passw'"; |
$result = spip_query($query); |
if (!spip_num_rows($result)) break; |
} |
return $passw; |
} |
?> |
/tags/v4.0/actu/formulaires/formulaires/inc-formulaire_inscription.php3 |
---|
New file |
0,0 → 1,166 |
<?php |
if (!defined("_ECRIRE_INC_VERSION")) return; #securite |
include_ecrire('inc_abstract_sql.php3'); |
// Balise independante du contexte |
global $balise_FORMULAIRE_INSCRIPTION_collecte ; |
$balise_FORMULAIRE_INSCRIPTION_collecte = array(); |
// args[0] est le parametre 'focus' -- [(#FORMULAIRE_INSCRIPTION{focus})] |
function balise_FORMULAIRE_INSCRIPTION_stat($args, $filtres) { |
if (lire_meta('accepter_inscriptions') != 'oui') |
return ''; |
else |
return array('redac', ($args[0] == 'focus' ? 'nom_inscription' : '')); |
} |
function balise_FORMULAIRE_INSCRIPTION_dyn($mode, $focus) { |
// Si une inscription est autorisee, on enregistre le demandeur |
// comme 'nouveau' et on lui envoie ses codes par email ; lors de |
// sa premiere connexion il obtiendra son statut final (auth->activer()) |
if (($mode == 'redac' AND lire_meta('accepter_inscriptions') == 'oui') |
OR ($mode == 'forum' AND ( |
lire_meta('accepter_visiteurs') == 'oui' |
OR lire_meta('forums_publics') == 'abo' |
) |
)) |
$statut = 'nouveau'; |
else |
return _T('pass_rien_a_faire_ici'); |
// recuperer les donnees envoyees |
$mail_inscription = _request('mail_inscription'); |
$nom_inscription = _request('nom_inscription'); |
if (test_mail_ins($mode, $mail_inscription) |
AND _request('nom_inscription')) { |
// envoyer les identifiants si l'abonne n'existe pas deja. |
$s = spip_query("SELECT statut, id_auteur, login, pass |
FROM spip_auteurs WHERE email='".addslashes($mail_inscription)."'"); |
if (!$row = spip_fetch_array($s)) { |
$login = test_login($nom_inscription, $mail_inscription); |
$id_auteur = spip_abstract_insert('spip_auteurs', |
'(nom, email, login, statut)', |
"('".addslashes($nom_inscription)."', |
'".addslashes($mail_inscription)."', '$login', '$statut')"); |
$pass = creer_pass_pour_auteur($id_auteur); |
$message = envoyer_inscription($mail_inscription, |
$statut, $mode, $login, $pass, $nom_inscription); |
} |
else { |
// existant mais encore muet, renvoyer les infos |
if ($row['statut'] == 'nouveau') { |
// recreer le pass |
$pass = creer_pass_pour_auteur($row['id_auteur']); |
$message = envoyer_inscription( |
$mail_inscription, $row['statut'], $mode, |
$row['login'], $pass, $nom_inscription); |
} else { |
// dead |
if ($row['statut'] == '5poubelle') |
$message = _T('form_forum_access_refuse'); |
// deja inscrit |
else |
$message = _T('form_forum_email_deja_enregistre'); |
} |
} |
} |
// demande du formulaire |
else { |
if (!$nom_inscription) |
$message = ''; |
else { |
spip_log("Mail incorrect: '$mail_inscription'"); |
$message = _T('info_email_invalide'); |
} |
} |
return array("formulaire_inscription", 0, |
array('focus' => $focus, |
'target' => _request('target'), |
'message' => $message, |
'mode' => $mode)); |
} |
// fonction qu'on peut redefinir pour filtrer selon l'adresse mail |
// cas general: controler juste que l'adresse n'est pas vide et est valide |
function test_mail_ins($mode, $mail) { |
if ($mail = trim($mail)) |
return email_valide($mail); |
} |
// envoyer identifiants par mail |
function envoyer_inscription($mail, $statut, $type, $login, $pass, $nom) { |
$nom_site_spip = lire_meta("nom_site"); |
$adresse_site = lire_meta("adresse_site"); |
$message = _T('form_forum_message_auto')."\n\n" |
._T('form_forum_bonjour', array('nom'=>$nom))."\n\n"; |
if ($type == 'forum') { |
$message .= _T('form_forum_voici1', array('nom_site_spip' => $nom_site_spip, 'adresse_site' => $adresse_site)) . "\n\n"; |
} else { |
$message .= _T('form_forum_voici2', array('nom_site_spip' => $nom_site_spip, 'adresse_site' => $adresse_site)) . "\n\n"; |
} |
$message .= "- "._T('form_forum_login')." $login\n"; |
$message .= "- "._T('form_forum_pass')." $pass\n\n"; |
include_ecrire("inc_mail.php3"); |
if (envoyer_mail($mail, |
"[$nom_site_spip] "._T('form_forum_identifiants'), $message)) |
return _T('form_forum_identifiant_mail'); |
else |
return _T('form_forum_probleme_mail'); |
} |
function test_login($nom, $mail) { |
include_ecrire('inc_charsets.php3'); |
$nom = strtolower(translitteration($nom)); |
$login_base = ereg_replace("[^a-zA-Z0-9_]", "_", $nom); |
// il faut eviter que le login soit vraiment trop court |
if (strlen($login_base) < 3) { |
$mail = strtolower(translitteration(preg_replace('/@.*/', '', $mail))); |
$login_base = ereg_replace("[^a-zA-Z0-9]", "_", $nom); |
} |
if (strlen($login_base) < 3) |
$login_base = 'user'; |
// eviter aussi qu'il soit trop long (essayer d'attraper le prenom) |
if (strlen($login_base) > 10) { |
$login_base = preg_replace("/^(.{4,}(_.{1,7})?)_.*/", |
'\1', $login_base); |
$login_base = substr($login_base, 0,13); |
} |
$login = $login_base; |
for ($i = 1; ; $i++) { |
$s = spip_query("SELECT id_auteur FROM spip_auteurs |
WHERE login='$login'"); |
if (!spip_num_rows($s)) |
return $login; |
$login = $login_base.$i; |
} |
} |
function creer_pass_pour_auteur($id_auteur) { |
include_ecrire("inc_acces.php3"); |
$pass = creer_pass_aleatoire(8, $id_auteur); |
$mdpass = md5($pass); |
$htpass = generer_htpass($pass); |
spip_query("UPDATE spip_auteurs |
SET pass='$mdpass', htpass='$htpass' |
WHERE id_auteur = ".$id_auteur); |
ecrire_acces(); |
return $pass; |
} |
?> |
/tags/v4.0/actu/formulaires/formulaires/formulaire_login_forum.html |
---|
New file |
0,0 → 1,24 |
<!-- |
Formulaire de connexion pour les forums sur abonnement |
cf. inc-formulaire_forum.php3 |
--> |
<p><:forum_vous_enregistrer:> <:forum_vous_inscrire:></p> |
#LOGIN_PUBLIC |
<div align='center' style='font-family: Verdana,arial,helvetica,sans-serif; font-size: 12px;'> |
[<a href='spip_inscription.php3?mode=forum&focus=nom_inscription' |
target="spip_pass" |
onclick="javascript:window.open(this.href, 'spip_pass', 'scrollbars=yes, resizable=yes, width=480, height=500'); return false;"><:login_sinscrire:></a>] |
[<a |
href="spip_pass.php3" |
target="spip_pass" |
onclick="javascript:window.open(this.href, 'spip_pass', 'scrollbars=yes, resizable=yes, width=480, height=280'); return false;"><:login_motpasseoublie:></a>] |
</div> |
<br /> |
/tags/v4.0/actu/formulaires/formulaires/inc-formulaire_site.php3 |
---|
New file |
0,0 → 1,48 |
<?php |
if (!defined("_ECRIRE_INC_VERSION")) return; #securite |
// Le contexte indique dans quelle rubrique le visiteur peut proposer le site |
global $balise_FORMULAIRE_SITE_collecte; |
$balise_FORMULAIRE_SITE_collecte = array('id_rubrique'); |
function balise_FORMULAIRE_SITE_stat($args, $filtres) { |
// Pas d'id_rubrique ? Erreur de squelette |
if (!$args[0]) |
return erreur_squelette( |
_T('zbug_champ_hors_motif', |
array ('champ' => '#FORMULAIRE_SITE', |
'motif' => 'RUBRIQUES')), ''); |
// Verifier que les visisteurs sont autorises a proposer un site |
return ((lire_meta("proposer_sites") != 2) ? '' : $args); |
} |
function balise_FORMULAIRE_SITE_dyn($id_rubrique) { |
if (!_request('nom_site')) return array('formulaire_site', 0); |
// Tester le nom du site |
if (strlen (_request('nom_site')) < 2){ |
return _T('form_prop_indiquer_nom_site'); |
} |
// Tester l'URL du site |
include_ecrire("inc_sites.php3"); |
if (!recuperer_page(_request('url_site'))) |
return _T('form_pet_url_invalide'); |
// Integrer a la base de donnees |
$nom_site = addslashes(_request('nom_site')); |
$url_site = addslashes(_request('url_site')); |
$description_site = addslashes(_request('description_site')); |
spip_query("INSERT INTO spip_syndic |
(nom_site, url_site, id_rubrique, descriptif, date, date_syndic, statut, syndication) |
VALUES ('$nom_site', '$url_site', $id_rubrique, '$description_site', NOW(), NOW(), 'prop', 'non')"); |
return _T('form_prop_enregistre'); |
} |
?> |
/tags/v4.0/actu/formulaires/formulaires/inc-url_logout.php3 |
---|
New file |
0,0 → 1,26 |
<?php |
if (!defined("_ECRIRE_INC_VERSION")) return; #securite |
global $balise_URL_LOGOUT_collecte; |
$balise_URL_LOGOUT_collecte = array(); |
// filtres[0] = url destination apres logout [(#URL_LOGOUT|url)] |
function balise_URL_LOGOUT_stat ($args, $filtres) { |
return array($filtres[0]); |
} |
function balise_URL_LOGOUT_dyn($cible) { |
if (!$login = $GLOBALS['auteur_session']['login']) |
return ''; |
if (!$cible) { |
$link = new Link(); |
$cible = $link->getUrl(); |
} |
return 'spip_cookie.php3?logout_public=' . $login |
. '&url=' . urlencode($cible); |
} |
?> |
/tags/v4.0/actu/formulaires/formulaires/inc-menu_lang_ecrire.php3 |
---|
New file |
0,0 → 1,63 |
<?php |
if (!defined("_ECRIRE_INC_VERSION")) return; #securite |
// Ce "menu_lang" collecte dans le contexte permet de forcer la langue |
// par defaut proposee dans le menu ; mais a quoi ca sert concretement ? |
global $balise_MENU_LANG_ECRIRE_collecte; |
$balise_MENU_LANG_ECRIRE_collecte = array('menu_lang'); |
// s'il n'y a qu'une langue proposee eviter definitivement la balise ?php |
function balise_MENU_LANG_ECRIRE_stat ($args, $filtres) { |
global $all_langs; |
include_ecrire('inc_lang.php3'); |
if (!strpos($all_langs,',')) return ''; |
return $args; |
} |
// normalement $opt sera toujours non vide suite au test ci-dessus |
function balise_MENU_LANG_ECRIRE_dyn($default) { |
return menu_lang_pour_tous('var_lang_ecrire', $opt); |
} |
function menu_lang_pour_tous($nom, $opt) { |
include_ecrire("inc_lang.php3"); |
// Voir s'il y a une langue demandee par _request, |
// ou une langue par defaut dans le contexte {menu_lang=xx} |
$default = _request('lang'); |
lang_select($default); |
if ($GLOBALS['spip_lang'] <> $default) { |
$default = $menu_lang; |
lang_select($default); # et remplace |
if ($GLOBALS['spip_lang'] <> $default) |
unset ($default); # annule tout choix par defaut |
lang_dselect(); #annule la selection |
} |
lang_dselect(); |
$opt = liste_options_langues($nom, $default); |
if (!$opt) |
return ''; |
$site = lire_meta("adresse_site"); |
$post = ($site ? $site : '..') . "/spip_cookie.php3"; |
$cible = new Link(); |
$cible->delVar('lang'); |
$cible = $cible->getUrl(); |
$postcomplet = new Link($post); |
$postcomplet->addvar('url', $cible); |
return array('formulaire_menu_lang', |
3600, |
array('nom' => $nom, |
'url' => $post, |
'cible' => $cible, |
'retour' => $postcomplet->getUrl(), |
'langues' => $opt |
) |
); |
} |
?> |
/tags/v4.0/actu/formulaires/formulaires/formulaire_admin.html |
---|
New file |
0,0 → 1,16 |
[<(#ENV{floatdiv}) class="spip-admin-float">] |
<div class="spip-admin-bloc" dir='#LANG_DIR'> |
<ul>[ |
<li><a href='ecrire/articles.php3?id_article=(#ENV{id_article})' class='spip-admin-boutons'><:admin_modifier_article:> ([(#ENV{id_article})])</a></li>][ |
<li><a href='ecrire/breves_voir.php3?id_breve=(#ENV{id_breve})' class='spip-admin-boutons'><:admin_modifier_breve:> ([(#ENV{id_breve})])</a></li>][ |
<li><a href='ecrire/naviguer.php3?id_rubrique=(#ENV{id_rubrique})' class='spip-admin-boutons'><:admin_modifier_rubrique:> ([(#ENV{id_rubrique})])</a></li>][ |
<li><a href='ecrire/mots_edit.php3?id_mot=(#ENV{id_mot})' class='spip-admin-boutons'><:admin_modifier_mot:> ([(#ENV{id_mot})])</a></li>][ |
<li><a href='ecrire/auteurs_edit.php3?id_auteur=(#ENV{id_auteur})' class='spip-admin-boutons'><:admin_modifier_auteur:> ([(#ENV{id_auteur})])</a></li>][ |
<li><a href='(#ENV{ecrire})/' class='spip-admin-boutons'><:espace_prive:></a></li>] |
<li><a href='[(#ENV{action})]var_mode=recalcul' class='spip-admin-boutons'><:admin_recalculer:>[(#ENV{use_cache})]</a></li>[ |
<li><a href='ecrire/(#ENV{statistiques})[id_article=(#ENV{id_article})]' class='spip-admin-boutons'>[<:info_visites:> (#ENV{visites})][; <:info_popularite_5:> (#ENV{popularite})]</a></li>][ |
<li><a href='[(#ENV{action})]var_mode=(#ENV{preview})' class='spip-admin-boutons'><:previsualisation:></a></li>][ |
<li><a href='[(#ENV{action})]var_mode=(#ENV{debug})' class='spip-admin-boutons'><:admin_debug:></a></li>] |
</ul> |
</div> |
[</(#ENV{floatdiv})>] |
/tags/v4.0/actu/formulaires/formulaires/formulaire_forum.html |
---|
New file |
0,0 → 1,51 |
<form action="[(#ENV{url})]" method="post" name="formulaire">[ |
(#ENV*{parametres_forum}) |
][<p>(#ENV*{modere})</p> |
][(#ENV*{afficher_texte_hidden}) |
][(#ENV*{afficher_texte_input}) |
[(#ENV*{previsu}) |
<fieldset class="spip_encadrer"> |
<legend><b><:forum_titre:></b></legend> |
<label><input type="text" name="titre" |
[value="(#ENV{titre})" ]class="forml" size="40" /> |
</label> |
</fieldset> |
<br /> |
<fieldset class="spip_encadrer"> |
<legend><b><:forum_texte:></b></legend> |
<p><:info_creation_paragraphe:></p> |
[(#ENV{texte}|barre_forum)] |
</fieldset> |
<br /> |
[<p>(#ENV*{table})</p>] |
<fieldset class="spip_encadrer"> |
<legend><:forum_lien_hyper:></legend> |
<p><:forum_page_url:></p> |
<p><label><:forum_titre:> |
<input type="text" name="nom_site_forum" class="forml" size="40" |
value="[(#ENV{nom_site_forum})]" /> |
</label></p> |
<p><label><:forum_url:> |
<input type="text" name="url_site" class="forml" size="40" |
value="[(#ENV{url_site})]" /> |
</label></p> |
</fieldset> |
<br /> |
<fieldset class="spip_encadrer"> |
<legend><:forum_qui_etes_vous:></legend> |
<p><label><:forum_votre_nom:> |
<input type="text" name="auteur" value="[(#ENV{auteur})]" |
class="forml" size="40" [(#ENV{disabled})] /> |
</label></p> |
<p><label><:forum_votre_email:> |
<input type="text" name="email_auteur" |
value="[(#ENV{email_auteur})]" |
class="forml" size="40" [(#ENV{disabled})] /> |
</label></p> |
</fieldset> |
<br /> |
<div align="#LANG_RIGHT"> |
<input type="submit" value="<:forum_voir_avant:>" |
class="spip_bouton" /></div> |
] |
]</form> |
/tags/v4.0/actu/formulaires/formulaires/formulaire_recherche.html |
---|
New file |
0,0 → 1,9 |
<form action="[(#ENV{lien})]" method="get" class="formrecherche"> |
<div> |
<input type="text" |
id="formulaire_recherche" |
class="formrecherche" |
name="recherche" |
value="[(#ENV*{recherche_securisee})]" /> |
</div> |
</form> |
/tags/v4.0/actu/formulaires/formulaires/inc-menu_lang.php3 |
---|
New file |
0,0 → 1,23 |
<?php |
if (!defined("_ECRIRE_INC_VERSION")) return; #securite |
// Ce "menu_lang" collecte dans le contexte permet de forcer la langue |
// par defaut proposee dans le menu, en faisant une inclusion |
// <INCLURE(toto){menu_lang=xxx}> ; mais a quoi ca sert concretement ? |
global $balise_MENU_LANG_collecte; |
$balise_MENU_LANG_collecte = array('menu_lang'); |
// s'il n'y a qu'une langue eviter definitivement la balise ?php |
function balise_MENU_LANG_stat ($args, $filtres) { |
if (!strpos(lire_meta('langues_multilingue'),',')) return ''; |
return $args; |
} |
// normalement $opt sera toujours non vide suite au test ci-dessus |
function balise_MENU_LANG_dyn($menu_lang) { |
include_local(find_in_path("inc-menu_lang_ecrire.php3")); |
return menu_lang_pour_tous('var_lang', $opt); |
} |
?> |
/tags/v4.0/actu/formulaires/formulaires/inc-login_public.php3 |
---|
New file |
0,0 → 1,174 |
<?php |
if (!defined("_ECRIRE_INC_VERSION")) return; #securite |
include(_FILE_CONNECT); |
include_ecrire("inc_meta.php3"); |
include_ecrire("inc_session.php3"); |
include_ecrire("inc_filtres.php3"); |
global $balise_LOGIN_PUBLIC_collecte; |
$balise_LOGIN_PUBLIC_collecte = array('url'); |
# retourner: |
# 1. l'url collectee ci-dessus (args0) ou donnee en filtre (filtre0) |
# 2. l'eventuel parametre de la balise (args1) fournie par |
# calculer_balise_dynamique, en l'occurence le #LOGIN courant si l'on |
# programme une <boucle(AUTEURS)>[(#LOGIN_PUBLIC{#LOGIN})] |
function balise_LOGIN_PUBLIC_stat ($args, $filtres) { |
return array($filtres[0] ? $filtres[0] : $args[0], $args[1], $args[2]); |
} |
function balise_LOGIN_PUBLIC_dyn($url, $login) { |
if (!$url # pas d'url passee en filtr eou dans le contexte |
AND !$url = _request('url') # ni d'url passee par l'utilisateur |
) { |
$link = new Link(); |
$link->delVar('var_erreur'); |
$link->delVar('var_login'); |
$url = $link->getUrl(); |
} |
return login_explicite($login, $url, 'forum'); |
} |
function login_explicite($login, $cible, $mode) { |
global $auteur_session; |
$link = new Link(); |
$link->delVar('var_erreur'); |
$link->delVar('var_login'); |
$action = $link->getUrl(); |
if ($cible) { |
$cible = ereg_replace("[?&]var_erreur=[^&]*", '', $cible); |
$cible = ereg_replace("[?&]var_login=[^&]*", '', $cible); |
} else { |
if (ereg("[?&]url=([^&]*)", $action, $m)) |
$cible = urldecode($m[1]); |
else |
$cible = _DIR_RESTREINT ; |
} |
include_ecrire("inc_session.php3"); |
verifier_visiteur(); |
if ($auteur_session AND |
($auteur_session['statut']=='0minirezo' OR $auteur_session['statut']=='1comite')) { |
if (($cible != $action) && !headers_sent()) |
redirige_par_entete($cible); |
return http_href($cible, _T('login_par_ici')); |
} |
return login_pour_tous($login ? $login : _request('var_login'), $cible, $action, $mode); |
} |
function login_pour_tous($login, $cible, $action, $mode) { |
global $ignore_auth_http, $php_module, $_SERVER, $_COOKIE; |
// en cas d'echec de cookie, inc_auth a renvoye vers spip_cookie qui |
// a tente de poser un cookie ; s'il n'est pas la, c'est echec cookie |
// s'il est la, c'est probablement un bookmark sur bonjour=oui, |
// et pas un echec cookie. |
if (_request('var_echec_cookie')) |
$echec_cookie = ($_COOKIE['spip_session'] != 'test_echec_cookie'); |
$auth_http = ($echec_cookie AND $php_module AND !$ignore_auth_http) ? |
'spip_cookie.php3' : ''; |
// Attention dans le cas 'intranet' la proposition de se loger |
// par auth_http peut conduire a l'echec. |
if ($_SERVER['PHP_AUTH_USER'] AND $_SERVER['PHP_AUTH_PW']) |
$auth_http = ''; |
// Le login est memorise dans le cookie d'admin eventuel |
if (!$login) { |
if (ereg("^@(.*)$", $_COOKIE['spip_admin'], $regs)) |
$login = $regs[1]; |
} else if ($login == '-1') |
$login = ''; |
$erreur = ''; |
if ($login) { |
$s = spip_query("SELECT * FROM spip_auteurs |
WHERE login='" .addslashes($login) ."'"); |
$row = spip_fetch_array($s); |
// Retrouver ceux qui signent de leur nom ou email |
if (!$row AND !$GLOBALS['ldap_present']) { |
if ($t = spip_fetch_array( |
spip_query( |
"SELECT * FROM spip_auteurs |
WHERE (nom LIKE '" .addslashes($login) ."' |
OR email LIKE '" .addslashes($login) ."') |
AND login<>'' AND statut<>'5poubelle'" |
))) { |
$row = $t; |
$login_alt = $login; # afficher ce qu'on a tape |
$login = $t['login']; |
} |
} |
if ((!$row AND !$GLOBALS['ldap_present']) OR |
($row['statut'] == '5poubelle') OR |
(($row['source'] == 'spip') AND $row['pass'] == '')) { |
$erreur = _T('login_identifiant_inconnu', |
array('login' => htmlspecialchars($login))); |
$row = array(); |
$login = ''; |
@spip_setcookie("spip_admin", "", time() - 3600); |
} else { |
// on laisse le menu decider de la langue |
unset($row['lang']); |
} |
} |
if (!$row) |
$row = array(); |
// afficher "erreur de mot de passe" si &var_erreur=pass |
if (_request('var_erreur') == 'pass') |
$erreur = _T('login_erreur_pass'); |
// url des inscriptions |
$inscription = ((lire_meta("accepter_inscriptions") == "oui") |
OR (($mode == 'forum') |
AND (lire_meta("accepter_visiteurs") == "oui" |
OR lire_meta('forums_publics') == 'abo')) |
) ? 'spip_inscription.php3' : ''; |
return array('formulaire_login', 0, |
array_merge( |
array_map('texte_script', $row), |
array( |
'action2' => ($login ? 'spip_cookie.php3' : $action), |
'erreur' => $erreur, |
'action' => $action, |
'url' => $cible, |
'auth_http' => $auth_http, |
'echec_cookie' => ($echec_cookie ? ' ' : ''), |
'inscription' => $inscription, |
'login' => $login, |
'login_alt' => ($login_alt ? $login_alt : $login) |
) |
) |
); |
} |
// Bouton duree de connexion |
function filtre_rester_connecte($prefs) { |
$prefs = unserialize(stripslashes($prefs)); |
return $prefs['cnx'] == 'perma' ? ' ' : ''; |
} |
// made in cherche_image_nommee. A partager. |
function silogoauteur($id_auteur, $formats = array ('gif', 'jpg', 'png')) { |
reset($formats); |
while (list(, $format) = each($formats)) { |
$d = _DIR_IMG . "auton$id_auteur.$format"; |
if (@file_exists($d)) return $d; |
} |
return ''; |
} |
?> |
/tags/v4.0/actu/formulaires/formulaires/formulaire_ecrire_auteur.html |
---|
New file |
0,0 → 1,20 |
[<br />(#ENV*{sujetko})<:form_prop_indiquer_sujet:><br /> ][ |
<br />(#ENV*{mailko})<:form_prop_indiquer_email:><br /><br /> |
]<form action="[(#ENV{action})]" method='post'>[ |
<input type="hidden" name="id_formulaire_ecrire_auteur" value="(#ENV{valide})" />] |
<p><label><:form_pet_votre_email:> |
<input type="text" class="forml" name="email_message_auteur[(#ENV{id})]" |
value="[(#ENV{mail})]" size="30" /> |
</label></p> |
<p><label><:form_prop_sujet:><br /> |
<input type="text" class="forml" name="sujet_message_auteur[(#ENV{id})]" |
value="[(#ENV{sujet})]" size="30" /> |
</label></p> |
<p> |
<textarea name="texte_message_auteur[(#ENV{id})]" rows='10' class='forml' cols='40'>[(#ENV{texte})]</textarea> |
</p> |
<div align="right"> |
<input type="submit" class="spip_bouton" name="valide" |
value="[(#ENV{bouton})]" /> |
</div> |
</form> |
/tags/v4.0/actu/formulaires/formulaires/formulaire_inscription.html |
---|
New file |
0,0 → 1,42 |
[ |
(#ENV*{message}) |
][ |
(#ENV*{message}|?{'',' '})[ |
(#ENV{mode}|=={forum}|?{' ',''}) |
<:pass_forum_bla:><br /><br /> |
][ |
(#ENV{mode}|=={redac}|?{' ',''}) |
<:pass_espace_prive_bla:><br /><br /> |
]<:form_forum_indiquer_nom_email:> |
<form id="inscription" method='post' action='#SELF' |
style='border: 0px; margin: 0px;'> |
<fieldset style="border: none; font-weight: bold"><legend></legend> |
<label> |
<:form_pet_votre_nom:> |
<input type="text" class="forml" name="nom_inscription" value="" size="30" /> |
</label> |
<label> |
<:form_pet_votre_email:> |
<input type="text" class="forml" name="mail_inscription" value="" size="30" /> |
</label> |
</fieldset> |
<div align="right"><input type="submit" class="spip_bouton" value="<:bouton_valider:>" /> |
</div> |
</form>[ |
<script type="text/javascript"><!-- |
document.inscription.(#ENV{focus}).focus() |
--></script> |
] |
][<br /> |
<div align="right"> |
(#ENV{target}|?{' ',''}) |
<script type="text/javascript"><!-- |
document.write("<a href='") |
document.write((window.opener) ? "javascript:close()" : "./") |
document.write("'><:pass_quitter_fenetre:><" + "/a>"); |
//--></script> |
<noscript> |
[<a href='./'><:pass_retour_public:></a>] |
</noscript> |
</div> |
] |
/tags/v4.0/actu/formulaires/formulaires/formulaire_signature.html |
---|
New file |
0,0 → 1,52 |
<form method='post' action='#SELF#sp[(#ENV{id_article})]'> |
<input type="hidden" name="url_page" value="#URL_SITE_SPIP/#SELF"> |
<div class='spip_encadrer' style='color: black; font-size: 80%; font-weight: normal;'> |
[(#ENV*{texte}|propre)] |
<fieldset style='font-size: 110%; font-weight: bold;'> |
<legend></legend> |
<label> |
<:form_pet_votre_nom:> |
<input type="text" class="forml" name="nom_email" |
value="" size="20" /> |
</label><br /> |
<label> |
<:form_pet_votre_email:><br /> |
<input type="text" class="forml" name="adresse_email" |
value="" size="20" /> |
</label> |
</fieldset> |
<br /> |
<p> |
[(#ENV{site_obli})<:form_pet_votre_site:><br />] |
<fieldset style='font-size: 110%; font-weight: bold;'> |
<legend></legend> |
<label> |
<:form_pet_nom_site2:><br /> |
<input type="text" class="forml" name="signature_nom_site" |
value="" size="20" /> |
</label> |
<label> |
<:form_pet_adresse_site:><br /> |
<input type="text" class="forml" name="signature_url_site" |
value="http://" size="20" /> |
</label> |
</fieldset> |
[ |
(#ENV{message}) |
<br /> |
<fieldset style='font-weight: bold'> |
<legend></legend> |
<label> |
<:form_pet_message_commentaire:><br /> |
<textarea name="message" rows="3" |
class="forml" cols="20"></textarea> |
</label> |
</fieldset> |
] |
<br /> |
<div align="right"><input type="submit" class="spip_bouton" |
value="<:bouton_valider:>" /></div> |
</div> |
</form> |
/tags/v4.0/actu/formulaires/formulaires/formulaire_site.html |
---|
New file |
0,0 → 1,18 |
<form action="#SELF" method="post"> |
<br /> |
<fieldset class='spip_encadrer' style='color: black; font-size: 90%'> |
<legend></legend> |
<label> |
<:form_prop_nom_site:> |
<input type="text" class="forml" name="nom_site" value="" size="30"> |
</label> |
<label> |
<:form_prop_url_site:> |
<input type="text" class="forml" name="url_site" value="" size="30"> |
</label> |
<label><:form_prop_description:> |
<textarea name='description_site' rows='5' class='forml' cols='40'></textarea> |
</label> |
<div align="right"><input type="submit" class="spip_bouton" value="<:bouton_valider:>"></div> |
</fieldset> |
</form> |
/tags/v4.0/actu/formulaires/formulaires/inc-formulaire_forum.php3 |
---|
New file |
0,0 → 1,404 |
<?php |
if (!defined("_ECRIRE_INC_VERSION")) return; #securite |
include_ecrire('inc_meta.php3'); |
include_ecrire('inc_admin.php3'); |
include_ecrire('inc_acces.php3'); |
include_ecrire('inc_texte.php3'); |
include_ecrire('inc_filtres.php3'); |
include_ecrire('inc_lang.php3'); |
include_ecrire('inc_mail.php3'); |
include_ecrire('inc_forum.php3'); |
include_ecrire("inc_abstract_sql.php3"); |
include_local(_FILE_CONNECT); |
// Gestionnaire d'URLs |
if (@file_exists("inc-urls.php3")) |
include_local("inc-urls.php3"); |
else |
include_local("inc-urls-".$GLOBALS['type_urls'].".php3"); |
/*******************************/ |
/* GESTION DU FORMULAIRE FORUM */ |
/*******************************/ |
// Contexte du formulaire |
global $balise_FORMULAIRE_FORUM_collecte; |
$balise_FORMULAIRE_FORUM_collecte = array('id_rubrique', 'id_forum', 'id_article', 'id_breve', 'id_syndic'); |
// verification des droits a faire du forum |
function balise_FORMULAIRE_FORUM_stat($args, $filtres) { |
// Note : ceci n'est pas documente !! |
// $filtres[0] peut contenir l'url sur lequel faire tourner le formulaire |
// exemple dans un squelette article.html : [(#FORMULAIRE_FORUM|forum.php3)] |
// recuperer les donnees du forum auquel on repond, false = forum interdit |
list ($idr, $idf, $ida, $idb, $ids) = $args; |
if (!$r = sql_recherche_donnees_forum ($idr, $idf, $ida, $idb, $ids)) |
return ''; |
list ($titre, $table, $forums_publics) = $r; |
// Attention id_rubrique est passe pour les articles => on n'en veut pas |
if ($idr > 0 AND ($ida OR $idb OR $ids)) |
$idr = 0; |
return |
array($titre, $table, $forums_publics, $idr, $idf, $ida, $idb, $ids, |
$filtres[0]); |
} |
function balise_FORMULAIRE_FORUM_dyn($titre, $table, $forums_publics, $id_rubrique, $id_forum, $id_article, $id_breve, $id_syndic, $url) { |
global $REMOTE_ADDR, $afficher_texte, $_COOKIE, $_POST; |
// Recuperer les donnees postees du formulaire ou, a defaut, du contexte |
foreach (array('id_article', 'id_breve', 'id_syndic', |
'id_rubrique', 'id_forum') as $id) |
if (isset($_POST['forum_'.$id])) |
$$id = intval($_POST['forum_'.$id]); |
else |
$$id = intval($$id); |
// url de reference |
if (!$url) { |
$url = new Link(); |
$url = $url->getUrl(); |
} else { |
// identifiants des parents |
$args = array(); |
if ($id_rubrique) $args[] = "id_rubrique=$id_rubrique"; |
if ($id_forum) $args[] = "id_forum=$id_forum"; |
if ($id_article) $args[] = "id_article=$id_article"; |
if ($id_breve) $args[] = "id_breve=$id_breve"; |
if ($id_syndic) $args[] = "id_syndic=$id_syndic"; |
if (count($args)) |
$url .= (strpos($url,'?') ? '&' : '?'). join('&',$args); |
} |
$url = ereg_replace("[?&]var_erreur=[^&]*", '', $url); |
$url = ereg_replace("[?&]var_login=[^&]*", '', $url); |
$url = ereg_replace("[?&]url=[^&]*", '', $url); |
// verifier l'identite des posteurs pour les forums sur abo |
if (($forums_publics == "abo") && (!$GLOBALS["auteur_session"])) { |
return array('formulaire_login_forum', 0, array()); |
} |
// ne pas mettre '', sinon le squelette n'affichera rien. |
$previsu = ' '; |
// au premier appel (pas de Post-var nommee "retour_forum") |
// memoriser l'URL courante pour y revenir apres envoi du message |
// aux appels suivants, reconduire la valeur. |
// Initialiser aussi l'auteur |
if (!$retour_forum = rawurldecode(_request('retour_forum'))) { |
if ($retour_forum = rawurldecode(_request('retour'))) |
$retour_forum = str_replace('&var_mode=recalcul','',$retour_forum); |
else { |
$retour_forum = new Link(); |
$retour_forum = $retour_forum->getUrl(); |
} |
if (isset($_COOKIE['spip_forum_user']) |
AND is_array($cookie_user = unserialize($_COOKIE['spip_forum_user']))) { |
$auteur = $cookie_user['nom']; |
$email_auteur = $cookie_user['email']; |
} else { |
$auteur = $GLOBALS['auteur_session']['nom']; |
$email_auteur = $GLOBALS['auteur_session']['email']; |
} |
} else { |
// Recuperer le message a previsualiser |
$titre = _request('titre'); |
$texte = _request('texte'); |
$auteur = _request('auteur'); |
$email_auteur = _request('email_auteur'); |
$nom_site_forum = _request('nom_site_forum'); |
$url_site = _request('url_site'); |
$ajouter_mot = _request('ajouter_mot'); // array |
// |
// Preparer la previsualisation |
// |
if ($afficher_texte != 'non') { |
// Verifier mots associes au message |
if (is_array($ajouter_mot)) |
$mots = preg_replace('/[^0-9,]/', '', join(',',$ajouter_mot)); |
else $mots = '0'; |
// affichage {par num type, type, num titre,titre} |
$result_mots = spip_query("SELECT id_mot, titre, type |
FROM spip_mots |
WHERE id_mot IN ($mots) |
ORDER BY 0+type,type,0+titre,titre"); |
if (spip_num_rows($result_mots)>0) { |
$mots_forums = "<p>"._T('forum_avez_selectionne')."</p><ul>"; |
while ($row = spip_fetch_array($result_mots)) { |
$les_mots[$row['id_mot']] = "checked='checked'"; |
$presence_mots = true; |
$mots_forums .= "<li style='font-size: 80%;'> " |
. typo($row['type']) . " : <b>" |
. typo($row['titre']) ."</b></li>"; |
} |
$mots_forums .= '</ul>'; |
} |
if (strlen($texte) < 10 AND !$presence_mots) |
$erreur = _T('forum_attention_dix_caracteres'); |
else if (strlen($titre) < 3 AND $afficher_texte <> "non") |
$erreur = _T('forum_attention_trois_caracteres'); |
else |
$bouton = _T('forum_message_definitif'); |
$previsu = inclure_balise_dynamique( |
array( |
'formulaire_forum_previsu', |
0, |
array( |
'titre' => interdire_scripts(typo($titre)), |
'email_auteur' => $email_auteur, |
'auteur' => interdire_scripts(typo($auteur)), |
'texte' => propre($texte), |
'url_site' => $url_site, |
'nom_site_forum' => |
interdire_scripts(typo($nom_site_forum)), |
'mots_forum' => $mots_forum, |
'erreur' => $erreur, |
'bouton' => $bouton |
) |
), false); |
// supprimer les <form> de la previsualisation |
// (sinon on ne peut pas faire <cadre>...</cadre> dans les forums) |
$previsu = preg_replace("@<(/?)f(orm[>[:space:]])@ism", |
"<\\1no-f\\2", $previsu); |
} |
// Une securite qui nous protege contre : |
// - les doubles validations de forums (derapages humains ou des brouteurs) |
// - les abus visant a mettre des forums malgre nous sur un article (??) |
// On installe un fichier temporaire dans _DIR_SESSIONS (et pas _DIR_CACHE |
// afin de ne pas bugguer quand on vide le cache) |
// Le lock est leve au moment de l'insertion en base (inc-messforum.php3) |
$alea = preg_replace('/[^0-9]/', '', $alea); |
if(!$alea OR !@file_exists(_DIR_SESSIONS."forum_$alea.lck")) { |
while ( |
# astuce : mt_rand pour autoriser les hits simultanes |
$alea = time() + @mt_rand() |
AND @file_exists($f = _DIR_SESSIONS."forum_$alea.lck")) {}; |
spip_touch ($f); |
} |
# et maintenant on purge les locks de forums ouverts depuis > 4 h |
if ($dh = @opendir(_DIR_SESSIONS)) |
while (($file = @readdir($dh)) !== false) |
if (preg_match('/^forum_([0-9]+)\.lck$/', $file) |
AND (time()-@filemtime(_DIR_SESSIONS.$file) > 4*3600)) |
@unlink(_DIR_SESSIONS.$file); |
$hash = calculer_action_auteur("ajout_forum $id_rubrique $id_forum $id_article $id_breve $id_syndic $alea"); |
} |
// Faut-il ajouter des propositions de mots-cles |
if ($table AND (lire_meta("mots_cles_forums") == "oui")) |
$table = table_des_mots($table, $les_mots); |
else |
$table = ''; |
// preparer les parametres du forum en input hidden |
$parametres_forum = ''; |
foreach (array('alea', 'hash', 'retour_forum') as $var) |
if ($val = entites_html($$var)) |
$parametres_forum .= |
"<input type='hidden' name='$var' value=\"$val\" />\n"; |
foreach (array( |
'id_article', 'id_breve', 'id_syndic', 'id_rubrique', 'id_forum') |
as $var) |
if ($val = $$var) |
$parametres_forum .= |
"<input type='hidden' name='forum_$var' value='$val' />\n"; |
return array('formulaire_forum', 0, |
array( |
'auteur' => $auteur, |
'disabled' => ($forums_publics == "abo")? " disabled='disabled'" : '', |
'email_auteur' => $email_auteur, |
'modere' => (($forums_publics != 'pri') ? '' : _T('forum_info_modere')), |
'nom_site_forum' => $nom_site_forum, |
'previsu' => $previsu, |
'table' => $table, |
'texte' => $texte, |
'titre' => $titre, |
'url' => $url, |
'url_site' => ($url_site ? $url_site : "http://"), |
'parametres_forum' => $parametres_forum, |
## gestion des la variable de personnalisation $afficher_texte |
# mode normal : afficher le texte en < input text >, cf. squelette |
'afficher_texte_input' => (($afficher_texte <> 'non') ? ' ' : ''), |
# mode 'non' : afficher les elements en < input hidden > |
'afficher_texte_hidden' => (($afficher_texte <> 'non') ? '' : |
(boutonne('hidden', 'titre', htmlspecialchars($titre)) . |
$table . |
"\n<br /><div align='right'>" . |
boutonne('submit', '', _T('forum_valider'), |
"class='spip_bouton'") . |
"</div>")) |
)); |
} |
function barre_forum($texte) |
{ |
include_ecrire('inc_layer.php3'); |
if (!$GLOBALS['browser_barre']) |
return "<textarea name='texte' rows='12' class='forml' cols='40'>$texte</textarea>"; |
static $num_formulaire = 0; |
$num_formulaire++; |
include_ecrire('inc_barre.php3'); |
return afficher_barre("document.getElementById('formulaire_$num_formulaire')", true) . |
" |
<textarea name='texte' rows='12' class='forml' cols='40' |
id='formulaire_$num_formulaire' |
onselect='storeCaret(this);' |
onclick='storeCaret(this);' |
onkeyup='storeCaret(this);' |
ondbclick='storeCaret(this);'>$texte</textarea>"; |
} |
// Mots-cles dans les forums : |
// Si la variable de personnalisation $afficher_groupe[] est definie |
// dans le fichier d'appel, et si la table de reference est OK, proposer |
// la liste des mots-cles |
function table_des_mots($table, $les_mots) { |
global $afficher_groupe; |
if ($afficher_groupe) |
$in_group = " AND id_groupe IN (" . join($afficher_groupe, ", ") .")"; |
$result_groupe = spip_query("SELECT * FROM spip_groupes_mots |
WHERE 6forum = 'oui' AND $table = 'oui'". $in_group); |
$ret = ''; |
while ($row_groupe = spip_fetch_array($result_groupe)) { |
$id_groupe = $row_groupe['id_groupe']; |
$titre_groupe = propre($row_groupe['titre']); |
$unseul = ($row_groupe['unseul']== 'oui') ? 'radio' : 'checkbox'; |
$result =spip_query("SELECT * FROM spip_mots |
WHERE id_groupe='$id_groupe'"); |
$total_rows = spip_num_rows($result); |
if ($total_rows > 0) { |
$ret .= "\n<p />" |
. "<div class='spip_encadrer' style='font-size: 80%;'>" |
. "<b>$titre_groupe :</b>" |
. "<table cellpadding='0' cellspacing='0' border='0' width='100%'>\n" |
."<tr><td width='47%' valign='top'>"; |
$i = 0; |
while ($row = spip_fetch_array($result)) { |
$id_mot = $row['id_mot']; |
$titre_mot = propre($row['titre']); |
$descriptif_mot = propre($row['descriptif']); |
if ($i >= ($total_rows/2) AND $i < $total_rows) { |
$i = $total_rows + 1; |
$ret .= "</td><td width='6%'> </td> |
<td width='47%' valign='top'>"; |
} |
$ret .= boutonne($unseul, "ajouter_mot[]", $id_mot, "id='mot$id_mot' " . $les_mots[$id_mot]) . |
afficher_petits_logos_mots($id_mot) |
. "<b><label for='mot$id_mot'>$titre_mot</label></b><br />"; |
if ($descriptif_mot) |
$ret .= "$descriptif_mot<br />"; |
$i++; |
} |
$ret .= "</td></tr></table>"; |
$ret .= "</div>"; |
} |
} |
return $ret; |
} |
function afficher_petits_logos_mots($id_mot) { |
include_ecrire('inc_logos.php3'); |
$on = cherche_image_nommee("moton$id_mot"); |
if ($on) { |
$image = ("$on[0]$on[1].$on[2]"); |
$taille = @getimagesize($image); |
$largeur = $taille[0]; |
$hauteur = $taille[1]; |
if ($largeur < 100 AND $hauteur < 100) |
return "<img src='$image' align='middle' width='$largeur' |
height='$hauteur' hspace='1' vspace='1' alt=' ' border='0' |
class='spip_image' /> "; |
} |
} |
/*******************************************************/ |
/* FONCTIONS DE CALCUL DES DONNEES DU FORMULAIRE FORUM */ |
/*******************************************************/ |
// |
// Chercher le titre et la configuration du forum de l'element auquel on repond |
// |
function sql_recherche_donnees_forum ($idr, $idf, $ida, $idb, $ids) { |
// changer la table de reference s'il y a lieu (pour afficher_groupes[] !!) |
if ($ida) { |
$r = "SELECT titre FROM spip_articles WHERE id_article = $ida"; |
$table = "articles"; |
} else if ($idb) { |
$r = "SELECT titre FROM spip_breves WHERE id_breve = $idb"; |
$table = "breves"; |
} else if ($ids) { |
$r = "SELECT nom_site AS titre FROM spip_syndic WHERE id_syndic = $ids"; |
$table = "syndic"; |
} else if ($idr) { |
$r = "SELECT titre FROM spip_rubriques WHERE id_rubrique = $idr"; |
$table = "rubriques"; |
} |
if ($idf) |
$r = "SELECT titre FROM spip_forum WHERE id_forum = $idf"; |
if ($r) { |
list($titre) = spip_fetch_array(spip_query($r)); |
$titre = '> ' . supprimer_numero(preg_replace('/^> /', '', $titre)); |
} else { |
$titre = _T('forum_titre_erreur'); |
$table = ''; |
} |
// quelle est la configuration du forum ? |
if ($ida) |
list($accepter_forum) = spip_fetch_array(spip_query( |
"SELECT accepter_forum FROM spip_articles WHERE id_article=$ida")); |
if (!$accepter_forum) |
$accepter_forum = substr(lire_meta("forums_publics"),0,3); |
// valeurs possibles : 'pos'teriori, 'pri'ori, 'abo'nnement |
if ($accepter_forum == "non") |
return false; |
return array ($titre, $table, $accepter_forum); |
} |
?> |
/tags/v4.0/actu/formulaires/formulaires/inc-formulaire_admin.php3 |
---|
New file |
0,0 → 1,137 |
<?php |
if (!defined("_ECRIRE_INC_VERSION")) return; #securite |
global $balise_FORMULAIRE_ADMIN_collecte ; |
$balise_FORMULAIRE_ADMIN_collecte = array(); |
# on ne peut rien dire au moment de l'execution du squelette |
function balise_FORMULAIRE_ADMIN_stat($args, $filtres) { |
return $args; |
} |
# les boutons admin sont mis d'autorite si absents |
# donc une variable statique controle si FORMULAIRE_ADMIN a ete vu. |
# Toutefois, si c'est le debuger qui appelle, |
# il peut avoir recopie le code dans ses donnees et il faut le lui refounir. |
# Pas question de recompiler: ca fait boucler ! |
# Le debuger transmet donc ses donnees, et cette balise y retrouve son petit. |
function balise_FORMULAIRE_ADMIN_dyn($float='', $debug='') { |
global $var_preview, $use_cache, $forcer_debug; |
global $id_article, $id_breve, $id_rubrique, $id_mot, $id_auteur; |
static $dejafait = false; |
if (!$GLOBALS['spip_admin']) |
return ''; |
if (!is_array($debug)) { |
if ($dejafait) |
return ''; |
} else { |
if ($dejafait) { |
$res = ''; |
foreach($debug['sourcefile'] as $k => $v) { |
if (strpos($v,'formulaire_admin.') !== false) |
return $debug['resultat'][$k . 'tout']; |
} |
return ''; |
} |
} |
$dejafait = true; |
// repartir de zero pour les boutons car clean_link a pu etre utilisee |
$link = new Link(); |
$link->delVar('var_mode'); |
$link->delVar('var_mode_objet'); |
$link->delVar('var_mode_affiche'); |
$action = $link->getUrl(); |
$action = ($action . ((strpos($action, '?') === false) ? '?' : '&')); |
// Ne pas afficher le bouton 'Modifier ce...' si l'objet n'existe pas |
foreach (array('article', 'breve', 'rubrique', 'mot', 'auteur') as $type) { |
$id_type = 'id_'.$type; |
if (!($$id_type = intval($$id_type) |
AND $s = spip_query( |
"SELECT $id_type FROM spip_${type}s WHERE $id_type=".$$id_type) |
AND spip_num_rows($s))) |
$$id_type=0; |
else { |
$objet_affiche = $type; |
break; |
} |
} |
// Bouton statistiques |
if (lire_meta("activer_statistiques") != "non" |
AND $id_article |
AND !$var_preview |
AND ($GLOBALS['auteur_session']['statut'] == '0minirezo')) { |
if ($s = spip_query("SELECT id_article |
FROM spip_articles WHERE statut='publie' |
AND id_article = $id_article") |
AND spip_fetch_array($s)) { |
include_local ("inc-stats.php3"); |
$r = afficher_raccourci_stats($id_article); |
$visites = $r['visites']; |
$popularite = $r['popularite']; |
$statistiques = 'statistiques_visites.php3?'; # lien si connecte |
} |
} |
// Bouton de debug |
$debug = ( |
($forcer_debug |
OR $GLOBALS['bouton_admin_debug'] |
OR ($GLOBALS['var_mode'] == 'debug' |
AND $GLOBALS['_COOKIE']['spip_debug'] |
)) AND ($GLOBALS['code_activation_debug'] == 'oui' |
OR $GLOBALS['auteur_session']['statut'] == '0minirezo') |
AND !$var_preview |
) ? 'debug' : ''; |
// hack - ne pas avoir la rubrique si un autre bouton est deja present |
if ($id_article OR $id_breve) unset ($id_rubrique); |
// Pas de "modifier ce..." ? -> donner "acces a l'espace prive" |
if (!($id_article || $id_rubrique || $id_auteur || $id_breve || $id_mot)) |
$ecrire = 'ecrire'; |
// Bouton "preview" si l'objet demande existe et est previsualisable |
if (!$GLOBALS['var_preview'] AND ( |
((lire_meta('preview')=='1comite' |
AND $GLOBALS['auteur_session']['statut'] =='1comite') |
OR (lire_meta('preview')<>'' |
AND $GLOBALS['auteur_session']['statut'] =='0minirezo')) |
)) { |
if ($objet_affiche == 'article' |
OR $objet_affiche == 'breve' |
OR $objet_affiche == 'rubrique') |
if (spip_num_rows(spip_query( |
"SELECT id_$objet_affiche FROM spip_".$objet_affiche."s |
WHERE id_$objet_affiche=".${"id_".$objet_affiche}." |
AND statut IN ('prop', 'prive')"))) |
$preview = 'preview'; |
} |
return array('formulaire_admin', 0, |
array( |
'id_article' => $id_article, |
'id_rubrique' => $id_rubrique, |
'id_auteur' => $id_auteur, |
'id_breve' => $id_breve, |
'id_mot' => $id_mot, |
'ecrire' => $ecrire, |
'action' => $action, |
'preview' => $preview, |
'debug' => $debug, |
'popularite' => ceil($popularite), |
'statistiques' => $statistiques, |
'visites' => intval($visites), |
'use_cache' => ($use_cache ? ' *' : ''), |
'floatdiv' => $float |
) |
); |
} |
?> |
/tags/v4.0/actu/formulaires/formulaires/formulaire_menu_lang.html |
---|
New file |
0,0 → 1,14 |
<form action='[(#ENV{url})]' |
method='post' |
style='margin:0px; padding:0px;'>[ |
<input type='hidden' name='url' value='(#ENV{cible})' /> |
] <select name='[(#ENV{nom})]' |
class='forml' |
style='vertical-align: top; max-height: 24px; margin-bottom: 5px; width: 120px;' |
onchange="document.location.href='[(#ENV{retour})]&[(#ENV{nom})]='+this.options[this.selectedIndex].value"> |
[(#ENV*{langues})] |
</select> |
<noscript> |
<input type='submit' value='>>' class='spip_bouton' /> |
</noscript> |
</form> |
/tags/v4.0/actu/formulaires/formulaires/formulaire_forum_previsu.html |
---|
New file |
0,0 → 1,21 |
<div class='spip_encadrer'> |
<div style='font-size: 120%; font-weight: bold;'>[(#ENV*{titre})]</div> |
<p /> |
[<b><a[ href="mailto:(#ENV{email_auteur})"]>(#ENV*{auteur})</a></b>] |
[<p />(#ENV*{texte})] |
[<p /><a [href="(#ENV{url_site}|urlencode)"]>(#ENV*{nom_site_forum})</a>] |
[(#ENV*{mots_forum})] |
[<p align='right' style='color: red;'>(#ENV*{erreur})</p>] |
[<div align='right'><input type='submit' name='confirmer_forum' class='spip_bouton' value="(#ENV*{bouton})" /></div>] |
</div> |
<br /> |
/tags/v4.0/actu/formulaires/formulaires/inc-formulaire_recherche.php3 |
---|
New file |
0,0 → 1,34 |
<?php |
if (!defined("_ECRIRE_INC_VERSION")) return; #securite |
// Pas besoin de contexte de compilation |
global $balise_FORMULAIRE_RECHERCHE_collecte; |
$balise_FORMULAIRE_RECHERCHE_collecte = array(); |
function balise_FORMULAIRE_RECHERCHE_stat($args, $filtres) { |
// Si le moteur n'est pas active, pas de balise |
if (lire_meta("activer_moteur") != "oui") |
return ''; |
// Seul un lien [(#FORMULAIRE_RECHERCHE|xxx.php3)] nous interesse |
else |
return array($filtres[0]); |
} |
function balise_FORMULAIRE_RECHERCHE_dyn($lien) { |
include_ecrire('inc_filtres.php3'); |
if (!$recherche_securisee = entites_html(_request('recherche'))) { |
$recherche_securisee = _T('info_rechercher'); |
} |
if (!$lien) |
$lien = 'recherche.php3'; # par defaut |
return array('formulaire_recherche', 3600, |
array( |
'lien' => $lien, |
'recherche_securisee' => $recherche_securisee |
)); |
} |
?> |
/tags/v4.0/actu/formulaires/formulaires/inc-login_prive.php3 |
---|
New file |
0,0 → 1,31 |
<?php |
if (!defined("_ECRIRE_INC_VERSION")) return; #securite |
include_local(find_in_path("inc-login_public.php3")); |
global $balise_LOGIN_PRIVE_collecte; |
$balise_LOGIN_PRIVE_collecte = array('url'); |
# retourner: |
# 1. l'url collectee ci-dessus (args0) ou donnee en filtre (filtre0) |
# 2. l'eventuel parametre de la balise (args1) fournie par |
# calculer_balise_dynamique, en l'occurence le #LOGIN courant si l'on |
# programme une <boucle(AUTEURS)>[(#LOGIN_PRIVE{#LOGIN})] |
function balise_LOGIN_PRIVE_stat ($args, $filtres) { |
if (!$cible = $filtres[0]) |
$cible = $args[0]; |
$login = $args[1]; |
return array($cible, $login, $inscription); |
} |
function balise_LOGIN_PRIVE_dyn($cible, $login) { |
return |
login_explicite($login, $cible, 'redac'); |
} |
?> |
/tags/v4.0/actu/formulaires/formulaires/formulaire_login.html |
---|
New file |
0,0 → 1,70 |
[(#ENV{echec_cookie}) |
<h3 class="spip"><:erreur_probleme_cookie:></h3> |
<b><:login_cookie_oblige:></b> |
<:login_cookie_accepte:><p /> |
] |
<div style="font-family: Verdana,arial,helvetica,sans-serif; font-size: 12px;"> |
<script type="text/javascript" src="ecrire/md5.js"></script> |
<form id="login[_(#ENV{login})]" |
action="[(#ENV{action2})]" |
method="post"[(#ENV{source}|=={spip}|?{' ',''}) |
onSubmit='if (this.session_password.value) { |
this.session_password_md5.value = calcMD5("[(#ENV{alea_actuel})]" + this.session_password.value); |
this.next_session_password_md5.value = calcMD5("[(#ENV{alea_futur})]" + this.session_password.value); |
this.session_password.value = ""; |
}']> |
<div class="spip_encadrer" style="[(#URL_SITE_SPIP|style_align)]">[ |
<div class="reponse_formulaire">(#ENV*{erreur})<br /><br /></div> |
][ |
<label><b><:login_login2:></b><br /></label>(#ENV{login}|?{'',' '}) |
<input type="text" id='var_login' name="var_login" class="forml" value="" size="40" /> |
][ |
<div> |
[<div style="float: #LANG_RIGHT; padding-#LANG_LEFT: 10px;"><img src="(#ENV{id_auteur}|silogoauteur)" |
width="75" |
alt="[(#ENV{login_alt})]" /></div>] |
<input type="hidden" name="session_login_hidden" value="(#ENV{login})" /> |
<script type="text/javascript"><!-- |
document.write("<:login_login:> <b>[(#ENV{login_alt})]<" + "/b><br />[<a href='spip_cookie.php3?cookie_admin=non[&url=(#ENV{url})][&retour=(#SELF|urlencode)]'><font size='2'><:login_autre_identifiant:><" + "/font><" + "/a>]") |
//--></script> |
<noscript> |
<p><font face="Georgia, Garamond, Times, serif" size="3"> |
<:login_non_securise:> |
<a href="[(#ENV{action})]"><:login_recharger:></a>. |
</font></p> |
<label><b><:login_login2:></b><br /></label> |
<input type='text' name='session_login' class='forml' [value="(#ENV{login})" ]size='40' /> |
</noscript> |
</div> |
<p> |
<label><b><:login_pass2:></b></label> |
<input type="password" name="session_password"[ id="var_login_(#ENV{login})]" class="forml" style="width: 140px;" value="" size="20" /> |
<br /> <input type="checkbox" |
name="session_remember" |
id="session[_(#ENV{login})]" |
value="oui"[(#ENV*{prefs}|filtre_rester_connecte)checked="checked"]/> |
<label for="session[_(#ENV{login})]"><:login_rester_identifie:></label> |
</p> |
<input type="hidden" name="session_password_md5" value="" /> |
<input type="hidden" name="next_session_password_md5" value="" /> |
<input type="hidden" name="essai_login" value="oui" /> |
] <input type="hidden" name="url" value="[(#ENV{url})]" /> |
<div align="right"><input type="submit" class="spip_bouton" value="<:bouton_valider:>" /></div> |
</div> |
</form> |
<script type="text/javascript"><!-- |
document.getElementById('var_login[_(#ENV{login})]').focus(); |
--></script>[ |
<form action="(#ENV{auth_http})" method="get"> |
<fieldset> |
<p> |
<:login_preferez_refuser:> |
<input type="hidden" name="essai_auth_http" value="oui"/> |
[<input type="hidden" name="url" value="(#ENV{url})"/>] |
<div align="right"><input type="submit" class="spip_bouton" value="<:login_sans_cookiie:>"/></div> |
</fieldset> |
</form> |
] |
</div> |
/tags/v4.0/actu/formulaires/formulaires/formulaire_oubli.html |
---|
New file |
0,0 → 1,37 |
[ |
(#ENV*{message}) |
][ |
(#ENV*{message}|?{'',' '}) |
<form id="oubli_form" action='spip_pass.php3' method='post'> |
<fieldset style="border: none;"><legend></legend>[ |
<:pass_nouveau_pass:> |
<input type='hidden' name="p" value="(#ENV{p})"> |
<label> |
<:pass_choix_pass:> |
<input type="password" name="oubli"> |
</label>][ |
(#ENV{p}|?{'',' '}) |
<label> |
<:pass_indiquez_cidessous:> |
<input type="texte" name="oubli"> |
</label>] |
<input type=submit class="fondl" value="<:pass_ok:>"> |
</fieldset> |
</form> |
] |
<br /> |
<div align="right"> |
<script type="text/javascript"><!-- |
[ |
(#ENV*{message}|?{'',' '}) |
document.oubli_form.oubli.focus() |
] |
document.write("<a href='") |
document.write((window.opener) ? "javascript:close()" : "./") |
document.write("'><:pass_quitter_fenetre:><" + "/a>"); |
//--></script> |
<noscript> |
[<a href='./'><:pass_retour_public:></a>] |
</noscript> |
</div> |
<br /> |
/tags/v4.0/actu/formulaires/formulaire_inscription.html |
---|
New file |
0,0 → 1,43 |
[ |
(#ENV*{message}) |
][ |
(#ENV*{message}|?{'',' '})[ |
(#ENV{mode}|=={forum}|?{' ',''}) |
<:pass_forum_bla:><br /><br /> |
][ |
(#ENV{mode}|=={redac}|?{' ',''}) |
<:pass_espace_prive_bla:><br /><br /> |
]<:form_forum_indiquer_nom_email:> |
<form id="inscription" method='post' action="[(#ENV{self})]" |
style='border: 0px; margin: 0px;'> |
<fieldset style="border: none; font-weight: bold"> |
<legend><:form_forum_identifiants:></legend> |
<label> |
<:form_pet_votre_nom:> |
<input type="text" class="forml" name="nom_inscription" value="" size="30" /> |
</label> |
<label> |
<:form_pet_votre_email:> |
<input type="text" class="forml" name="mail_inscription" value="" size="30" /> |
</label> |
</fieldset> |
<div align="right"><input type="submit" class="spip_bouton" value="<:bouton_valider:>" /> |
</div> |
</form>[ |
<script type="text/javascript"><!-- |
document.inscription.(#ENV{focus}).focus() |
--></script> |
] |
][<br /> |
<div align="right"> |
(#ENV{target}|?{' ',''}) |
<script type="text/javascript"><!-- |
document.write("<a href='") |
document.write((window.opener) ? "javascript:close()" : "./") |
document.write("'><:pass_quitter_fenetre:><" + "/a>"); |
//--></script> |
<noscript> |
[<a href='./'><:pass_retour_public:></a>] |
</noscript> |
</div> |
] |
/tags/v4.0/actu/formulaires/formulaire_signature.html |
---|
New file |
0,0 → 1,52 |
<form method='post' action="[(#ENV{self})][#sp(#ENV{id_article})]"> |
<input type="hidden" name="url_page" value="#URL_SITE_SPIP/#SELF" /> |
<div class='spip_encadrer' style='color: black; font-size: 80%; font-weight: normal;'> |
[(#ENV*{texte}|propre)] |
<fieldset style='font-size: 110%; font-weight: bold;'> |
<legend><:form_forum_identifiants:></legend> |
<label> |
<:form_pet_votre_nom:> |
<input type="text" class="forml" name="nom_email" |
value="" size="20" /> |
</label><br /> |
<label> |
<:form_pet_votre_email:><br /> |
<input type="text" class="forml" name="adresse_email" |
value="" size="20" /> |
</label> |
</fieldset> |
<br /> |
<p> |
[(#ENV{site_obli})<:form_pet_votre_site:><br />] |
<fieldset style='font-size: 110%; font-weight: bold;'> |
<legend><:forum_lien_hyper:></legend> |
<label> |
<:form_pet_nom_site2:><br /> |
<input type="text" class="forml" name="signature_nom_site" |
value="" size="20" /> |
</label> |
<label> |
<:form_pet_adresse_site:><br /> |
<input type="text" class="forml" name="signature_url_site" |
value="http://" size="20" /> |
</label> |
</fieldset> |
[ |
(#ENV{message}) |
<br /> |
<fieldset style='font-weight: bold'> |
<legend><:form_pet_message_commentaire:></legend> |
<label> |
<:info_texte_message:><br /> |
<textarea name="message" rows="3" |
class="forml" cols="20"></textarea> |
</label> |
</fieldset> |
] |
<br /> |
<div align="right"><input type="submit" class="spip_bouton" |
value="<:bouton_valider:>" /></div> |
</div> |
</form> |
/tags/v4.0/actu/formulaires/formulaire_site.html |
---|
New file |
0,0 → 1,18 |
<form action="[(#ENV{self})]" method="post"> |
<br /> |
<fieldset class='spip_encadrer' style='color: black; font-size: 90%'> |
<legend><:info_site:></legend> |
<label> |
<:form_prop_nom_site:> |
<input type="text" class="forml" name="nom_site" value="" size="30" /> |
</label> |
<label> |
<:form_prop_url_site:> |
<input type="text" class="forml" name="url_site" value="" size="30" /> |
</label> |
<label><:form_prop_description:> |
<textarea name='description_site' rows='5' class='forml' cols='40'></textarea> |
</label> |
<div align="right"><input type="submit" class="spip_bouton" value="<:bouton_valider:>" /></div> |
</fieldset> |
</form> |
/tags/v4.0/actu/formulaires/inc-formulaire_recherche.php3 |
---|
New file |
0,0 → 1,36 |
<?php |
if (!defined("_ECRIRE_INC_VERSION")) return; #securite |
// Pas besoin de contexte de compilation |
global $balise_FORMULAIRE_RECHERCHE_collecte; |
$balise_FORMULAIRE_RECHERCHE_collecte = array(); |
function balise_FORMULAIRE_RECHERCHE_stat($args, $filtres) { |
// Si le moteur n'est pas active, pas de balise |
if (lire_meta("activer_moteur") != "oui") |
return ''; |
// Seul un lien [(#FORMULAIRE_RECHERCHE|xxx.php3)] nous interesse |
else |
return array($filtres[0], $args[0]); |
} |
function balise_FORMULAIRE_RECHERCHE_dyn($lien, $rech) { |
include_ecrire('inc_filtres.php3'); |
if (!$recherche_securisee = entites_html(_request('recherche'))) { |
if (!$recherche_securisee = entites_html($rech)) { |
$recherche_securisee = _T('info_rechercher'); |
} |
} |
if (!$lien) |
$lien = 'recherche.php3'; # par defaut |
return array('formulaire_recherche', 3600, |
array( |
'lien' => $lien, |
'recherche_securisee' => $recherche_securisee |
)); |
} |
?> |
/tags/v4.0/actu/formulaires/formulaire_forum_previsu.html |
---|
New file |
0,0 → 1,21 |
<div class='spip_encadrer'> |
<div style='font-size: 120%; font-weight: bold;'>[(#ENV*{titre})]</div> |
<p /> |
[<b><a[ href="mailto:(#ENV{email_auteur})"]>(#ENV*{auteur})</a></b>] |
[<p />(#ENV*{texte})] |
[<p /><a [href="(#ENV{url_site}|attribut_html)"]>(#ENV*{nom_site_forum})</a>] |
[(#ENV*{mots_forum})] |
[<p align='right' style='color: red;'>(#ENV*{erreur})</p>] |
[<div align='right'><input type='submit' name='confirmer_forum' class='spip_bouton' value="(#ENV*{bouton})" /></div>] |
</div> |
<br /> |
/tags/v4.0/actu/formulaires/formulaire_menu_lang.html |
---|
New file |
0,0 → 1,16 |
<form action='[(#ENV{url})]' |
method='post' |
style='margin:0px; padding:0px;'> |
<div>[ |
<input type='hidden' name='url' value='(#ENV{cible})' /> |
] <select name='[(#ENV{nom})]' |
class='forml' |
style='vertical-align: top; max-height: 24px; margin-bottom: 5px; width: 120px;' |
onchange="document.location.href='[(#ENV{retour})]&[(#ENV{nom})]='+this.options[this.selectedIndex].value"> |
[(#ENV*{langues})] |
</select> |
<noscript> |
<input type='submit' value='>>' class='spip_bouton' /> |
</noscript> |
</div> |
</form> |
/tags/v4.0/actu/formulaires/inc-formulaire_admin.php3 |
---|
New file |
0,0 → 1,144 |
<?php |
if (!defined("_ECRIRE_INC_VERSION")) return; #securite |
global $balise_FORMULAIRE_ADMIN_collecte ; |
$balise_FORMULAIRE_ADMIN_collecte = array(); |
# on ne peut rien dire au moment de l'execution du squelette |
function balise_FORMULAIRE_ADMIN_stat($args, $filtres) { |
return $args; |
} |
# les boutons admin sont mis d'autorite si absents |
# donc une variable statique controle si FORMULAIRE_ADMIN a ete vu. |
# Toutefois, si c'est le debuger qui appelle, |
# il peut avoir recopie le code dans ses donnees et il faut le lui refounir. |
# Pas question de recompiler: ca fait boucler ! |
# Le debuger transmet donc ses donnees, et cette balise y retrouve son petit. |
function balise_FORMULAIRE_ADMIN_dyn($float='', $debug='') { |
global $var_preview, $use_cache, $forcer_debug, $xhtml; |
global $id_article, $id_breve, $id_rubrique, $id_mot, $id_auteur, $id_syndic; |
static $dejafait = false; |
if (!$GLOBALS['spip_admin']) |
return ''; |
if (!is_array($debug)) { |
if ($dejafait) |
return ''; |
} else { |
if ($dejafait) { |
$res = ''; |
foreach($debug['sourcefile'] as $k => $v) { |
if (strpos($v,'formulaire_admin.') !== false) |
return $debug['resultat'][$k . 'tout']; |
} |
return ''; |
} |
} |
$dejafait = true; |
// repartir de zero pour les boutons car clean_link a pu etre utilisee |
$link = new Link(); |
$link->delVar('var_mode'); |
$link->delVar('var_mode_objet'); |
$link->delVar('var_mode_affiche'); |
$action = $link->getUrl(); |
$action = ($action . ((strpos($action, '?') === false) ? '?' : '&')); |
// Ne pas afficher le bouton 'Modifier ce...' si l'objet n'existe pas |
foreach (array('article', 'breve', 'rubrique', 'mot', 'auteur', 'syndic') as $type) { |
$id_type = id_table_objet($type); |
if (!($$id_type = intval($$id_type) |
AND $s = spip_query( |
"SELECT $id_type FROM spip_".table_objet($type)." |
WHERE $id_type=".$$id_type) |
AND spip_num_rows($s))) |
$$id_type=0; |
else { |
$objet_affiche = $type; |
break; |
} |
} |
// Bouton statistiques |
if (lire_meta("activer_statistiques") != "non" |
AND $id_article |
AND !$var_preview |
AND ($GLOBALS['auteur_session']['statut'] == '0minirezo')) { |
if ($s = spip_query("SELECT id_article |
FROM spip_articles WHERE statut='publie' |
AND id_article = $id_article") |
AND spip_fetch_array($s)) { |
include_local ("inc-stats.php3"); |
$r = afficher_raccourci_stats($id_article); |
$visites = $r['visites']; |
$popularite = $r['popularite']; |
$statistiques = 'statistiques_visites.php3?'; # lien si connecte |
} |
} |
// Bouton de debug |
$debug = (($forcer_debug |
OR $GLOBALS['bouton_admin_debug'] |
OR ($GLOBALS['var_mode'] == 'debug' |
AND $GLOBALS['_COOKIE']['spip_debug'])) |
AND ($GLOBALS['code_activation_debug'] == 'oui' |
OR $GLOBALS['auteur_session']['statut'] == '0minirezo') |
AND !$var_preview |
) ? 'debug' : ''; |
$analyser = !$xhtml ? "" : |
(($xhtml === 'spip_sax') ? |
($action . "var_mode=debug&var_mode_affiche=validation") : |
$GLOBALS['xhtml_check']); // cas tidy |
// hack - ne pas avoir la rubrique si un autre bouton est deja present |
if ($id_article OR $id_breve) unset ($id_rubrique); |
// Pas de "modifier ce..." ? -> donner "acces a l'espace prive" |
if (!($id_article || $id_rubrique || $id_auteur || $id_breve || $id_mot || $id_syndic)) |
$ecrire = 'ecrire'; |
// Bouton "preview" si l'objet demande existe et est previsualisable |
if (!$GLOBALS['var_preview'] AND ( |
((lire_meta('preview')=='1comite' |
AND $GLOBALS['auteur_session']['statut'] =='1comite') |
OR (lire_meta('preview')<>'' |
AND $GLOBALS['auteur_session']['statut'] =='0minirezo')) |
)) { |
if ($objet_affiche == 'article' |
OR $objet_affiche == 'breve' |
OR $objet_affiche == 'rubrique' |
OR $objet_affiche == 'syndic') |
if (spip_num_rows(spip_query( |
"SELECT id_$objet_affiche FROM spip_".table_objet($objet_affiche)." |
WHERE ".id_table_objet($objet_affiche)."=".$$id_type." |
AND statut IN ('prop', 'prive')"))) |
$preview = 'preview'; |
} |
return array('formulaire_admin', 0, |
array( |
'id_article' => $id_article, |
'id_rubrique' => $id_rubrique, |
'id_auteur' => $id_auteur, |
'id_breve' => $id_breve, |
'id_mot' => $id_mot, |
'id_syndic' => $id_syndic, |
'ecrire' => $ecrire, |
'action' => $action, |
'preview' => $preview, |
'debug' => $debug, |
'popularite' => ceil($popularite), |
'statistiques' => $statistiques, |
'visites' => intval($visites), |
'use_cache' => ($use_cache ? ' *' : ''), |
'divclass' => $float, |
'analyser' => $analyser, |
'xhtml_error' => $GLOBALS['xhtml_error'] |
) |
); |
} |
?> |
/tags/v4.0/actu/formulaires/inc-formulaire_forum.php3 |
---|
New file |
0,0 → 1,413 |
<?php |
if (!defined("_ECRIRE_INC_VERSION")) return; #securite |
include_ecrire('inc_meta.php3'); |
include_ecrire('inc_admin.php3'); |
include_ecrire('inc_acces.php3'); |
include_ecrire('inc_texte.php3'); |
include_ecrire('inc_filtres.php3'); |
include_ecrire('inc_lang.php3'); |
include_ecrire('inc_mail.php3'); |
include_ecrire('inc_forum.php3'); |
include_ecrire("inc_abstract_sql.php3"); |
include_local(_FILE_CONNECT); |
// Gestionnaire d'URLs |
if (@file_exists("inc-urls.php3")) |
include_local("inc-urls.php3"); |
else |
include_local("inc-urls-".$GLOBALS['type_urls'].".php3"); |
/*******************************/ |
/* GESTION DU FORMULAIRE FORUM */ |
/*******************************/ |
// Contexte du formulaire |
global $balise_FORMULAIRE_FORUM_collecte; |
$balise_FORMULAIRE_FORUM_collecte = array('id_rubrique', 'id_forum', 'id_article', 'id_breve', 'id_syndic'); |
// verification des droits a faire du forum |
function balise_FORMULAIRE_FORUM_stat($args, $filtres) { |
// Note : ceci n'est pas documente !! |
// $filtres[0] peut contenir l'url sur lequel faire tourner le formulaire |
// exemple dans un squelette article.html : [(#FORMULAIRE_FORUM|forum.php3)] |
// $args[5] peut contenir l'url sur lequel faire le retour |
// exemple dans un squelette article.html : [(#FORMULAIRE_FORUM{#SELF})] |
// recuperer les donnees du forum auquel on repond, false = forum interdit |
list ($idr, $idf, $ida, $idb, $ids) = $args; |
if (!$r = sql_recherche_donnees_forum ($idr, $idf, $ida, $idb, $ids)) |
return ''; |
list ($titre, $table, $forums_publics) = $r; |
// Attention id_rubrique est passe pour les articles => on n'en veut pas |
if ($idr > 0 AND ($ida OR $idb OR $ids)) |
$idr = 0; |
return |
array($titre, $table, $forums_publics, $idr, $idf, $ida, $idb, $ids, |
$filtres[0], $args[5]); |
} |
function balise_FORMULAIRE_FORUM_dyn($titre, $table, $forums_publics, $id_rubrique, $id_forum, $id_article, $id_breve, $id_syndic, $url, $url_param_retour) { |
global $REMOTE_ADDR, $afficher_texte, $_COOKIE, $_POST; |
// Recuperer les donnees postees du formulaire ou, a defaut, du contexte |
foreach (array('id_article', 'id_breve', 'id_syndic', |
'id_rubrique', 'id_forum') as $id) |
if (isset($_POST['forum_'.$id])) |
$$id = intval($_POST['forum_'.$id]); |
else |
$$id = intval($$id); |
// url de reference |
if (!$url) { |
$url = new Link(); |
$url = $url->getUrl(); |
} else { |
// identifiants des parents |
$args = array(); |
if ($id_rubrique) $args[] = "id_rubrique=$id_rubrique"; |
if ($id_forum) $args[] = "id_forum=$id_forum"; |
if ($id_article) $args[] = "id_article=$id_article"; |
if ($id_breve) $args[] = "id_breve=$id_breve"; |
if ($id_syndic) $args[] = "id_syndic=$id_syndic"; |
if (count($args)) |
$url .= (strpos($url,'?') ? '&' : '?'). join('&',$args); |
} |
$url = ereg_replace("[?&]var_erreur=[^&]*", '', $url); |
$url = ereg_replace("[?&]var_login=[^&]*", '', $url); |
$url = ereg_replace("[?&]url=[^&]*", '', $url); |
// verifier l'identite des posteurs pour les forums sur abo |
if (($forums_publics == "abo") && (!$GLOBALS["auteur_session"])) { |
return array('formulaire_login_forum', 0, array()); |
} |
// ne pas mettre '', sinon le squelette n'affichera rien. |
$previsu = ' '; |
// au premier appel (pas de Post-var nommee "retour_forum") |
// memoriser evntuellement l'URL de retour pour y revenir apres |
// envoi du message ; aux appels suivants, reconduire la valeur. |
// Initialiser aussi l'auteur |
if (!$retour_forum = rawurldecode(_request('retour_forum'))) { |
if ($retour_forum = rawurldecode(_request('retour'))) |
$retour_forum = str_replace('&var_mode=recalcul','',$retour_forum); |
else { |
// par defaut, on veut prendre url_forum(), mais elle ne sera connue |
// qu'en sortie, on inscrit donc une valeur absurde ("!") |
$retour_forum = "!"; |
// sauf si on a passe un parametre en argument (exemple : {#SELF}) |
if($url_param_retour) |
$retour_forum = str_replace("&", "&", $url_param_retour); |
} |
if (isset($_COOKIE['spip_forum_user']) |
AND is_array($cookie_user = unserialize($_COOKIE['spip_forum_user']))) { |
$auteur = $cookie_user['nom']; |
$email_auteur = $cookie_user['email']; |
} else { |
$auteur = $GLOBALS['auteur_session']['nom']; |
$email_auteur = $GLOBALS['auteur_session']['email']; |
} |
} else { |
// Recuperer le message a previsualiser |
$titre = _request('titre'); |
$texte = _request('texte'); |
$auteur = _request('auteur'); |
$email_auteur = _request('email_auteur'); |
$nom_site_forum = _request('nom_site_forum'); |
$url_site = _request('url_site'); |
$ajouter_mot = _request('ajouter_mot'); // array |
// Verifier mots associes au message |
if (is_array($ajouter_mot)) |
$mots = preg_replace('/[^0-9,]/', '', join(',',$ajouter_mot)); |
else $mots = '0'; |
// affichage {par num type, type, num titre,titre} |
$result_mots = spip_query("SELECT id_mot, titre, type |
FROM spip_mots |
WHERE id_mot IN ($mots) |
ORDER BY 0+type,type,0+titre,titre"); |
if (spip_num_rows($result_mots)>0) { |
$mots_forums = "<p>"._T('forum_avez_selectionne')."</p><ul>"; |
while ($row = spip_fetch_array($result_mots)) { |
$les_mots[$row['id_mot']] = "checked='checked'"; |
$presence_mots = true; |
$mots_forums .= "<li style='font-size: 80%;'> " |
. typo($row['type']) . " : <b>" |
. typo($row['titre']) ."</b></li>"; |
} |
$mots_forums .= '</ul>'; |
} |
// |
// Preparer la previsualisation |
// |
if ($afficher_texte != 'non') { |
if (strlen($texte) < 10 AND !$presence_mots) |
$erreur = _T('forum_attention_dix_caracteres'); |
else if (strlen($titre) < 3 AND $afficher_texte <> "non") |
$erreur = _T('forum_attention_trois_caracteres'); |
else |
$bouton = _T('forum_message_definitif'); |
$previsu = inclure_balise_dynamique( |
array( |
'formulaire_forum_previsu', |
0, |
array( |
'titre' => interdire_scripts(typo($titre)), |
'email_auteur' => $email_auteur, |
'auteur' => interdire_scripts(typo($auteur)), |
'texte' => propre($texte), |
'url_site' => $url_site, |
'nom_site_forum' => |
interdire_scripts(typo($nom_site_forum)), |
'mots_forum' => $mots_forum, |
'erreur' => $erreur, |
'bouton' => $bouton |
) |
), false); |
// supprimer les <form> de la previsualisation |
// (sinon on ne peut pas faire <cadre>...</cadre> dans les forums) |
$previsu = preg_replace("@<(/?)f(orm[>[:space:]])@ism", |
"<\\1no-f\\2", $previsu); |
} |
// Une securite qui nous protege contre : |
// - les doubles validations de forums (derapages humains ou des brouteurs) |
// - les abus visant a mettre des forums malgre nous sur un article (??) |
// On installe un fichier temporaire dans _DIR_SESSIONS (et pas _DIR_CACHE |
// afin de ne pas bugguer quand on vide le cache) |
// Le lock est leve au moment de l'insertion en base (inc-messforum.php3) |
// Ce systeme n'est pas fonctionnel pour les forums sans previsu (notamment |
// si $afficher_texte = 'non') |
$alea = preg_replace('/[^0-9]/', '', $alea); |
if(!$alea OR !@file_exists(_DIR_SESSIONS."forum_$alea.lck")) { |
while ( |
# astuce : mt_rand pour autoriser les hits simultanes |
$alea = time() + @mt_rand() |
AND @file_exists($f = _DIR_SESSIONS."forum_$alea.lck")) {}; |
spip_touch ($f); |
} |
# et maintenant on purge les locks de forums ouverts depuis > 4 h |
if ($dh = @opendir(_DIR_SESSIONS)) |
while (($file = @readdir($dh)) !== false) |
if (preg_match('/^forum_([0-9]+)\.lck$/', $file) |
AND (time()-@filemtime(_DIR_SESSIONS.$file) > 4*3600)) |
@unlink(_DIR_SESSIONS.$file); |
$hash = calculer_action_auteur("ajout_forum $id_rubrique $id_forum $id_article $id_breve $id_syndic $alea"); |
} |
// Faut-il ajouter des propositions de mots-cles |
if ($table AND (lire_meta("mots_cles_forums") == "oui")) |
$table = table_des_mots($table, $les_mots); |
else |
$table = ''; |
// preparer les parametres du forum en input hidden |
$parametres_forum = ''; |
foreach (array('alea', 'hash', 'retour_forum') as $var) |
if ($val = entites_html($$var)) |
$parametres_forum .= |
"<input type='hidden' name='$var' value=\"$val\" />\n"; |
foreach (array( |
'id_article', 'id_breve', 'id_syndic', 'id_rubrique', 'id_forum') |
as $var) |
if ($val = $$var) |
$parametres_forum .= |
"<input type='hidden' name='forum_$var' value='$val' />\n"; |
return array('formulaire_forum', 0, |
array( |
'auteur' => $auteur, |
'disabled' => ($forums_publics == "abo")? " disabled='disabled'" : '', |
'email_auteur' => $email_auteur, |
'modere' => (($forums_publics != 'pri') ? '' : _T('forum_info_modere')), |
'nom_site_forum' => $nom_site_forum, |
'previsu' => $previsu, |
'table' => $table, |
'texte' => $texte, |
'titre' => extraire_multi($titre), |
'url' => $url, |
'url_site' => ($url_site ? $url_site : "http://"), |
'parametres_forum' => $parametres_forum, |
## gestion des la variable de personnalisation $afficher_texte |
# mode normal : afficher le texte en < input text >, cf. squelette |
'afficher_texte_input' => (($afficher_texte <> 'non') ? ' ' : ''), |
# mode 'non' : afficher les elements en < input hidden > |
'afficher_texte_hidden' => (($afficher_texte <> 'non') ? '' : |
(boutonne('hidden', 'titre', htmlspecialchars($titre)) . |
$table . |
"\n<br /><div align='right'>" . |
boutonne('submit', '', _T('forum_valider'), |
"class='spip_bouton'") . |
"</div>")) |
)); |
} |
function barre_forum($texte) |
{ |
include_ecrire('inc_layer.php3'); |
if (!$GLOBALS['browser_barre']) |
return "<textarea name='texte' rows='12' class='forml' cols='40'>$texte</textarea>"; |
static $num_formulaire = 0; |
$num_formulaire++; |
include_ecrire('inc_barre.php3'); |
return afficher_barre("document.getElementById('formulaire_$num_formulaire')", true) . |
" |
<textarea name='texte' rows='12' class='forml' cols='40' |
id='formulaire_$num_formulaire' |
onselect='storeCaret(this);' |
onclick='storeCaret(this);' |
onkeyup='storeCaret(this);' |
ondbclick='storeCaret(this);'>$texte</textarea>"; |
} |
// Mots-cles dans les forums : |
// Si la variable de personnalisation $afficher_groupe[] est definie |
// dans le fichier d'appel, et si la table de reference est OK, proposer |
// la liste des mots-cles |
function table_des_mots($table, $les_mots) { |
global $afficher_groupe; |
if (!is_array($afficher_groupe)) return; |
$in_group = " AND id_groupe IN (" . join($afficher_groupe, ", ") .")"; |
$result_groupe = spip_query("SELECT * FROM spip_groupes_mots |
WHERE forum = 'oui' AND $table = 'oui'". $in_group); |
$ret = ''; |
while ($row_groupe = spip_fetch_array($result_groupe)) { |
$id_groupe = $row_groupe['id_groupe']; |
$titre_groupe = propre($row_groupe['titre']); |
$unseul = ($row_groupe['unseul']== 'oui') ? 'radio' : 'checkbox'; |
$result =spip_query("SELECT * FROM spip_mots |
WHERE id_groupe='$id_groupe'"); |
$total_rows = spip_num_rows($result); |
if ($total_rows > 0) { |
$ret .= "\n<p />" |
. "<div class='spip_encadrer' style='font-size: 80%;'>" |
. "<b>$titre_groupe :</b>" |
. "<table cellpadding='0' cellspacing='0' border='0' width='100%'>\n" |
."<tr><td width='47%' valign='top'>"; |
$i = 0; |
while ($row = spip_fetch_array($result)) { |
$id_mot = $row['id_mot']; |
$titre_mot = propre($row['titre']); |
$descriptif_mot = propre($row['descriptif']); |
if ($i >= ($total_rows/2) AND $i < $total_rows) { |
$i = $total_rows + 1; |
$ret .= "</td><td width='6%'> </td> |
<td width='47%' valign='top'>"; |
} |
$ret .= boutonne($unseul, "ajouter_mot[]", $id_mot, "id='mot$id_mot' " . $les_mots[$id_mot]) . |
afficher_petits_logos_mots($id_mot) |
. "<b><label for='mot$id_mot'>$titre_mot</label></b><br />"; |
if ($descriptif_mot) |
$ret .= "$descriptif_mot<br />"; |
$i++; |
} |
$ret .= "</td></tr></table>"; |
$ret .= "</div>"; |
} |
} |
return $ret; |
} |
function afficher_petits_logos_mots($id_mot) { |
include_ecrire('inc_logos.php3'); |
$on = cherche_image_nommee("moton$id_mot"); |
if ($on) { |
$image = ("$on[0]$on[1].$on[2]"); |
$taille = @getimagesize($image); |
$largeur = $taille[0]; |
$hauteur = $taille[1]; |
if ($largeur < 100 AND $hauteur < 100) |
return "<img src='$image' align='middle' width='$largeur' |
height='$hauteur' hspace='1' vspace='1' alt=' ' border='0' |
class='spip_image' /> "; |
} |
} |
/*******************************************************/ |
/* FONCTIONS DE CALCUL DES DONNEES DU FORMULAIRE FORUM */ |
/*******************************************************/ |
// |
// Chercher le titre et la configuration du forum de l'element auquel on repond |
// |
function sql_recherche_donnees_forum ($idr, $idf, $ida, $idb, $ids) { |
// changer la table de reference s'il y a lieu (pour afficher_groupes[] !!) |
if ($ida) { |
$r = "SELECT titre FROM spip_articles WHERE id_article = $ida"; |
$table = "articles"; |
} else if ($idb) { |
$r = "SELECT titre FROM spip_breves WHERE id_breve = $idb"; |
$table = "breves"; |
} else if ($ids) { |
$r = "SELECT nom_site AS titre FROM spip_syndic WHERE id_syndic = $ids"; |
$table = "syndic"; |
} else if ($idr) { |
$r = "SELECT titre FROM spip_rubriques WHERE id_rubrique = $idr"; |
$table = "rubriques"; |
} |
if ($idf) |
$r = "SELECT titre FROM spip_forum WHERE id_forum = $idf"; |
if ($r) { |
list($titre) = spip_fetch_array(spip_query($r)); |
$titre = '> ' . supprimer_numero(preg_replace('/^[> ]*/', '', $titre)); |
} else { |
$titre = _T('forum_titre_erreur'); |
$table = ''; |
} |
// quelle est la configuration du forum ? |
if ($ida) |
list($accepter_forum) = spip_fetch_array(spip_query( |
"SELECT accepter_forum FROM spip_articles WHERE id_article=$ida")); |
if (!$accepter_forum) |
$accepter_forum = substr(lire_meta("forums_publics"),0,3); |
// valeurs possibles : 'pos'teriori, 'pri'ori, 'abo'nnement |
if ($accepter_forum == "non") |
return false; |
return array ($titre, $table, $accepter_forum); |
} |
?> |
/tags/v4.0/actu/formulaires/inc-login_prive.php3 |
---|
New file |
0,0 → 1,31 |
<?php |
if (!defined("_ECRIRE_INC_VERSION")) return; #securite |
include_local(find_in_path("inc-login_public.php3")); |
global $balise_LOGIN_PRIVE_collecte; |
$balise_LOGIN_PRIVE_collecte = array('url'); |
# retourner: |
# 1. l'url collectee ci-dessus (args0) ou donnee en filtre (filtre0) |
# 2. l'eventuel parametre de la balise (args1) fournie par |
# calculer_balise_dynamique, en l'occurence le #LOGIN courant si l'on |
# programme une <boucle(AUTEURS)>[(#LOGIN_PRIVE{#LOGIN})] |
function balise_LOGIN_PRIVE_stat ($args, $filtres) { |
if (!$cible = $filtres[0]) |
$cible = $args[0]; |
$login = $args[1]; |
return array($cible, $login); |
} |
function balise_LOGIN_PRIVE_dyn($cible, $login) { |
return |
login_explicite($login, $cible); |
} |
?> |
/tags/v4.0/actu/formulaires/formulaire_login.html |
---|
New file |
0,0 → 1,74 |
[(#ENV{echec_cookie}) |
<h3 class="spip"><:avis_erreur_cookie:></h3> |
<strong><:login_cookie_oblige:></strong> |
<:login_cookie_accepte:><p /> |
] |
<div style="font-family: Verdana,arial,helvetica,sans-serif; font-size: 12px;"> |
<script type="text/javascript" src="ecrire/md5.js"></script> |
<form id="login[_(#ENV{login})]" |
action="[(#ENV{action2})]" |
method="post"[(#ENV{source}|=={spip}|?{' ',''}) |
onsubmit='if (this.session_password.value) { |
this.session_password_md5.value = calcMD5("[(#ENV{alea_actuel})]" + this.session_password.value); |
this.next_session_password_md5.value = calcMD5("[(#ENV{alea_futur})]" + this.session_password.value); |
this.session_password.value = ""; |
}']> |
<div class="spip_encadrer" style="[(#URL_SITE_SPIP|style_align)]">[ |
<div class="reponse_formulaire">(#ENV*{erreur})<br /><br /></div> |
][ |
<label for='var_login'><strong><:login_login2:></strong><br />(#ENV{login}|?{'',' '}) |
<input type="text" id='var_login' name="var_login" class="forml" value="" size="40" /> |
</label> |
][ |
<div> |
[<div style="float: #LANG_RIGHT; padding-#LANG_LEFT: 10px;"><img src="(#ENV{id_auteur}|silogoauteur)" |
width="75" |
alt="[(#ENV{login_alt})]" /></div>] |
<input type="hidden" name="session_login_hidden" value="(#ENV{login})" /> |
<script type="text/javascript"><!-- |
document.write("<:login_login:> <strong>[(#ENV{login_alt})]<" + "/strong><br />[<a style='color: #e86519' href='spip_cookie.php3?cookie_admin=non[&url=(#ENV{url})][&retour=(#ENV{self}|urlencode)]'><font size='2'><:login_autre_identifiant:><" + "/font><" + "/a>]") |
//--></script> |
<noscript> |
<p class='notes' style='font-size: 130%'> |
<:login_non_securise:> |
<a href="[(#ENV{action})]"><:login_recharger:></a>. |
</p> |
<label><strong><:login_login2:></strong><br /> |
<input type='text' name='session_login' class='forml' [value="(#ENV{login})" ]size='40' /> |
</label> |
</noscript> |
</div> |
<p> |
<label><strong><:login_pass2:></strong> |
<input type="password" name="session_password"[ id="var_login_(#ENV{login})"] class="forml" style="width: 140px;" value="" size="20" /> |
</label> |
<br /> <input type="checkbox" |
name="session_remember" |
id="session[_(#ENV{login})]" |
value="oui"[(#ENV*{prefs}|filtre_rester_connecte)checked="checked"]/> |
<label for="session[_(#ENV{login})]"><:login_rester_identifie:></label> |
</p> |
<input type="hidden" name="session_password_md5" value="" /> |
<input type="hidden" name="next_session_password_md5" value="" /> |
<input type="hidden" name="essai_login" value="oui" /> |
] <input type="hidden" name="url" value="[(#ENV{url})]" /> |
<div style="text-align: right"><input type="submit" class="spip_bouton" value="<:bouton_valider:>" /></div> |
</div> |
</form> |
<script type="text/javascript"><!-- |
document.getElementById('var_login[_(#ENV{login})]').focus(); |
--></script>[ |
<form action="(#ENV{auth_http})" method="get"> |
<fieldset> |
<div> |
<:login_preferez_refuser:> |
<input type="hidden" name="essai_auth_http" value="oui"/> |
[<input type="hidden" name="url" value="(#ENV{url})"/>] |
</div> |
<div style="text-align: right"><input type="submit" class="spip_bouton" value="<:login_sans_cookiie:>"/></div> |
</fieldset> |
</form> |
] |
</div> |
/tags/v4.0/actu/formulaires/formulaire_oubli.html |
---|
New file |
0,0 → 1,37 |
[ |
(#ENV*{message}) |
][ |
(#ENV*{message}|?{'',' '}) |
<form id="oubli_form" action='spip_pass.php3' method='post'> |
<fieldset style="border: none;"> |
<legend><:pass_nouveau_pass:></legend>[ |
<input type='hidden' name="p" value="(#ENV{p})" /> |
<label> |
<:pass_choix_pass:> |
<input type="password" name="oubli" /> |
</label>][ |
(#ENV{p}|?{'',' '}) |
<label> |
<:pass_indiquez_cidessous:> |
<input type="texte" name="oubli" /> |
</label>] |
<input type="submit" class="fondl" value="<:pass_ok:>" /> |
</fieldset> |
</form> |
] |
<br /> |
<div align="right"> |
<script type="text/javascript"><!-- |
[ |
(#ENV*{message}|?{'',' '}) |
document.oubli_form.oubli.focus() |
] |
document.write("<a href='") |
document.write((window.opener) ? "javascript:close()" : "./") |
document.write("'><:pass_quitter_fenetre:><" + "/a>"); |
//--></script> |
<noscript> |
[<a href='./'><:pass_retour_public:></a>] |
</noscript> |
</div> |
<br /> |
/tags/v4.0/actu/formulaires/inc-formulaire_ecrire_auteur.php3 |
---|
New file |
0,0 → 1,85 |
<?php |
if (!defined("_ECRIRE_INC_VERSION")) return; #securite |
// On prend l'email dans le contexte de maniere a ne pas avoir a le |
// verifier dans la base ni a le devoiler au visiteur |
global $balise_FORMULAIRE_ECRIRE_AUTEUR_collecte; |
$balise_FORMULAIRE_ECRIRE_AUTEUR_collecte = array('id_auteur', 'id_article', 'email'); |
function balise_FORMULAIRE_ECRIRE_AUTEUR_stat($args, $filtres) { |
// Pas d'id_auteur ni d'id_article ? Erreur de squelette |
if (!$args[0] AND !$args[1]) |
return erreur_squelette( |
_T('zbug_champ_hors_motif', |
array ('champ' => '#FORMULAIRE_ECRIRE_AUTEUR', |
'motif' => 'AUTEURS/ARTICLES')), ''); |
// Si on est dans un contexte article, sortir tous les mails des auteurs |
// de l'article |
if (!$args[0] AND $args[1]) { |
unset ($args[2]); |
$s = spip_query("SELECT auteurs.email AS email |
FROM spip_auteurs as auteurs, spip_auteurs_articles as lien |
WHERE lien.id_article=".intval($args[1]) |
. " AND auteurs.id_auteur = lien.id_auteur"); |
while ($row = spip_fetch_array($s)) |
if ($row['email'] AND email_valide($row['email'])) |
$args[2].= ','.$row['email']; |
$args[2] = substr($args[2], 1); |
} |
// On ne peut pas ecrire a un auteur dont le mail n'est pas valide |
if (!$args[2] OR !email_valide($args[2])) |
return ''; |
// OK |
return $args; |
} |
function balise_FORMULAIRE_ECRIRE_AUTEUR_dyn($id_auteur, $id_article, $mail) { |
include_ecrire('inc_texte.php3'); |
$puce = $GLOBALS['puce'.$GLOBALS['spip_lang_rtl']]; |
// id du formulaire (pour en avoir plusieurs sur une meme page) |
$id = ($id_auteur ? '_'.$id_auteur : '_ar'.$id_article); |
#spip_log("id formulaire = $id, "._request("valide".$id)); |
$sujet = _request('sujet_message_auteur'.$id); |
$texte = _request('texte_message_auteur'.$id); |
$adres = _request('email_message_auteur'.$id); |
$mailko = $texte && !email_valide($adres); |
$validable = $texte && $sujet && (!$mailko); |
// doit-on envoyer le mail ? |
if ($validable |
AND $id == _request('num_formulaire_ecrire_auteur') |
AND _request('confirmer'.$id)) { |
$texte .= "\n\n-- "._T('envoi_via_le_site')." ".supprimer_tags(extraire_multi(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 _T('form_prop_message_envoye'); |
} |
return |
array('formulaire_ecrire_auteur', 0, |
array( |
'id' => $id, |
'mailko' => $mailko ? $puce : '', |
'mail' => $adres, |
'sujetko' => ($texte && !$sujet) ? $puce : '', |
'sujet' => $sujet, |
'texte' => $texte, |
'valide' => ($validable ? $id : ''), |
'bouton' => (_T('form_prop_envoyer')), |
'boutonconfirmation' => ($validable ? |
_T('form_prop_confirmer_envoi') : |
'') |
) |
); |
} |
?> |
/tags/v4.0/actu/formulaires/inc-formulaire_inscription.php3 |
---|
New file |
0,0 → 1,166 |
<?php |
if (!defined("_ECRIRE_INC_VERSION")) return; #securite |
include_ecrire('inc_abstract_sql.php3'); |
// Balise independante du contexte |
global $balise_FORMULAIRE_INSCRIPTION_collecte ; |
$balise_FORMULAIRE_INSCRIPTION_collecte = array(); |
// args[0] est le parametre 'focus' -- [(#FORMULAIRE_INSCRIPTION{focus})] |
function balise_FORMULAIRE_INSCRIPTION_stat($args, $filtres) { |
if (lire_meta('accepter_inscriptions') != 'oui') |
return ''; |
else |
return array('redac', ($args[0] == 'focus' ? 'nom_inscription' : '')); |
} |
function balise_FORMULAIRE_INSCRIPTION_dyn($mode, $focus) { |
// Si une inscription est autorisee, on enregistre le demandeur |
// comme 'nouveau' et on lui envoie ses codes par email ; lors de |
// sa premiere connexion il obtiendra son statut final (auth->activer()) |
if (!(($mode == 'redac' AND lire_meta('accepter_inscriptions') == 'oui') |
OR ($mode == 'forum' AND ( |
lire_meta('accepter_visiteurs') == 'oui' |
OR lire_meta('forums_publics') == 'abo' |
) |
))) |
return _T('pass_rien_a_faire_ici'); |
// recuperer les donnees envoyees |
$mail_inscription = trim(_request('mail_inscription')); |
$nom_inscription = _request('nom_inscription'); |
if (!$nom_inscription) |
$message = ''; |
elseif (!test_mail_ins($mode, $mail_inscription)) |
$message = _T('info_email_invalide'); |
else $message = message_inscription($mail_inscription, |
$nom_inscription, |
false, |
($mode == 'forum') ? |
'form_forum_voici1' : |
'form_forum_voici2'); |
return array("formulaire_inscription", $GLOBALS['delais'], |
array('focus' => $focus, |
'target' => _request('target'), |
'message' => $message, |
'mode' => $mode, |
'self' => $GLOBALS["clean_link"]->getUrl() |
)); |
} |
// fonction qu'on peut redefinir pour filtrer selon l'adresse mail |
// cas general: controler juste que l'adresse n'est pas vide et est valide |
function test_mail_ins($mode, $mail) { |
return ($mail = trim($mail)) AND email_valide($mail); |
} |
// creer un nouvel utilisateur et lui envoyer un mail avec ses identifiants |
function message_inscription($mail_inscription, $nom_inscription, $force, $mode) { |
$s = spip_query("SELECT statut, id_auteur, login |
FROM spip_auteurs WHERE email='".addslashes($mail_inscription)."'"); |
$row = spip_fetch_array($s); |
if (!$row) { |
// il n'existe pas, creer les identifiants |
$login = test_login($nom_inscription, $mail_inscription); |
$pass = creer_pass_pour_auteur(spip_abstract_insert('spip_auteurs', |
'(nom, email, login, statut)', |
"('". |
addslashes($nom_inscription) . |
"', '". |
addslashes($mail_inscription) . |
"', '" . |
$login . |
"', 'nouveau')")); |
return envoyer_inscription($mail_inscription, 'nouveau', $mode, $login, $pass, $nom_inscription); |
} else { |
// existant mais encore muet, ou ressucite: renvoyer les infos |
if ((($row['statut'] == 'nouveau') && !$force) || |
(($row['statut'] == '5poubelle') && $force)) { |
// recreer le pass |
$pass = creer_pass_pour_auteur($row['id_auteur']); |
return envoyer_inscription($mail_inscription, $row['statut'], $mode, |
$row['login'], $pass, $nom_inscription); |
} else { |
// irrecuperable |
if ($row['statut'] == '5poubelle') |
return_T('form_forum_access_refuse'); |
else |
// deja inscrit |
return _T('form_forum_email_deja_enregistre'); |
} |
} |
} |
// envoyer identifiants par mail |
function envoyer_inscription($mail, $statut, $mode, $login, $pass, $nom) { |
$nom_site_spip = lire_meta("nom_site"); |
$adresse_site = lire_meta("adresse_site"); |
$message = _T('form_forum_message_auto')."\n\n" |
. _T('form_forum_bonjour', array('nom'=>$nom))."\n\n" |
. _T($mode, array('nom_site_spip' => $nom_site_spip, 'adresse_site' => $adresse_site)) . "\n\n" |
. "- "._T('form_forum_login')." $login\n" |
. "- "._T('form_forum_pass')." $pass\n\n"; |
include_ecrire("inc_mail.php3"); |
if (envoyer_mail($mail, |
"[$nom_site_spip] "._T('form_forum_identifiants'), |
$message)) |
return _T('form_forum_identifiant_mail'); |
else |
return _T('form_forum_probleme_mail'); |
} |
function test_login($nom, $mail) { |
include_ecrire('inc_charsets.php3'); |
$nom = strtolower(translitteration($nom)); |
$login_base = ereg_replace("[^a-zA-Z0-9_]", "_", $nom); |
// il faut eviter que le login soit vraiment trop court |
if (strlen($login_base) < 3) { |
$mail = strtolower(translitteration(preg_replace('/@.*/', '', $mail))); |
$login_base = ereg_replace("[^a-zA-Z0-9]", "_", $nom); |
} |
if (strlen($login_base) < 3) |
$login_base = 'user'; |
// eviter aussi qu'il soit trop long (essayer d'attraper le prenom) |
if (strlen($login_base) > 10) { |
$login_base = preg_replace("/^(.{4,}(_.{1,7})?)_.*/", |
'\1', $login_base); |
$login_base = substr($login_base, 0,13); |
} |
$login = $login_base; |
for ($i = 1; ; $i++) { |
if (!spip_num_rows(spip_query("SELECT id_auteur FROM spip_auteurs WHERE login='$login' LIMIT 1"))) |
return $login; |
$login = $login_base.$i; |
} |
} |
function creer_pass_pour_auteur($id_auteur) { |
include_ecrire("inc_acces.php3"); |
$pass = creer_pass_aleatoire(8, $id_auteur); |
$mdpass = md5($pass); |
$htpass = generer_htpass($pass); |
spip_query("UPDATE spip_auteurs |
SET pass='$mdpass', htpass='$htpass' |
WHERE id_auteur = ".$id_auteur); |
ecrire_acces(); |
return $pass; |
} |
?> |
/tags/v4.0/actu/formulaires/inc-formulaire_signature.php3 |
---|
New file |
0,0 → 1,292 |
<?php |
if (!defined("_ECRIRE_INC_VERSION")) return; #securite |
// |
// Formulaire de signature d'une petition |
// |
// Contexte necessaire lors de la compilation |
// Il *faut* demander petition, meme si on ne s'en sert pas dans l'affichage, |
// car on doit obtenir la jointure avec sql_petitions pour verifier si |
// une petition est attachee a l'article |
global $balise_FORMULAIRE_SIGNATURE_collecte; |
$balise_FORMULAIRE_SIGNATURE_collecte = array('id_article', 'petition'); |
// Verification des arguments (contexte + filtres) |
function balise_FORMULAIRE_SIGNATURE_stat($args, $filtres) { |
// pas d'id_article => erreur de squelette |
if (!$args[0]) |
return erreur_squelette( |
_T('zbug_champ_hors_motif', |
array ('champ' => '#FORMULAIRE_SIGNATURE', |
'motif' => 'ARTICLES')), ''); |
// article sans petition => pas de balise |
else if (!$args[1]) |
return ''; |
else { |
// aller chercher dans la base la petition associee |
$s = spip_query("SELECT texte, site_obli, message |
FROM spip_petitions WHERE id_article = ".intval($args[0])); |
if ($r = spip_fetch_array($s)) { |
$args[2] = $r['texte']; |
// le signataire doit-il donner un site ? |
$args[3] = ($r['site_obli'] == 'oui') ? '':' '; |
// le signataire peut-il proposer un commentaire |
$args[4] = ($r['message'] == 'oui') ? ' ':''; |
} |
return $args; |
} |
} |
// Executer la balise |
function balise_FORMULAIRE_SIGNATURE_dyn($id_article, $petition, $texte, $site_obli, $message) { |
if (_request('var_confirm')) # _GET |
return reponse_confirmation($id_article); |
else if (_request('nom_email') AND _request('adresse_email')) # _POST |
return reponse_signature($id_article, |
_request('nom_email'), _request('adresse_email'), |
_request('message'), _request('signature_nom_site'), |
_request('signature_url_site'), _request('url_page') |
); |
else { |
return array('formulaire_signature', $GLOBALS['delais'], |
array( |
'id_article' => $id_article, |
'petition' => $petition, |
'texte' => $texte, |
'site_obli' => $site_obli, |
'message' => $message, |
'self' => $GLOBALS["clean_link"]->getUrl() |
)); |
} |
} |
// Retour a l'ecran du lien de confirmation d'une signature de petition. |
// Si var_confirm est non vide, c'est l'appel en debut de inc-public |
// pour vider le cache au demarrage afin que la nouvelle signature apparaisse. |
// Sinon, c'est l'execution du formulaire et on retourne le message |
// de confirmation ou d'erreur construit lors de l'appel par inc-public. |
function reponse_confirmation($id_article, $var_confirm = '') { |
static $confirm = ''; |
if (!$var_confirm) return $confirm; |
include_local(_FILE_CONNECT); |
if ($GLOBALS['db_ok']) { |
include_ecrire("inc_texte.php3"); |
include_ecrire("inc_filtres.php3"); |
// Eviter les doublons |
$lock = "petition $id_article $var_confirm"; |
if (!spip_get_lock($lock, 5)) { |
$confirm= _T('form_pet_probleme_technique'); |
} |
else { |
$query_sign = "SELECT * FROM spip_signatures WHERE statut='".addslashes($var_confirm)."'"; |
$result_sign = spip_query($query_sign); |
if (spip_num_rows($result_sign) > 0) { |
while($row = spip_fetch_array($result_sign)) { |
$id_signature = $row['id_signature']; |
$id_article = $row['id_article']; |
$date_time = $row['date_time']; |
$nom_email = $row['nom_email']; |
$adresse_email = $row['ad_email']; |
$nom_site = $row['nom_site']; |
$url_site = $row['url_site']; |
$message = $row['message']; |
$statut = $row['statut']; |
} |
$query_petition = "SELECT * FROM spip_petitions WHERE id_article=$id_article"; |
$result_petition = spip_query($query_petition); |
while ($row = spip_fetch_array($result_petition)) { |
$id_article = $row['id_article']; |
$email_unique = $row['email_unique']; |
$site_obli = $row['site_obli']; |
$site_unique = $row['site_unique']; |
$message_petition = $row['message']; |
$texte_petition = $row['texte']; |
} |
if ($email_unique == "oui") { |
$email = addslashes($adresse_email); |
$query = "SELECT * FROM spip_signatures WHERE id_article=$id_article AND ad_email='$email' AND statut='publie'"; |
$result = spip_query($query); |
if (spip_num_rows($result) > 0) { |
$confirm= (_T('form_pet_deja_signe')); |
$refus = "oui"; |
} |
} |
if ($site_unique == "oui") { |
$site = addslashes($url_site); |
$query = "SELECT * FROM spip_signatures WHERE id_article=$id_article AND url_site='$site' AND statut='publie'"; |
$result = spip_query($query); |
if (spip_num_rows($result) > 0) { |
$confirm= (_T('form_pet_deja_enregistre')); |
$refus = "oui"; |
} |
} |
if ($refus == "oui") { |
$confirm= (_T('form_deja_inscrit')); |
} |
else { |
$query = "UPDATE spip_signatures |
SET statut='publie', date_time=NOW() |
WHERE id_signature='$id_signature'"; |
$result = spip_query($query); |
// invalider les pages ayant des boucles signatures |
include_ecrire('inc_invalideur.php3'); |
include_ecrire('inc_meta.php3'); |
suivre_invalideur("id='varia/pet$id_article'"); |
$confirm= (_T('form_pet_signature_validee')); |
} |
} |
else { |
$confirm= (_T('form_pet_aucune_signature')); |
} |
spip_release_lock($lock); |
} |
} |
else { |
$confirm= _T('form_pet_probleme_technique'); |
} |
} |
// |
// Retour a l'ecran de la signature d'une petition |
// |
function reponse_signature($id_article, $nom_email, $adresse_email, $message, $nom_site, $url_site, $url_page) { |
if ($GLOBALS['db_ok']) { |
include_ecrire("inc_texte.php3"); |
include_ecrire("inc_filtres.php3"); |
include_ecrire("inc_mail.php3"); |
// Eviter les doublons |
$lock = "petition $id_article $adresse_email"; |
if (!spip_get_lock($lock, 5)) { |
return _T('form_pet_probleme_technique'); |
} else { |
$query_petition = "SELECT * FROM spip_petitions WHERE id_article=$id_article"; |
$result_petition = spip_query($query_petition); |
while ($row = spip_fetch_array($result_petition)) { |
$id_article = $row['id_article']; |
$email_unique = $row['email_unique']; |
$site_obli = $row['site_obli']; |
$site_unique = $row['site_unique']; |
$message_petition = $row['message']; |
$texte_petition = $row['texte']; |
} |
if (strlen($nom_email) < 2) { |
return _T('form_indiquer_nom'); |
} |
if ($adresse_email == _T('info_mail_fournisseur')) { |
return _T('form_indiquer_email'); |
} |
if ($email_unique == "oui") { |
$email = addslashes($adresse_email); |
$query = "SELECT * FROM spip_signatures WHERE id_article=$id_article AND ad_email='$email' AND statut='publie'"; |
$result = spip_query($query); |
if (spip_num_rows($result) > 0) { |
return _T('form_pet_deja_signe'); |
} |
} |
if (!email_valide($adresse_email)) { |
return _T('form_email_non_valide'); |
} |
if ($site_obli == "oui") { |
if (!$nom_site) { |
return _T('form_indiquer_nom_site'); |
} |
include_ecrire("inc_sites.php3"); |
if (!recuperer_page($url_site)) { |
return _T('form_pet_url_invalide'); |
} |
} |
if ($site_unique == "oui") { |
$site = addslashes($url_site); |
$query = "SELECT * FROM spip_signatures WHERE id_article=$id_article AND url_site='$site' AND (statut='publie' OR statut='poubelle')"; |
$result = spip_query($query); |
if (spip_num_rows($result) > 0) { |
return _T('form_pet_site_deja_enregistre'); |
} |
} |
$passw = test_pass(); |
if ($refus == "oui") { |
return _T('form_pet_signature_pasprise'); |
} |
else { |
$query_site = "SELECT titre FROM spip_articles WHERE id_article=$id_article"; |
$result_site = spip_query($query_site); |
while ($row = spip_fetch_array($result_site)) { |
$titre = $row['titre']; |
} |
$link = new Link($url_page); |
$link->addVar('var_confirm', $passw); |
$url = $link->getUrl("sp$id_article"); |
$messagex = _T('form_pet_mail_confirmation', array('titre' => $titre, 'nom_email' => $nom_email, 'nom_site' => $nom_site, 'url_site' => $url_site, 'url' => $url)); |
if (envoyer_mail($adresse_email, _T('form_pet_confirmation')." ".$titre, $messagex)) { |
$nom_email = addslashes($nom_email); |
$adresse_email = addslashes($adresse_email); |
$nom_site = addslashes($nom_site); |
$url_site = addslashes($url_site); |
$message = addslashes($message); |
spip_query("INSERT INTO spip_signatures (id_article, date_time, nom_email, ad_email, nom_site, url_site, message, statut) VALUES ($id_article, NOW(), '$nom_email', '$adresse_email', '$nom_site', '$url_site', '$message', '$passw')"); |
return _T('form_pet_envoi_mail_confirmation'); |
} |
else { |
return _T('form_pet_probleme_technique'); |
} |
} |
spip_release_lock($lock); |
} |
} |
else { |
return _T('form_pet_probleme_technique'); |
} |
} |
function test_pass() { |
include_ecrire("inc_acces.php3"); |
for (;;) { |
$passw = creer_pass_aleatoire(); |
$query = "SELECT statut FROM spip_signatures WHERE statut='$passw'"; |
$result = spip_query($query); |
if (!spip_num_rows($result)) break; |
} |
return $passw; |
} |
?> |
/tags/v4.0/actu/formulaires/formulaire_login_forum.html |
---|
New file |
0,0 → 1,24 |
<!-- |
Formulaire de connexion pour les forums sur abonnement |
cf. inc-formulaire_forum.php3 |
--> |
<p><:forum_vous_enregistrer:> <:forum_vous_inscrire:></p> |
#LOGIN_PUBLIC |
<div align='center' style='font-family: Verdana,arial,helvetica,sans-serif; font-size: 12px;'> |
[<a href='spip_inscription.php3?mode=forum&focus=nom_inscription' |
target="spip_pass" |
onclick="javascript:window.open(this.href, 'spip_pass', 'scrollbars=yes, resizable=yes, width=480, height=500'); return false;"><:login_sinscrire:></a>] |
[<a |
href="spip_pass.php3" |
target="spip_pass" |
onclick="javascript:window.open(this.href, 'spip_pass', 'scrollbars=yes, resizable=yes, width=480, height=280'); return false;"><:login_motpasseoublie:></a>] |
</div> |
<br /> |
/tags/v4.0/actu/formulaires/inc-formulaire_site.php3 |
---|
New file |
0,0 → 1,51 |
<?php |
if (!defined("_ECRIRE_INC_VERSION")) return; #securite |
// Le contexte indique dans quelle rubrique le visiteur peut proposer le site |
global $balise_FORMULAIRE_SITE_collecte; |
$balise_FORMULAIRE_SITE_collecte = array('id_rubrique'); |
function balise_FORMULAIRE_SITE_stat($args, $filtres) { |
// Pas d'id_rubrique ? Erreur de squelette |
if (!$args[0]) |
return erreur_squelette( |
_T('zbug_champ_hors_motif', |
array ('champ' => '#FORMULAIRE_SITE', |
'motif' => 'RUBRIQUES')), ''); |
// Verifier que les visisteurs sont autorises a proposer un site |
return ((lire_meta("proposer_sites") != 2) ? '' : $args); |
} |
function balise_FORMULAIRE_SITE_dyn($id_rubrique) { |
if (!_request('nom_site')) |
return array('formulaire_site', $GLOBALS['delais'], |
array('self' => $GLOBALS["clean_link"]->getUrl() |
)); |
// Tester le nom du site |
if (strlen (_request('nom_site')) < 2){ |
return _T('form_prop_indiquer_nom_site'); |
} |
// Tester l'URL du site |
include_ecrire("inc_sites.php3"); |
if (!recuperer_page(_request('url_site'))) |
return _T('form_pet_url_invalide'); |
// Integrer a la base de donnees |
$nom_site = addslashes(_request('nom_site')); |
$url_site = addslashes(_request('url_site')); |
$description_site = addslashes(_request('description_site')); |
spip_query("INSERT INTO spip_syndic |
(nom_site, url_site, id_rubrique, descriptif, date, date_syndic, statut, syndication) |
VALUES ('$nom_site', '$url_site', $id_rubrique, '$description_site', NOW(), NOW(), 'prop', 'non')"); |
return _T('form_prop_enregistre'); |
} |
?> |
/tags/v4.0/actu/formulaires/inc-url_logout.php3 |
---|
New file |
0,0 → 1,26 |
<?php |
if (!defined("_ECRIRE_INC_VERSION")) return; #securite |
global $balise_URL_LOGOUT_collecte; |
$balise_URL_LOGOUT_collecte = array(); |
// filtres[0] = url destination apres logout [(#URL_LOGOUT|url)] |
function balise_URL_LOGOUT_stat ($args, $filtres) { |
return array($filtres[0]); |
} |
function balise_URL_LOGOUT_dyn($cible) { |
if (!$login = $GLOBALS['auteur_session']['login']) |
return ''; |
if (!$cible) { |
$link = new Link(); |
$cible = $link->getUrl(); |
} |
return 'spip_cookie.php3?logout_public=' . $login |
. '&url=' . urlencode($cible); |
} |
?> |
/tags/v4.0/actu/formulaires/inc-menu_lang_ecrire.php3 |
---|
New file |
0,0 → 1,63 |
<?php |
if (!defined("_ECRIRE_INC_VERSION")) return; #securite |
// Ce "menu_lang" collecte dans le contexte permet de forcer la langue |
// par defaut proposee dans le menu ; mais a quoi ca sert concretement ? |
global $balise_MENU_LANG_ECRIRE_collecte; |
$balise_MENU_LANG_ECRIRE_collecte = array('menu_lang'); |
// s'il n'y a qu'une langue proposee eviter definitivement la balise ?php |
function balise_MENU_LANG_ECRIRE_stat ($args, $filtres) { |
global $all_langs; |
include_ecrire('inc_lang.php3'); |
if (strpos($all_langs,',') === false) return ''; |
return $args; |
} |
// normalement $opt sera toujours non vide suite au test ci-dessus |
function balise_MENU_LANG_ECRIRE_dyn($default) { |
return menu_lang_pour_tous('var_lang_ecrire', $opt); |
} |
function menu_lang_pour_tous($nom, $opt) { |
include_ecrire("inc_lang.php3"); |
// Voir s'il y a une langue demandee par _request, |
// ou une langue par defaut dans le contexte {menu_lang=xx} |
$default = _request('lang'); |
lang_select($default); |
if ($GLOBALS['spip_lang'] <> $default) { |
$default = $menu_lang; |
lang_select($default); # et remplace |
if ($GLOBALS['spip_lang'] <> $default) |
unset ($default); # annule tout choix par defaut |
lang_dselect(); #annule la selection |
} |
lang_dselect(); |
$opt = liste_options_langues($nom, $default); |
if (!$opt) |
return ''; |
$site = lire_meta("adresse_site"); |
$post = ($site ? $site : '..') . "/spip_cookie.php3"; |
$cible = new Link('', /* racine */ true); # lien a partir de / |
$cible->delVar('lang'); |
$cible = $cible->getUrl(); |
$postcomplet = new Link($post); |
$postcomplet->addvar('url', $cible); |
return array('formulaire_menu_lang', |
3600, |
array('nom' => $nom, |
'url' => $post, |
'cible' => $cible, |
'retour' => $postcomplet->getUrl(), |
'langues' => $opt |
) |
); |
} |
?> |
/tags/v4.0/actu/formulaires/formulaire_admin.html |
---|
New file |
0,0 → 1,15 |
<div [class="(#ENV{divclass,spip-admin-bloc})" ]dir='#LANG_DIR'>[ |
<a href='(#ENV{analyser})' class='spip-admin-boutons'><:analyse_xml:>[(#ENV{xhtml_error}|?{' *',''})]</a>][ |
<a href='ecrire/articles.php3?id_article=(#ENV{id_article})' class='spip-admin-boutons'><:admin_modifier_article:> ([(#ENV{id_article})])</a>][ |
<a href='ecrire/breves_voir.php3?id_breve=(#ENV{id_breve})' class='spip-admin-boutons'><:admin_modifier_breve:> ([(#ENV{id_breve})])</a>][ |
<a href='ecrire/naviguer.php3?id_rubrique=(#ENV{id_rubrique})' class='spip-admin-boutons'><:admin_modifier_rubrique:> ([(#ENV{id_rubrique})])</a>][ |
<a href='ecrire/mots_edit.php3?id_mot=(#ENV{id_mot})' class='spip-admin-boutons'><:admin_modifier_mot:> |
([(#ENV{id_mot})])</a>][ |
<a href='ecrire/sites.php3?id_syndic=(#ENV{id_syndic})' class='spip-admin-boutons'><:icone_modifier_site:> ([(#ENV{id_syndic})])</a>][ |
<a href='ecrire/auteurs_edit.php3?id_auteur=(#ENV{id_auteur})' class='spip-admin-boutons'><:admin_modifier_auteur:> ([(#ENV{id_auteur})])</a>][ |
<a href='(#ENV{ecrire})/' class='spip-admin-boutons'><:espace_prive:></a>] |
<a href='[(#ENV{action})]var_mode=recalcul' class='spip-admin-boutons'><:admin_recalculer:>[(#ENV{use_cache})]</a>[ |
<a href='ecrire/(#ENV{statistiques})[id_article=(#ENV{id_article})]' class='spip-admin-boutons'>[<:info_visites:> (#ENV{visites})][; <:info_popularite_5:> (#ENV{popularite})]</a>][ |
<a href='[(#ENV{action})]var_mode=(#ENV{preview})' class='spip-admin-boutons'><:previsualisation:></a>][ |
<a href='[(#ENV{action})]var_mode=(#ENV{debug})' class='spip-admin-boutons'><:admin_debug:></a>] |
</div> |
/tags/v4.0/actu/formulaires/formulaire_forum.html |
---|
New file |
0,0 → 1,51 |
<form action="[(#ENV{url})]" method="post" name="formulaire">[ |
(#ENV*{parametres_forum}) |
][<p>(#ENV*{modere})</p> |
][(#ENV*{afficher_texte_hidden}) |
][(#ENV*{afficher_texte_input}) |
[(#ENV*{previsu}) |
<fieldset class="spip_encadrer"> |
<legend><b><:forum_titre:></b></legend> |
<label><input type="text" name="titre" |
[value="(#ENV{titre})" ]class="forml" size="40" /> |
</label> |
</fieldset> |
<br /> |
<fieldset class="spip_encadrer"> |
<legend><b><:forum_texte:></b></legend> |
<p><:info_creation_paragraphe:></p> |
[(#ENV{texte}|barre_forum)] |
</fieldset> |
<br /> |
[<p>(#ENV*{table})</p>] |
<fieldset class="spip_encadrer"> |
<legend><:forum_lien_hyper:></legend> |
<p><:forum_page_url:></p> |
<p><label><:forum_titre:> |
<input type="text" name="nom_site_forum" class="forml" size="40" |
value="[(#ENV{nom_site_forum})]" /> |
</label></p> |
<p><label><:forum_url:> |
<input type="text" name="url_site" class="forml" size="40" |
value="[(#ENV{url_site})]" /> |
</label></p> |
</fieldset> |
<br /> |
<fieldset class="spip_encadrer"> |
<legend><:forum_qui_etes_vous:></legend> |
<p><label><:forum_votre_nom:> |
<input type="text" name="auteur" value="[(#ENV{auteur})]" |
class="forml" size="40" [(#ENV{disabled})] /> |
</label></p> |
<p><label><:forum_votre_email:> |
<input type="text" name="email_auteur" |
value="[(#ENV{email_auteur})]" |
class="forml" size="40" [(#ENV{disabled})] /> |
</label></p> |
</fieldset> |
<br /> |
<div align="#LANG_RIGHT"> |
<input type="submit" value="<:forum_voir_avant:>" |
class="spip_bouton" /></div> |
] |
]</form> |
/tags/v4.0/actu/formulaires/formulaire_recherche.html |
---|
New file |
0,0 → 1,9 |
<form action="[(#ENV{lien})]" method="get" class="formrecherche"> |
<div> |
<input type="text" |
id="formulaire_recherche" |
class="formrecherche" |
name="recherche" |
value="[(#ENV*{recherche_securisee})]" /> |
</div> |
</form> |