Proposition d’article à partir de l’espace public par un visiteur non auteur.

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

A partir d’un auteur générique (Visiteur, par exemple), ce squelette permet à un visiteur non auteur spip de proposer un article arrivant directement dans l’espace privé. Un email peut être alors envoyé aux responsables du site, par exemple à l’adresse de suivi de l’activité éditoriale.
Note : Dernière modif : vendredi 30 septembre 2005, 14:13

Cet article est similaire à cette autre contribution Permettre aux visiteurs de proposer un article sur votre site, mais présente quelques fonctionnalités différentes et supplémentaires.

Différence :


-  Le nom de l’auteur spip est un auteur générique, toujours le même pour tous les articles. Le nom et l’email de l’auteur réel de l’article sont recueilli par le formulaire et ajouté au bas de l’article, dans le post scriptum. Il s’agit donc ici d’articles exclusivement « visiteur ».

Fonctionnalités supplémentaires


-  Les champs surtitre, sous-titre, descriptif, chapeau et post-scriptum sont gérés.
-  Une liste déroulante permet le choix d’une rubrique.
-  Une liste déroulante multiselect permet le choix de 0, un ou plusieurs mots clés.
-  les champs du formulaire sont traités non seulement par des addslashes, mais aussi des corriger_caracteres et htmlentities, suivant les cas.
-  un mail peut être envoyé avertissant de l’arrivée d’un article, par exemple à l’adresse de suivi de l’activité éditoriale, et au visiteur auteur de l’article. Le mail comporte l’entièreté de l’article. Le mail de suivi éditorial comprend un lien vers l’article dans la partie privée, et celui du visiteur, un lien vers son article (valable si celui-ci est publié). Le visiteur est averti que le lien n’est valable que si son article est accepté. (NB. : Si vous publiez l’article, il peut être aimable de le signaler au visiteur, puisque vous avez son adresse email).
-  l’adresse IP, la date et l’heure de proposition sont relevés et envoyés via l’email.
-  Les champs (spip 1.8) id_secteur, auteur_modif, date_modif, lang, id_version de $table_prefix."_articles"
-  Les préfixes de tables sont gérés.
-  l’adresse email de l’auteur visiteur est traitée contre le spam sous la forme user(AT)domain(PT)tld.
-  le champ TEXTE comprend une barre de raccourci spip

Configuration :

1. Créer un auteur générique (par exemple « Visiteur ») qui servira d’auteur spip pour toutes les contributions à partir de ce squelette. Retenir l’id de l’auteur.
2. Créer une rubrique particulière pour ce squelette (rubrique=XX.html, par exemple) et à l’emplacement de l’affichage du contenu faire l’inclusion de rubrique-article-proposer.php3 comme suit : <INCLURE(rubrique-article-proposer.php3){id_rubrique}>
3. Ouvrir rubrique-article-proposer.html, et dans le <select name="rubrique"> adapter les 3 boucles rubriques (BOUCLE_rubrique0, BOUCLE_sous_rubriques0, BOUCLE_recursive0) à vos besoins. Au moins : id_rubrique != XX où vous remplacez (3 fois) XX par le n° (id) de la rubrique de ce squelette, car ça aurait peu de sens de proposer des articles ici.
4. Ouvrir rubrique-article-proposer.php3, et, au début du script, entre « /* A configurer (début) */ » et « /* A configurer (fin) */ », vous remplacez :

-  dans $id_auteur= "YY";, YY par l’id de l’auteur générique crée au point 1. Ceci est obligatoire.

