806d709f0db90d63bb91486110f919331203abf5
2 /***************************************************************************
3 * Copyright (C) 2003-2009 Polytechnique.org *
4 * http://opensource.polytechnique.org/ *
6 * This program is free software; you can redistribute it and/or modify *
7 * it under the terms of the GNU General Public License as published by *
8 * the Free Software Foundation; either version 2 of the License, or *
9 * (at your option) any later version. *
11 * This program is distributed in the hope that it will be useful, *
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
14 * GNU General Public License for more details. *
16 * You should have received a copy of the GNU General Public License *
17 * along with this program; if not, write to the Free Software *
19 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
20 ***************************************************************************/
24 class AliasReq
extends Validate
30 public $unique = true
;
33 public $public='private';
35 public $rules = "Interdire ce qui peut nous servir (virus@, postmaster@…),
36 les alias vulgaires, et les prenom.nom (sauf si c'est pour l'utilisateur prenom.nom).
37 Pas de contrainte pour les tirets ou les points, en revanche le souligné (_) est interdit.";
42 public function __construct(User
&$_user, $_alias, $_raison, $_public, $_stamp=0)
45 parent
::__construct($_user, true
, 'alias', $_stamp);
46 $this->alias
= $_alias.'@'.$globals->mail
->alias_dom
;
47 $this->raison
= $_raison;
48 $this->public = $_public;
52 FROM virtual_redirect AS vr
53 INNER JOIN virtual AS v ON (v.vid=vr.vid AND v.alias LIKE '%@{$globals->mail->alias_dom}')
54 WHERE vr.redirect = {?} OR vr.redirect = {?}",
55 $this->user
->forlifeEmail(),
56 // TODO: remove this über-ugly hack. The issue is that you need
57 // to remove all @m4x.org addresses in virtual_redirect first.
58 $this->user
->login() . '@' . $globals->mail
->domain2
);
59 $this->old
= $res->fetchOneCell();
60 if (empty($this->old
)) {
66 // {{{ function get_request()
68 static public function get_request($uid)
70 return parent
::get_typed_request($uid, 'alias');
74 // {{{ function formu()
76 public function formu()
78 return 'include/form.valid.aliases.tpl';
82 // {{{ function _mail_subj
84 protected function _mail_subj()
86 return "[Polytechnique.org/MELIX] Demande de l'alias {$this->alias}";
90 // {{{ function _mail_body
92 protected function _mail_body($isok)
95 return " L'adresse email {$this->alias} que tu avais demandée vient d'être créée, tu peux désormais l'utiliser à ta convenance." . (($this->public == 'public') ?
" À ta demande, cette adresse apparaît maintenant sur ta fiche." : "");
97 return " La demande que tu avais faite pour l'alias {$this->alias} a été refusée.";
102 // {{{ function shorter_domain
104 private function shorter_domain()
108 $mail = $globals->mail
;
110 if (empty($mail->domain2
) ||
strlen($mail->domain2
) > strlen($mail->domain
)) {
111 return $mail->domain
;
113 return $mail->domain2
;
118 // {{{ function commit()
120 public function commit ()
122 XDB
::execute("UPDATE auth_user_quick SET emails_alias_pub = {?} WHERE user_id = {?}",
123 $this->public, $this->user
->id());
126 return XDB
::execute("UPDATE virtual SET alias = {?} WHERE alias = {?}",
127 $this->alias
, $this->old
);
129 XDB
::execute("INSERT INTO virtual SET alias = {?},type='user'", $this->alias
);
130 $vid = XDB
::insertId();
131 return XDB
::query("INSERT INTO virtual_redirect (vid,redirect) VALUES ({?}, {?})",
132 $vid, $this->user
->forlifeEmail());
141 // vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: