Commit | Line | Data |
---|---|---|
c495c100 P |
1 | <?php |
2 | ||
3 | /***************************************************************************\ | |
4 | * SPIP, Systeme de publication pour l'internet * | |
5 | * * | |
6 | * Copyright (c) 2001-2007 * | |
7 | * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * | |
8 | * * | |
9 | * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * | |
10 | * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * | |
11 | \***************************************************************************/ | |
12 | ||
13 | if (!defined("_ECRIRE_INC_VERSION")) return; #securite | |
14 | ||
15 | include_spip('base/abstract_sql'); | |
16 | ||
17 | // On prend l'email dans le contexte de maniere a ne pas avoir a le | |
18 | // verifier dans la base ni a le devoiler au visiteur | |
19 | ||
20 | ||
21 | // http://doc.spip.org/@balise_FORMULAIRE_ECRIRE_AUTEUR | |
22 | function balise_FORMULAIRE_ECRIRE_AUTEUR ($p) { | |
23 | return calculer_balise_dynamique($p,'FORMULAIRE_ECRIRE_AUTEUR', array('id_auteur', 'id_article', 'email')); | |
24 | } | |
25 | ||
26 | // http://doc.spip.org/@balise_FORMULAIRE_ECRIRE_AUTEUR_stat | |
27 | function balise_FORMULAIRE_ECRIRE_AUTEUR_stat($args, $filtres) { | |
28 | include_spip('inc/filtres'); | |
29 | ||
30 | // Pas d'id_auteur ni d'id_article ? Erreur de squelette | |
31 | if (!$args[0] AND !$args[1]) | |
32 | return erreur_squelette( | |
33 | _T('zbug_champ_hors_motif', | |
34 | array ('champ' => '#FORMULAIRE_ECRIRE_AUTEUR', | |
35 | 'motif' => 'AUTEURS/ARTICLES')), ''); | |
36 | ||
37 | // Si on est dans un contexte article, sortir tous les mails des auteurs | |
38 | // de l'article | |
39 | if (!$args[0] AND $args[1]) { | |
40 | unset ($args[2]); | |
41 | $s = spip_abstract_select('email', | |
42 | array('auteurs' => 'spip_auteurs', | |
43 | 'L' => 'spip_auteurs_articles'), | |
44 | array('auteurs.id_auteur=L.id_auteur', | |
45 | 'L.id_article='.intval($args[1]))); | |
46 | while ($row = spip_fetch_array($s)) { | |
47 | if ($row['email'] AND email_valide($row['email'])) | |
48 | $args[2].= ','.$row['email']; | |
49 | } | |
50 | $args[2] = substr($args[2], 1); | |
51 | } | |
52 | ||
53 | // On ne peut pas ecrire a un auteur dont le mail n'est pas valide | |
54 | if (!$args[2] OR !email_valide($args[2])) | |
55 | return ''; | |
56 | ||
57 | // OK | |
58 | return $args; | |
59 | } | |
60 | ||
61 | // http://doc.spip.org/@balise_FORMULAIRE_ECRIRE_AUTEUR_dyn | |
62 | function balise_FORMULAIRE_ECRIRE_AUTEUR_dyn($id_auteur, $id_article, $mail) { | |
63 | include_spip('inc/texte'); | |
64 | $puce = definir_puce(); | |
65 | ||
66 | // id du formulaire (pour en avoir plusieurs sur une meme page) | |
67 | $id = ($id_auteur ? '_'.$id_auteur : '_ar'.$id_article); | |
68 | #spip_log("id formulaire = $id, "._request("valide".$id)); | |
69 | $sujet = _request('sujet_message_auteur'.$id); | |
70 | $texte = _request('texte_message_auteur'.$id); | |
71 | $adres = _request('email_message_auteur'.$id); | |
72 | ||
73 | if (_request('valide')) { | |
74 | $mailko = !email_valide($adres); | |
75 | $sujetko = !(strlen($sujet)>3); | |
76 | $texteko = !(strlen($texte)>10); | |
77 | } | |
78 | ||
79 | $validable = $texte && $sujet && (!$mailko); | |
80 | ||
81 | // doit-on envoyer le mail ? | |
82 | if ($validable | |
83 | AND $id == _request('num_formulaire_ecrire_auteur') | |
84 | AND _request('confirmer'.$id)) { | |
85 | $texte .= "\n\n-- "._T('envoi_via_le_site')." ".supprimer_tags(extraire_multi($GLOBALS['meta']['nom_site']))." (".$GLOBALS['meta']['adresse_site']."/) --\n"; | |
86 | include_spip('inc/mail'); | |
87 | envoyer_mail($mail, $sujet, $texte, $adres, | |
88 | "X-Originating-IP: ".$GLOBALS['ip']); | |
89 | $mailenvoye = _T('form_prop_message_envoye'); | |
90 | } | |
91 | ||
92 | return | |
93 | array('formulaires/ecrire_auteur', 0, | |
94 | array( | |
95 | 'id' => $id, | |
96 | 'mailko' => $mailko ? _T('form_prop_indiquer_email') : '', | |
97 | 'mail' => $adres, | |
98 | 'sujetko' => $sujetko ? _T('forum_attention_trois_caracteres') : '', | |
99 | 'mailenvoye' => $mailenvoye, | |
100 | 'sujet' => $sujet, | |
101 | 'texteko' => $texteko ? _T('forum_attention_dix_caracteres') : '', | |
102 | 'texte' => $texte, | |
103 | 'valide' => $validable ? $id : '', | |
104 | 'bouton' => _T('form_prop_envoyer'), | |
105 | 'boutonconfirmation' => $validable ? _T('form_prop_confirmer_envoi') : '' | |
106 | ) | |
107 | ); | |
108 | } | |
109 | ?> |