- Use Banana to power mail moderation -FRU
- Use Banana to browse mail archives -FRU
+ * Marketing:
+ - Marketing on broken redirections becomes a validation -FRU
+
* Newsletter:
- New skin -mYk
$this->emails[] = new Email(array($email, 'active', '', '0000-00-00', '0000-00-00', 0));
// security stuff
- $res = XDB::query("SELECT state, description
- FROM emails_watch
- WHERE state != 'safe' AND email = {?}", $email);
- if ($res->numRows()) {
- $row = $res->fetchOneAssoc();
- $message = "L'email $email vient d'être ajouté aux redirections de ". S::v('forlife')
- . ". Cette adresse est surveillée avec l'état *" . $row['state']
- . "* et la description :\n" . $row['description'];
- $message = wordwrap($message);
- $mailer = new PlMailer();
- $mailer->setFrom("webmaster@polytechnique.org");
- $mailer->addTo("hotliners@staff.polytechnique.org");
- $mailer->setSubject("ALERTE LORS DE L'AJOUT DE REDIRECTION de "
- . S::v('prenom') . ' ' . S::v('nom') . '(' . S::v('promo') . ')');
- $mailer->setTxtBody($message
- . "\n\nInformations de connexion :\n" . var_export($_SERVER, true));
- $mailer->send();
- }
+ check_email($email, "Ajout d'une adresse surveillée aux redirections de " . $this->uid);
return SUCCESS;
}
--- /dev/null
+<?php
+/***************************************************************************
+ * Copyright (C) 2003-2007 Polytechnique.org *
+ * http://opensource.polytechnique.org/ *
+ * *
+ * 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 *
+ ***************************************************************************/
+
+
+class BrokenReq extends Validate
+{
+ // {{{ properties
+
+ var $m_forlife;
+ var $m_bestalias;
+ var $m_prenom;
+ var $m_nom;
+ var $m_promo;
+ var $m_sexe;
+ var $m_email;
+ var $old_email;
+ var $m_comment;
+
+ var $rules = "Accepter si l'adresse mail parait correcte, et pas absurde (ou si le marketeur est de confiance).
+ Si le demandeur marque sa propre adresse mail, refuser dans tous les cas.
+ Si l'adresse proposée est surveillée, refuser.
+ Si le compte associé est désactivé, étudier le cas en fonction de la raison de la désactivation";
+ // }}}
+ // {{{ constructor
+
+ function BrokenReq($sender, $user, $email, $comment = null)
+ {
+ $this->Validate($sender, false, 'broken');
+ $this->m_email = $email;
+ $this->m_comment = trim($comment);
+ $this->m_forlife = $user['forlife'];
+ $this->m_bestalias = $user['bestalias'];
+ $this->m_prenom = $user['prenom'];
+ $this->m_nom = $user['nom'];
+ $this->m_promo = $user['promo'];
+ $this->m_sexe = $user['sexe'];
+ $this->old_email = $user['email'];
+ }
+
+ // }}}
+ // {{{ function formu()
+
+ function formu()
+ {
+ return 'include/form.valid.broken.tpl';
+ }
+
+ // }}}
+ // {{{ function _mail_subj
+
+ function _mail_subj()
+ {
+ return "[Polytechnique.org] Récupération de {$this->m_prenom} {$this->m_nom} ({$this->m_promo})";
+ }
+
+ // }}}
+ // {{{ function _mail_body
+
+ function _mail_body($isok)
+ {
+ if ($isok) {
+ return " Un mail de contact vient d'être envoyé "
+ ." à {$this->m_prenom} {$this->m_nom} ({$this->m_promo}) pour confirmer sa volonté de"
+ ." mettre à jour sa redirection Polytechnique.org!\n\n"
+ ."Merci de ta participation !\n";
+ } else {
+ return " Nous n'avons pas jugé bon d'envoyer de mail de contact à {$this->m_prenom} {$this->m_nom} ({$this->m_promo}).";
+ }
+ }
+
+ // }}}
+ // {{{ function commit()
+
+ function commit()
+ {
+ global $globals;
+ $email = $this->m_bestalias . '@' . $globals->mail->domain;
+ if ($this->old_email) {
+ $subject = "Ton adresse $email semble ne plus fonctionner";
+ $reason = "Nous avons été informés que ton adresse $email ne fonctionne plus correctement par un camarade";
+ } else {
+ $res = XDB::iterRow("SELECT email
+ FROM emails AS e
+ INNER JOIN aliases AS a ON (a.id = e.uid)
+ WHERE a.alias = {?} AND e.flags = 'panne'", $this->m_forlife);
+ $redirect = array();
+ while (list($red) = $res->next()) {
+ list(, $redirect[]) = explode('@', $red);
+ }
+ $subject = "Ton adresse $email ne fonctionne plus";
+ $reason = "Ton adresse $email ne fonctionne plus ";
+ if (!count($redirect)) {
+ $reason .= '.';
+ } elseif (count($redirect) == 1) {
+ $reason .= ' car sa redirection vers ' . $redirect[0] . ' est hors-service depuis plusiers mois.';
+ } else {
+ $reason .= ' cas ses redirections vers ' . implode(', ', $redirect)
+ . ' sont hors-services depuis plusieurs mois.';
+ }
+ }
+ $body = ($this->m_sexe ? 'Chère ' : 'Cher ') . $this->m_prenom . ",\n\n"
+ . $reason . "\n\n"
+ . "L'adresse {$this->m_email} nous a été communiquée, veux-tu que cette adresse devienne ta nouvelle "
+ . "adresse devienne ta nouvelle adresse de redirection ? Si oui, envoie nous des informations qui "
+ . "nous permettrons de nous assurer de ton identité (par exemple ta date de naissance et ta promotion)\n"
+ . "-- \nTrès Cordialement,\nL'Equipe de Polytechnique.org\n";
+ $body = wordwrap($body, 78);
+ $mailer = new PlMailer();
+ $mailer->setFrom('"Association Polytechnique.org" <register@polytechnique.org>');
+ $mailer->addTo($this->m_email);
+ $mailer->setSubject($subject);
+ $mailer->setTxtBody($body);
+ return $mailer->send();
+ }
+
+ // }}}
+}
+
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker:
+?>
return $res->numRows();
}
+function check_email($email, $message)
+{
+ $res = XDB::query("SELECT state, description
+ FROM emails_watch
+ WHERE state != 'safe' AND email = {?}", $email);
+ if ($res->numRows()) {
+ send_warning_mail($message);
+ return true;
+ }
+ return false;
+}
+
function send_warning_mail($title)
{
$mailer = new PlMailer();
pl_redirect('emails/redirect');
}
- $res = Xdb::query("SELECT u.nom, u.prenom, u.promo, a.alias AS forlife
+ $res = Xdb::query("SELECT u.nom, u.prenom, u.promo, FIND_IN_SET('femme', u.flags) AS sexe,
+ a.alias AS forlife, b.alias AS bestalias, e.email, e.last
FROM auth_user_md5 AS u
- INNER JOIN aliases AS a ON a.id = u.user_id
- WHERE a.alias = {?}", $forlife);
+ INNER JOIN aliases AS a ON (a.id = u.user_id AND a.type = 'a_vie')
+ INNER JOIN aliases AS b ON (b.id = u.user_id AND FIND_IN_SET('bestalias', b.flags))
+ LEFT JOIN emails AS e ON (e.flags = 'active' AND e.uid = u.user_id)
+ WHERE a.alias = {?}
+ ORDER BY e.panne_level, e.last", $forlife);
if (!$res->numRows()) {
return PL_NOT_FOUND;
}
$user = $res->fetchOneAssoc();
$page->assign('user', $user);
- $email = trim(Post::v('mail'));
- if (Post::has('valide') && strlen($email) > 0) {
- $mailer = new PlMailer();
- $mailer->setFrom(S::v('bestalias') . '@polytechnique.org');
- $mailer->addTo('resetpass@polytechnique.org');
- $mailer->setSubject("Proposition d'adresse mail pour " . $user['forlife']);
-
- $message = S::v('nom') . ' ' . S::v('prenom') . ' (X' . S::v('promo') . ') '
- . 'propose l\'adresse suivante pour un camarade qui n\'a plus de '
- . 'redirections actives :' . "\n\n"
- . '* ' . $user['forlife'] . ' => ' . $email . "\n";
- $mailer->setTxtBody(wordwrap($message, 78));
- $mailer->send();
- $page->assign('sent', true);
+ $email = null;
+ if (Post::has('mail')) {
+ require_once 'emails.inc.php';
+ $email = valide_email(Post::v('mail'));
+ }
+ if (Post::has('valide') && isvalid_email_redirection($email)) {
+ // security stuff
+ check_email($email, "Proposition d'une adresse surveillee pour " . $user['forlife'] . " par " . S::v('forlife'));
+ if ($user['email'] && !trim(Post::v('comment'))) {
+ $page->trig("Il faut que tu ajoutes un commentaire à ta proposition pour justifier le "
+ ."besoin de changer la redirection de " . $user['prenom']);
+ } else {
+ require_once 'validations.inc.php';
+ $valid = new BrokenReq(S::i('uid'), $user, $email, trim(Post::v('comment')));
+ $valid->submit();
+ $page->assign('sent', true);
+ }
+ } elseif ($email) {
+ $page->trig("L'adresse proposée n'est pas une adresse acceptable pour une redirection");
}
}
$page->assign('already', true);
} else {
$page->assign('ok', true);
+ check_email($email, "Une adresse surveillée est proposée au marketing par " . S::v('forlife'));
XDB::execute(
"INSERT INTO register_marketing (uid,sender,email,date,last,nb,type,hash)
VALUES ({?}, {?}, {?}, NOW(), 0, 0, {?}, '')",
Recherche d'adresses pour {$user.nom} {$user.prenom} (X{$user.promo})
</h1>
+{if !$user.email}
<p>
Avec le temps toutes les adresses de redirection de notre camarade sont devenues invalides et produisent
des erreurs lorsqu'on lui envoie un mail. Nous sommes donc à la recherche d'adresses valides où nous pourrions
contacter ce camarade.
</p>
+{elseif $user.last}
+<p>
+ {$user.prenom} a encore des adresses de redirection actives malgré des pannes détectées sur certaines d'entre elles. Si
+ tu es sûre que son adresse Polytechnique.org est en panne, tu peux proposer une nouvelle adresse mail à ajouter à ses
+ redirections. Merci d'ajouter un commentaire pour nous indiquer la raison de cette proposition.
+</p>
+{else}
+<p>
+ Nous n'avons actuellement enregistré aucune panne sur les adresses de redirection de {$user.prenom}. Si tu es sûr que
+ son adresse de redirection actuelle est en panne tu peux nous proposer une nouvelle adresse, accompagnée d'un commentaire
+ nous expliquant les raisons exactes de cette proposition.
+</p>
+{/if}
<p>
Les adresses emails que tu pourras nous donner ne seront pas ajoutées directement aux redirections de {$user.prenom}.
+ Nous allons d'abord prendre contact avec {if $user.sexe}elle{else}lui{/if} pour savoir si {if $user.sexe}elle{else}lui{/if}
+ accepte la mise à jour de sa redirection.
</p>
<p>
- Merci de participer à cette recherche.
+ Merci de ta participation active à l'amélioration de notre qualité de service.
</p>
<form method="post" action="{$platal->path}">
<table class="bicol" summary="Fiche camarade">
- <tr class="impair"><td>Nom :</td><td>{$user.nom}</td></tr>
- <tr class="pair"><td>Prénom :</td><td>{$user.prenom}</td></tr>
- <tr class="impair"><td>Promo :</td><td>{$user.promo}</td></tr>
+ <tr><th colspan="2">Proposition d'adresse pour<br />{$user.nom} {$user.prenom} (X{$user.promo})</th></tr>
<tr class="pair">
<td>Adresse email :</td>
<td>
- <input type="text" name="mail" size="30" maxlength="50" />
+ <input type="text" name="mail" size="30" maxlength="50" value="{$smarty.post.mail}" />
</td>
</tr>
+ {if $user.email}
+ <tr class="impair">
+ <td>Explication :</td>
+ <td><textarea name="comment" cols="50" rows="4">{$smarty.post.comment}</textarea></td>
+ </tr>
+ {/if}
</table>
<div class="center">
<input type="submit" name="valide" value="Valider" />
alter table profile_medals add column flags set('validation') not null default 'validation';
update profile_medals set flags = '' where id = 20;
+alter table requests_answers change category category enum('alias','liste','usage','photo','evts','marketing','orange','homonyme','nl','paiements','medal','broken') not null;
# vim:set syntax=mysql: