* Email:
- #1529: Stores and uses preferences for sending emails from site -JAC
+ - #1516: Enables @polytechnique.edu adresses for old promotions -GLN
* Newsletter:
- #1509: Adds a Reply-To field for newsletters -GLN
// function isvalid_email_redirection() {{{1
/** Checks if an email is a suitable redirection.
* @param $email the email to check
+ * @param $user the user asking for the redirection
* @return BOOL
*/
-function isvalid_email_redirection($email)
+function isvalid_email_redirection($email, User $user)
{
- return isvalid_email($email) && !preg_match("/@polytechnique\.edu$/", $email) && User::isForeignEmailAddress($email);
+ $valid = isvalid_email($email) && User::isForeignEmailAddress($email);
+ if (!$user->hasProfile() || ($user->profile()->grad_year > date('Y') - 3)) {
+ return $valid && !preg_match("/@polytechnique\.edu$/", $email);
+ } else {
+ return $valid;
+ }
}
// function ids_from_mails() {{{1
if (!isvalid_email($email_stripped)) {
return ERROR_INVALID_EMAIL;
}
- if (!isvalid_email_redirection($email_stripped)) {
+ if (!isvalid_email_redirection($email_stripped, $this->user)) {
return ERROR_LOOP_EMAIL;
}
// We first need to retrieve the value for the antispam filter: it is
$redirect = ($registered ? new Redirect($user) : null);
if (Post::has('add_fwd')) {
$email = Post::t('email');
- if (!isvalid_email_redirection($email)) {
+ if (!isvalid_email_redirection($email, $user)) {
$page->trigError("Email non valide: $email");
} else {
$redirect->add_email($email);
case 'marketu': case 'markets':
require_once 'emails.inc.php';
+ $user = User::get($uids[$key]);
$mail = valide_email($mails[$key]);
- if (isvalid_email_redirection($mail)) {
+ if (isvalid_email_redirection($mail, $user)) {
$from = ($action == 'marketu') ? 'user' : 'staff';
$market = Marketing::get($uids[$key], $mail);
if (!$market) {
if (Post::has('mail')) {
$email = valide_email(Post::v('mail'));
}
- if (Post::has('valide') && isvalid_email_redirection($email)) {
+ if (Post::has('valide') && isvalid_email_redirection($email, $user)) {
S::assert_xsrf_token();
// security stuff
$email = trim(Post::v('mail'));
require_once 'emails.inc.php';
- if (!isvalid_email_redirection($email)) {
+ if (!isvalid_email_redirection($email, $user)) {
$page->trigError('Email invalide !');
} else {
// On cherche les marketings précédents sur cette adresse
// Validate the email address format and domain.
require_once 'emails.inc.php';
+ $user = User::get($subState->s('uid'));
if (!isvalid_email(Post::v('email'))) {
$error[] = "Le champ 'Email' n'est pas valide.";
- } elseif (!isvalid_email_redirection(Post::v('email'))) {
+ } elseif (!isvalid_email_redirection(Post::v('email'), $user)) {
$error[] = $subState->s('forlife') . ' doit renvoyer vers un email existant '
. 'valide, en particulier, il ne peut pas être renvoyé vers lui-même.';
}