Subversion Repositories Sites.tela-botanica.org

Compare Revisions

Ignore whitespace Rev 607 → Rev 608

/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 />&nbsp;][
<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;'>
 
&#91;<a href='spip_inscription.php3?mode=forum&amp;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>&#93;
 
&#91;<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>&#93;
 
</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
. '&amp;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:>&nbsp;(#ENV{visites})][;&nbsp;<:info_popularite_5:>&nbsp;(#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 />&nbsp;][
<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>
&#91;<a href='./'><:pass_retour_public:></a>&#93;
</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']) . "&nbsp;: <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') ? '&nbsp;' : ''),
# 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&nbsp;:</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%'>&nbsp;</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})]&amp;[(#ENV{nom})]='+this.options[this.selectedIndex].value">
[(#ENV*{langues})]
</select>
<noscript>
<input type='submit' value='&gt;&gt;' 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:>&nbsp;<b>[(#ENV{login_alt})]<" + "/b><br />&#91;<a href='spip_cookie.php3?cookie_admin=non[&amp;url=(#ENV{url})][&amp;retour=(#SELF|urlencode)]'><font size='2'><:login_autre_identifiant:><" + "/font><" + "/a>&#93;")
//--></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>&nbsp;
<input type="password" name="session_password"[ id="var_login_(#ENV{login})]" class="forml" style="width: 140px;" value="" size="20" />
<br />&nbsp;&nbsp;&nbsp;&nbsp;<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>
&#91;<a href='./'><:pass_retour_public:></a>&#93;
</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>
&#91;<a href='./'><:pass_retour_public:></a>&#93;
</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})]&amp;[(#ENV{nom})]='+this.options[this.selectedIndex].value">
[(#ENV*{langues})]
</select>
<noscript>
<input type='submit' value='&gt;&gt;' 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("&amp;", "&", $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']) . "&nbsp;: <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') ? '&nbsp;' : ''),
# 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&nbsp;:</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%'>&nbsp;</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:>&nbsp;<strong>[(#ENV{login_alt})]<" + "/strong><br />&#91;<a style='color: #e86519' href='spip_cookie.php3?cookie_admin=non[&amp;url=(#ENV{url})][&amp;retour=(#ENV{self}|urlencode)]'><font size='2'><:login_autre_identifiant:><" + "/font><" + "/a>&#93;")
//--></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>&nbsp;
<input type="password" name="session_password"[ id="var_login_(#ENV{login})"] class="forml" style="width: 140px;" value="" size="20" />
</label>
<br />&nbsp;&nbsp;&nbsp;&nbsp;<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>
&#91;<a href='./'><:pass_retour_public:></a>&#93;
</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;'>
 
&#91;<a href='spip_inscription.php3?mode=forum&amp;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>&#93;
 
&#91;<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>&#93;
 
</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
. '&amp;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:>&nbsp;(#ENV{visites})][;&nbsp;<:info_popularite_5:>&nbsp;(#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>