-  dans $fromto="";, vous placez éventuellement l’adresse email de suivi de l’activité éditoriale entre les "". Ceci n’est pas obligatoire. Si vous laissez les «  » vide, aucun mail ne sera envoyé. Attention à ceci : A) L’envoi d’email n’est possible que si votre hébergeur le permet. B) Si vous utilisez une liste de diffusion pour le suivi de l’activité éditoriale, attention à bien la configurer pour éviter des « bounces » sans fin.
5. Charger sur votre site rubrique-article-proposer.php3 et ip_date_heure.php3 à la racine, rubrique-article-proposer.html dans le dossier des squelettes et le répertoire misenform et son contenu à la racine. (misenform contient les icônes de la barre de raccourcis ; je ne suis pas très doué pour le graphisme ;), mais rien ne vous empêche d’en faire des plus jolis).
6. Il faut forcer la publication de la rubrique. Il y a plusieurs solutions :
-  La solution spip. Depuis SPIP 1.7.1 « {tout} affiche les rubriques vides en plus des rubriques contenant des éléments publiés. » http://www.spip.net/fr_article904.html#crit_tout
-  Personnellement, j’utilise une autre solution avec des articles numérotés, je construis mes boucles ainsi :

<BOUCLE_articles(ARTICLES){id_rubrique}{0,15}{titre !== ^0\.[[:blank:]].*}>
        <li>[(#TITRE|supprimer_numero)]</li>
</BOUCLE_articles>

{titre !== ^0\.[[:blank:]].*} me permet d’écrire des « articles techniques » débutant par 0. (0.espace) qui ne sont pas affiché dans la navigation, mais me permettent, en les mettant en ligne de forcer aisément l’affichage d’une rubrique vide.

-  A chacun ses solutions, il y en a d’autres... ;)

Il vous reste à tester ...

Exemple

http://demo.banlieues.be/spip/rubrique13.html

Le package :


Le squelette :

.html

<style type="text/css">
<!--

.petit {
	font: 0.8em Verdana, Arial, 'Times New roman', serif;
}

/*classe pour mode sans javascript */
.texte {
	display: none;
	width:0px; 
}

.no-texte {
}

.avert {
	color: white;
	background-color: red;
	font-weight: bold;
}
-->
</style>


<BOUCLE_locale(RUBRIQUES){id_rubrique}>
<h1>Test spip contrib</h1>

	<h1>[(#TITRE)]</h1>

	<div class="texte-rubrique">
		#TEXTE
	</div>
		
<?php
$champs_obligatoires = ($titre != "" AND $nom_auteur != "" AND $mail_auteur != "" AND $descriptif != "" AND $texte != "");
if (isset($_POST["form_envoi"]) AND $champs_obligatoires) {
?>

	<h2>Merci <?php echo $nom_auteur; ?> de votre contribution.</h2> 

<?php } else { 
	if (isset($_POST["form_envoi"])) {
?>
	<div class="avert">Attention: RIEN N'A ETE ENVOYE car vous n'avez pas rempli tous les champs obligatoires !</div>
	<?php } ?>

	<INCLURE(ip_date_heure.php3)>
	<form action="rubrique.php3?id_rubrique=#ID_RUBRIQUE" method="post" name="formulaire">
	<script type="text/javascript" src="spip_barre.js"></script>

		<input type="hidden" name="urlsite" value="#URL_SITE_SPIP" />
								
		<br>
		<br>RUBRIQUE:
		<br><span class="petit"><b>Obligatoire</b>.</span>
		<select name="rubrique">

			<B_rubrique0>
				<BOUCLE_rubrique0(RUBRIQUES){id_parent=0}{par num titre}{id_rubrique != XX}>
					<?php if (isset($rubrique) AND $rubrique == #ID_RUBRIQUE) { ?>
						[<option value="#ID_RUBRIQUE" selected="selected">&nbsp;(#TITRE)</option>]
					<?php } else { ?>
						[<option value="#ID_RUBRIQUE">&nbsp;(#TITRE)</option>]
					<?php } ?>
			
			<B_sous_rubriques0>
			
				<BOUCLE_sous_rubriques0(RUBRIQUES){id_parent}{par num titre}{tout}{id_rubrique != XX}>
					<?php if (isset($rubrique) AND $rubrique == #ID_RUBRIQUE) { ?>
						[<option value="#ID_RUBRIQUE" selected="selected">&nbsp;&nbsp;&nbsp;&gt; (#TITRE)</option>]
					<?php } else { ?>
						[<option value="#ID_RUBRIQUE">&nbsp;&nbsp;&nbsp;&gt; (#TITRE)</option>]
					<?php } ?>

					<BOUCLE_recursive0(boucle_sous_rubriques0){id_rubrique != XX}></BOUCLE_recursive0> 

				</BOUCLE_sous_rubriques0>
			</B_sous_rubriques0>
			<//B_sous_rubriques0>
		</BOUCLE_rubrique0>
	</B_rubrique0>
	
		</select>

		<br>
		<br>MOT CLE:
		<select name="id_mot[]" size="8" multiple="multiple">
					<option value="0">&nbsp;&nbsp;&nbsp;&gt; Aucun</option>
					<B_groupes_mots>
						<BOUCLE_groupes_mots(GROUPES_MOTS){par titre}>
							<option value="">&nbsp;#TITRE</option>

							<B_mots>
								<BOUCLE_mots(MOTS){id_groupe} {par titre}{", "}>
									<option value="#ID_MOT">&nbsp;&nbsp;&nbsp;&gt; #TITRE</option>
								</BOUCLE_mots>
							</B_mots>

						</BOUCLE_groupes_mots>
					</B_groupes_mots>
						<option>&nbsp;&gt; Groupe vide &lt;</option>
					<//B_groupes_mots>
		</select>
		<br><span class="petit">Maintenez la touche Ctrl appuyée pour choisir plusieurs mots clés.</span>

		<br>
		<br>Surtitre :
		<br><span class="petit">Pas de html.</span>
		<br><input class="forml" type="text" name="surtitre" value="<?php echo htmlentities($surtitre); ?>" size="50"><br>
		
		<br>TITRE:
		<br><span class="petit"><b>Obligatoire</b>. Pas de html.</span>
		<br><input class="forml" type="text" name="titre" value="<?php echo htmlentities($titre); ?>"  size="50"><br>

		<br>Sous-titre:
		<br><span class="petit">Pas de html. </span>
		<br><input class="forml" type="text" name="soustitre" value="<?php echo htmlentities($soustitre); ?>" size="50">

		<br>Descriptif:
		<br><span class="petit"><b>Obligatoire</b>. Pas de html. </span>
		<br><textarea class="forml" name="descriptif" cols="25" rows="3"><?php echo $descriptif; ?></textarea>

		<br>Lien hypertexte (référence, site à visiter...), titre:
		<br><span class="petit">Pas de html. </span>
		<br><input class="forml" type="text" name="lien_titre" value="<?php echo htmlentities($lien_titre); ?>" size="50">

		<br>Lien hypertexte (référence, site à visiter...), URL:
		<br><span class="petit">Pas de html. </span>
		<br><input class="forml" type="text" name="lien_url" value="<?php echo htmlentities($lien_url); ?>" size="50">

		<br>Chapeau:
		<br><span class="petit">Quelques lignes. La synthèse courte de l'article (de quoi il est question). Html ou raccourcis Spip autorisés.</span>
		<br><textarea class="forml" name="chapeau" cols="25" rows="5"><?php echo $chapeau; ?></textarea>

		<br><br><b>TEXTE :</b>
		<br><span class="petit"><b>Obligatoire</b>. Html ou raccourcis Spip autorisés.</span>

<div class="no-texte">
<a href="javascript:barre_raccourci('{{','}}',document.formulaire.texte)"  tabindex='1000' title="Mettre en {{gras}}" onMouseOver="helpline('Mettre en {{gras}}',document.formulaire.texteaide);bgras.src='misenform/but-off-gras.png'" onMouseOut="helpline('Barre de raccourcis typographiques', document.formulaire.texteaide);bgras.src='misenform/but-on-gras.png'"><img src="misenform/but-on-gras.png" alt="gras" border="0" hspace="0" vspace="2" name="bgras" /></a>
<a href="javascript:barre_raccourci('{','}',document.formulaire.texte)" tabindex='1000' title="Mettre en {italique}" onMouseOver="helpline('Mettre en {italique}',document.formulaire.texteaide);bital.src='misenform/but-off-ital.png'" onMouseOut="helpline('Barre de raccourcis typographiques', document.formulaire.texteaide);bital.src='misenform/but-on-ital.png'"><img src="misenform/but-on-ital.png" alt="ital." border="0" hspace="0" vspace="2" name="bital" /></a>
<a href="javascript:barre_raccourci('&lt;u&gt;','&lt;/u&gt;',document.formulaire.texte)" tabindex='1000' title="Mettre en &lt;u&gt;souligné&lt;/u&gt;" onMouseOver="helpline('Mettre en &lt;u&gt;souligné&lt;/u&gt;',document.formulaire.texteaide);bsoul.src='misenform/but-off-soul.png'" onMouseOut="helpline('Barre de raccourcis typographiques', document.formulaire.texteaide);bsoul.src='misenform/but-on-soul.png'"><img src="misenform/but-on-soul.png" alt="soul." border="0" hspace="0" vspace="2" name="bsoul" /></a>
<a href="javascript:barre_raccourci('{{{','}}}',document.formulaire.texte)"  tabindex='1000' title="Mettre {{{un intertitre}}}" onMouseOver="helpline('Mettre {{{un intertitre}}}',document.formulaire.texteaide);btitre.src='misenform/but-off-titre.png'" onMouseOut="helpline('Barre de raccourcis typographiques', document.formulaire.texteaide);btitre.src='misenform/but-on-titre.png'"><img src="misenform/but-on-titre.png" alt="Bouton" border="0" hspace="0" vspace="2" name="btitre" /></a>
<a href="javascript:barre_tableau(document.formulaire.texte)"  tabindex='1000' title="Créer un tableau" onMouseOver="helpline('Créer un tableau',document.formulaire.texteaide);btab.src='misenform/but-off-tabl.png'" onMouseOut="helpline('Barre de raccourcis typographiques', document.formulaire.texteaide);btab.src='misenform/but-on-tabl.png'"><img src="misenform/but-on-tabl.png" alt="tabl." border="0" hspace="0" vspace="2" name="btab" /></a>
<a href="javascript:barre_demande('[','->',']', 'Veuillez indiquer l\'adresse de votre lien: \nvous pouvez indiquer une adresse Web sous la forme http://www.monsite/com \nou simplement indiquer le num&eacute;ro d\'un article de ce site.', document.formulaire.texte)" tabindex='1000' title="Transformer en [lien hypertexte->http://...]" onMouseOver="helpline('Transformer en [lien hypertexte->http://...]',document.formulaire.texteaide);blien.src='misenform/but-off-lien.png'" onMouseOut="helpline('Barre de raccourcis typographiques', document.formulaire.texteaide);blien.src='misenform/but-on-lien.png'"><img src="misenform/but-on-lien.png" alt="lien" border="0" hspace="0" vspace="2" name="blien" /></a>
<a href="javascript:barre_demande('','[[',']]', 'Veuillez indiquer le contenu de votre note.', document.formulaire.texte)" tabindex='1000' title="Transformer en[[note de bas de page automatique]]" onMouseOver="helpline('Transformer en[[note de bas de page automatique]]',document.formulaire.texteaide);bnote.src='misenform/but-off-note.png'" onMouseOut="helpline('Barre de raccourcis typographiques', document.formulaire.texteaide);bnote.src='misenform/but-on-note.png'"><img src="misenform/but-on-note.png" alt="lien" border="0" hspace="0" vspace="2" name="bnote" /></a>
<br>
<input disabled='disabled' type='text' name='texteaide' size='80' maxlength='100'  readonly style='text-align:left;border: 0px none black;' value="Barre de raccourcis typographiques" />
<br><span class="petit">Liste: Mettre un - (tiret) devant chaque élément de la liste. Attention: laisser une ligne vide avant ET après la liste.</span> 
</div>

<!-- classe pour mode sans javascript -->
<div class="texte">
<h3 class="spip">{{{Intertitre}}}</h3>
Texte en {{<b>gras</b>}},&nbsp;
ou en {<i>l'italique</i>},&nbsp;
ou en {{ {<b><i>gras + italique</i></b>} }}
<br>Faire un appel de note de bas de page automatique[[texte de la note de bas de page]]
<br>Mettre un lien: [Educa21->http://www.educa21.net]
<br>Créer une liste: Mettre un - (tiret) devant chaque élément de la liste. Attention: laisser une ligne vide avant ET après la liste. 
</div>

		<br><textarea class="forml" name="texte" cols="50" rows="15"><?php echo $texte; ?></textarea><br>

		<br>PostScriptum :
		<br><span class="petit">Html ou raccourcis Spip autorisés.</span>
		<br><textarea class="forml" name="ps" cols="50" rows="3"><?php echo $ps; ?></textarea><br>

		<br>Nom de l'auteur :
		<br><span class="petit"><b>Obligatoire</b>. Pas de html.</span>
		<br><input class="forml" type="text" name="nom_auteur" value="<?php echo htmlentities($nom_auteur); ?>" size="50"><br>

		<br>Email de l'auteur :
		<br><span class="petit"><b>Obligatoire</b>. Pas de html.</span>
		<br><input class="forml" type="text" name="mail_auteur" value="<?php echo htmlentities($mail_auteur); ?>" size="50"><br>
 
		<br><input type="submit" value="Envoyer" name="form_envoi" class="spip_bouton">&nbsp;&nbsp;
		<input type="reset" value="Remise à zéro" class="spip_bouton">&nbsp;&nbsp;

</form>

<?php } ?>

</BOUCLE_locale>

.php3

<?php
$fond = "rubrique-article-proposer";
$delais = 0000;

// cette ligne empeche l'affichage des boutons d'administration
$flag_preserver = true;
include ("inc-public.php3");


/*************************/
/* A configurer (début): */
/*************************/
// id de l'auteur visiteur créé pour ce script
$id_auteur= "YY";
// Adresse email de suivi de l'activité éditoriale (vide = pas d'email)
$fromto="";
/**********************/
/* A configurer (fin): */
/**********************/

/*****************************************************************************

 * spip script.

 * This program is free software; you can redistribute it and/or

 * modify it under the terms of the GNU General Public License

 * as published by the Free Software Foundation; either version 2

 * of the License, or (at your option) any later version.

 *

 * This program is distributed in the hope that it will be useful,

 * but WITHOUT ANY WARRANTY; without even the implied warranty of

 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

 * GNU General Public License for more details.

 *

 * You should have received a copy of the GNU General Public License

 * along with this program; if not, write to the Free Software

 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA,

 * or go to http://www.gnu.org/copyleft/gpl.html

 *

 * Developer(s): 2005, Robert Sebille - robert.sebille(at)cassiopea(dot)org

 * Company: Cassiopea asbl, 141 Rue du Trône, 1050 Bruxelles - Belgique
 * La barre de raccourcis de spip est reprise d'une distribution spip

 *****************************************************************************/



// Soyons prudent et portable, désactivons magic_quote pour ce script. merci nexen ;)
if (get_magic_quotes_gpc()) {
    function stripslashes_deep($value)
    {
        $value = is_array($value) ?
                    array_map('stripslashes_deep', $value) :
                    stripslashes($value);

        return $value;
    }

    $_POST = array_map('stripslashes_deep', $_POST);
    $_GET = array_map('stripslashes_deep', $_GET);
    $_COOKIE = array_map('stripslashes_deep', $_COOKIE);
}

//init
$surtitre= ""; 
$titre= "";
$soustitre= "";
$lien_titre= "";
$lien_url= "";
$descriptif= "";
$chapeau= "";
$texte= "";
$ps= "";
$id_mot= array();
$rubrique= "";

$nom_auteur= "";
$mail_auteur= "";
$urlsite= "";

$surtitre= $_POST["surtitre"]; 
$titre= $_POST["titre"];
$soustitre= $_POST["soustitre"];
$lien_titre= $_POST["lien_titre"];
$lien_url= $_POST["lien_url"];
$descriptif= $_POST["descriptif"];
$chapeau= $_POST["chapeau"];
$texte= $_POST["texte"];
$ps= $_POST["ps"];
$id_mot= $_POST["id_mot"];

$rubrique= $_POST["rubrique"];

$nom_auteur= $_POST["nom_auteur"];
$mail_auteur= $_POST["mail_auteur"];
$urlsite= $_POST["urlsite"];

// On va faire un texte propre (evite erreur ')
$surtitre = strip_tags($surtitre);
$titre = strip_tags($titre);
$soustitre = strip_tags($soustitre);
$descriptif = strip_tags($descriptif);
$lien_titre = strip_tags($lien_titre);
$lien_url = strip_tags($lien_url);
$nom_auteur = strip_tags($nom_auteur);
$mail_auteur = strip_tags($mail_auteur);

$surtitre = addslashes(corriger_caracteres(htmlentities($surtitre)));
$titre = addslashes(corriger_caracteres(htmlentities($titre)));
$soustitre = addslashes(corriger_caracteres(htmlentities($soustitre)));
$descriptif = addslashes(corriger_caracteres(htmlentities($descriptif)));
$lien_titre = addslashes(corriger_caracteres(htmlentities($lien_titre)));
$lien_url = addslashes(corriger_caracteres($lien_url));
$chapeau = addslashes(corriger_caracteres($chapeau));
$texte = addslashes(corriger_caracteres($texte));
$nom_auteur = htmlentities($nom_auteur);
$mail_auteur = htmlentities($mail_auteur);


// si les champs obligatoires sont remplis, 
// on traite la base et le mail à la liste de suivi
if ($titre != "" AND $nom_auteur != "" AND $mail_auteur != "" AND $descriptif != "" AND $texte != "") {

	// aller chercher le nom de l'auteur spip visiteur

	$sql = "SELECT nom FROM ".$table_prefix."_auteurs WHERE id_auteur = '$id_auteur' ";
	$nom_auteur_spip = "";

	if ($db_ok) {
		$result = spip_query($sql);  // requete
		$row = spip_fetch_array($result);
		$nom_auteur_spip = $row["nom"];
		}

	//  traiter ps avec le nom et l'email de l'auteur réel
	$mail_auteur_nospam = "";
	$mail_auteur_nospam = str_replace("@", "(AT)", $mail_auteur);
	$mail_auteur_nospam = str_replace(".", "(PT)", $mail_auteur_nospam);
	$ps .= "\n<br /><br />\n";
	$ps .= "Par ".$nom_auteur." [".$mail_auteur_nospam."]";
	$ps = addslashes(corriger_caracteres($ps));

	// retourver le secteur et la langue de la rubrique
	$sql = "SELECT id_secteur, lang FROM ".$table_prefix."_rubriques WHERE id_rubrique = '$rubrique' ";
	if ($db_ok) {
		$result = spip_query($sql);  // requete
		$row = spip_fetch_array($result);
		$secteur = $row["id_secteur"];
		$langue = $row["lang"];
		}

//On va ajouter l'article dans la DB
//include_ecrire('inc_connect.php3');  // connexion pas necessaire, appelé par spip_query

	// 2002-12-30 21:27:23
	$time=time();
	$date_heure=date('Y-m-d H:i:s',$time);

	// ajouter l'article (sans auteur) dans la base: statut: 'prop' ou 'publie'
	$sql = "INSERT INTO ".$table_prefix."_articles (surtitre, titre, soustitre, id_rubrique, descriptif, chapo, texte, ps, statut, id_secteur, accepter_forum, auteur_modif, date_modif, lang, date, id_version, nom_site, url_site) VALUES ('$surtitre', '$titre', '$soustitre', '$rubrique', '$descriptif', '$chapeau', '$texte', '$ps', 'prop', '$secteur', 'pos', '$id_auteur', '$date_heure', '$langue', '$date_heure', '1', '$lien_titre', '$lien_url')";

	if ($db_ok) {spip_query($sql);}  // requete


	// aller chercher l'id de l'article crée
	$sql = "SELECT id_article FROM ".$table_prefix."_articles WHERE date = '$date_heure' ";
	if ($db_ok) {
		$result = spip_query($sql);  // requete
		$row = spip_fetch_array($result);
		$id_article = $row["id_article"];
		}
	
	// lier l'article aux mots clés
	foreach ($id_mot as $val) {
		if ($val != "0" and $val != "") {
			$sql = "INSERT INTO  ".$table_prefix."_mots_articles (id_mot, id_article) VALUES ('$val', '$id_article')";
			if ($db_ok) {spip_query($sql);}  // requete
			} // if ($val != "0" and $val != "")
		} // foreach ($id_mot as $val) 

	// lier l'article à l'auteur
	$sql = "INSERT INTO  ".$table_prefix."_auteurs_articles (id_auteur, id_article) VALUES ('$id_auteur', '$id_article')";
	if ($db_ok) {spip_query($sql);}  // requete


	// mettre en ligne la rubrique si elle ne l'est pas: seulement si statut 'publie"
	//$sql = "UPDATE ".$table_prefix."_rubriques SET statut = 'publie' WHERE id_rubrique = $rubrique ";
	//if ($db_ok) {spip_query($sql);}  // requete


	// et on mail aux copains ;-) = la liste de suivi, si l'adresse est définie
if ($fromto != "") {
	$replyto=$fromto;

	// On re-convertit les html entities pour l'email texte
	$trans = get_html_translation_table(HTML_ENTITIES);
	$trans = array_flip($trans);

	$mail_surtitre=stripslashes(strtr($surtitre, $trans));
	$mail_titre=stripslashes(strtr($titre, $trans));
	$mail_soustitre=stripslashes(strtr($soustitre, $trans));
	$mail_descriptif=stripslashes(strtr($descriptif, $trans));
	$mail_lien_titre=stripslashes(strtr($lien_titre, $trans));
	$mail_lien_url=stripslashes(strtr($lien_url, $trans));
	$mail_chapeau=strip_tags(stripslashes(strtr($chapeau, $trans)));
	$mail_texte=strip_tags(stripslashes(strtr($texte, $trans)));
	$mail_ps=strip_tags(stripslashes(strtr($ps, $trans)));
	$mail_nom_auteur=stripslashes(strtr($nom_auteur, $trans));
	$mail_mail_auteur=stripslashes(strtr($mail_auteur, $trans));
	
	$sujet_prop="[Article] ".$mail_titre;
	$message_prop="Surtitre:\n".$mail_surtitre."\n";
	$message_prop.="Titre:\n".$mail_titre."\n";
	$message_prop.="Sous-titre:\n".$mail_soustitre."\n\n";
	$message_prop.="Descriptif:\n".$mail_descriptif."\n\n";
	$message_prop.="Site à visiter: ".$mail_lien_titre."\n";
	$message_prop.="URL: ".$mail_lien_url."\n\n";
	$message_prop.="Chapeau:\n".$mail_chapeau."\n\n";
	$message_prop.="Texte:\n".$mail_texte."\n\n";
	$message_prop.="Post-scriptum:\n".$mail_ps."\n\n";
	$message_prop.="----------"."\n\n";
	$message_prop.="Par:\n".$mail_nom_auteur." - ".$mail_mail_auteur."\n\n";
	$message_prop.="URL:\n".$urlsite."/ecrire/articles.php3?id_article=".$id_article."\n\n";
	$message_prop.="IP, date et heure:\n".$_SERVER['REMOTE_ADDR']." - ".$date_heure."\n\n";


	mail($fromto, $sujet_prop, $message_prop,
	 "From: ".$fromto."\r\n"
    ."Reply-To: ".$replyto."\r\n"
    ."X-Mailer: PHP/" . phpversion(),
    "-f".$fromto); // 5ième argument "-fvotre_email@site.com" pour le Return-Path

	$message_prop="Bonjour ".$mail_nom_auteur.","."\n"."votre contribution ci-dessous sera examinée très prochainement"."\n\n";
	$message_prop.="Surtitre:\n".$mail_surtitre."\n";
	$message_prop.="Titre:\n".$mail_titre."\n";
	$message_prop.="Sous-titre:\n".$mail_soustitre."\n\n";
	$message_prop.="Descriptif:\n".$mail_descriptif."\n\n";
	$message_prop.="Site à visiter: ".$mail_lien_titre."\n";
	$message_prop.="URL: ".$mail_lien_url."\n\n";
	$message_prop.="Chapeau:\n".$mail_chapeau."\n\n";
	$message_prop.="Texte:\n".$mail_texte."\n\n";
	$message_prop.="Post-scriptum:\n".$mail_ps."\n\n";
	$message_prop.="----------"."\n\n";
	$message_prop.="S'il est accepté pour la publication, vous pourrez alors le trouver via l'URL ci-dessous:"."\n";
	$message_prop.=$urlsite."/articles.php3?id_article=".$id_article."\n\n";
	$message_prop.="IP, date et heure:\n".$_SERVER['REMOTE_ADDR']." - ".$date_heure."\n\n";

	mail($mail_mail_auteur, $sujet_prop, $message_prop,
	 "From: ".$fromto."\r\n"
    ."Reply-To: ".$replyto."\r\n"
    ."X-Mailer: PHP/" . phpversion(),
    "-f".$fromto); //  5ième argument "-fvotre_email@site.com" pour le Return-Path

    } // if ($fromto != "")
    
	} // if ($titre != "" AND $nom_auteur != "" AND $mail_auteur != "" AND $descriptif != "" AND $texte != "")
?>

Dernière modification de cette page le 26 octobre 2006

Discussion

6 discussions

  • Bonjour,

    J’ai bien installé votre excellent formulaire mais j’obtiens toujours ce message d’erreur lié aux MOTS-CLÉS et à la table array correspondante.

    Warning : htmlspecialchars() expects parameter 1 to be string, array given in c :\program files\easyphp1-8\www\testspip\ecrire\inc_filtres.php3 on line 32

    J’ai bien regardé mon fichier inc_filtres.php3 à la ligne 32 mais, étant donné mon manque de connaissance en php, je n’y vois que dalle.

    31 function entites_html($texte)

    32 return corriger_entites_html(htmlspecialchars($texte)) ;

    33

    J’aimerais vraiment utiliser votre formulaire mais je ne sais plus quoi faire. Avez-vous une idée ?

    Merci

    Répondre à ce message

  • 1

    Une adapatation pour la 1.9 ? Autre question...arriverait-on à donner la possibilité d’écrire qu’aux rédacteurs connectés ? Comment faire ?

    • Chapo à l’auteur de cette contrib !!
      J’ai testé sur SPIP1.9 Après validation j’obtient une erreur 404 :
      The requested URL /rubrique.php3 was not found on this server.

      Je suis incapable de faire l’adaptation moi-meme. J’attend avec impatience une mise à jour.

    Répondre à ce message

  • Je n’attend plus que l’adaptation de cette contrib pour passer à spip 1.9 !

    Répondre à ce message

  • 1

    J’ai installé cette contrib sur une version spip1.9

    et au retour de l’envoi de l’article proposé, j’ai le message d’erreur suivant :

    rawurlencode() expects parameter

    Avez-vous une idée pour m’aider merci ?

    • résolu le problème ? vais l’installer sur une 1.9...espère que ca va aller... une mise à jour pour la 1.9 serait sympas !

    Répondre à ce message

  • Bonjour,

    Superbe contribution, du jamais vu ! Mais je n’arrive pas trop à appeler le formulaire dans mon site... AS-TU DES EXEMPLES VRAIMENT CONCRETS POUR LES NULS ?

    1- En fait je ne comprend pas comment réaliser le POINT #2 de ta configuration qui dit ceci :

    2. Créer une rubrique particulière pour ce squelette (rubrique=XX.html, par exemple) et à l’emplacement de l’affichage du contenu faire l’inclusion de rubrique-article-proposer.php3 comme suit : <.INCLURE(rubrique-article-proposer.php3)id_rubrique.>

    2- Ensuite, comment faire le lien à partir de mon menu ? J’ai essayé ceci mais cela ne semble pas être bon...

    <.a href="#URL_SITE_SPIP/rubrique.php3 ?id_rubrique=69" title="Inscription d’un lien">Inscription d’un lien<./a>

    3- Dernier point, que-fait-on avec le fichier « ip_date_heure.php3 » ??

    Merci

    P.S. J’ai mis des petits points dans les codes pour que le forum ne les interprète pas comme des liens

    Répondre à ce message

  • GÉNIAL !!!!

    Répondre à ce message

Ajouter un commentaire

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom