Merge branch 'master' of /home/git/platal into profile_edit
[platal.git] / include / validations / aliases.inc.php
CommitLineData
0337d704 1<?php
2/***************************************************************************
5ddeb07c 3 * Copyright (C) 2003-2007 Polytechnique.org *
0337d704 4 * http://opensource.polytechnique.org/ *
5 * *
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. *
10 * *
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. *
15 * *
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 *
18 * Foundation, Inc., *
19 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
20 ***************************************************************************/
21
22// {{{ class AliasReq
23
24class AliasReq extends Validate
25{
26 // {{{ properties
27
612a2d8a 28 public $alias;
29 public $raison;
30 public $unique = true;
0337d704 31
612a2d8a 32 public $old='';
33 public $public='private';
787bb3d7 34
612a2d8a 35 public $rules = "Interdire ce qui peut nous servir (virus@, postmaster@, ...),
0337d704 36 les alias vulgaires, et les prenom.nom (sauf si c'est pour l'utilisateur prenom.nom).
a7de4ef7 37 Pas de contrainte pour les tirets ou les points, en revanche le souligné (_) est interdit";
0337d704 38
39 // }}}
40 // {{{ constructor
41
612a2d8a 42 public function __construct($_uid, $_alias, $_raison, $_public, $_stamp=0)
0337d704 43 {
44 global $globals;
612a2d8a 45 parent::__construct($_uid, true, 'alias', $_stamp);
0337d704 46 $this->alias = $_alias.'@'.$globals->mail->alias_dom;
47 $this->raison = $_raison;
48 $this->public = $_public;
49
08cce2ff 50 $res = XDB::query("
0337d704 51 SELECT v.alias
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->forlife}@{$globals->mail->domain}", "{$this->forlife}@{$globals->mail->domain2}");
56 $this->old = $res->fetchOneCell();
57 if (empty($this->old)) { unset($this->old); }
58 }
59
60 // }}}
61 // {{{ function get_request()
62
612a2d8a 63 static public function get_request($uid)
0337d704 64 {
20d7932b 65 return parent::get_typed_request($uid,'alias');
0337d704 66 }
67
68 // }}}
69 // {{{ function formu()
70
612a2d8a 71 public function formu()
72 {
73 return 'include/form.valid.aliases.tpl';
74 }
0337d704 75
76 // }}}
77 // {{{ function _mail_subj
78
612a2d8a 79 protected function _mail_subj()
0337d704 80 {
81 return "[Polytechnique.org/MELIX] Demande de l'alias {$this->alias}";
82 }
83
84 // }}}
85 // {{{ function _mail_body
86
612a2d8a 87 protected function _mail_body($isok)
0337d704 88 {
89 if ($isok) {
a7de4ef7 90 return " L'adresse mail {$this->alias} que tu avais demandée vient d'être créée, tu peux désormais l'utiliser à ta convenance.".(($this->public == 'public')?" A ta demande, cette adresse apparaît maintenant sur ta fiche.":"");
0337d704 91 } else {
a7de4ef7 92 return " La demande que tu avais faite pour l'alias {$this->alias} a été refusée.";
0337d704 93 }
94 }
95
96 // }}}
4c6fce94 97 // {{{ function shorter_domain
98
612a2d8a 99 private function shorter_domain()
4c6fce94 100 {
101 global $globals;
102
29d908fa 103 $mail = $globals->mail;
104
105 if (empty($mail->domain2) || strlen($mail->domain2) > strlen($mail->domain)) {
106 return $mail->domain;
4c6fce94 107 } else {
29d908fa 108 return $mail->domain2;
4c6fce94 109 }
110 }
111
112 // }}}
0337d704 113 // {{{ function commit()
114
612a2d8a 115 public function commit ()
0337d704 116 {
4c6fce94 117 XDB::execute("UPDATE auth_user_quick SET emails_alias_pub = {?} WHERE user_id = {?}",
e4df055c 118 $this->public, $this->uid);
0337d704 119
120 if ($this->old) {
29d908fa 121 return XDB::execute('UPDATE virtual SET alias={?} WHERE alias={?}',
122 $this->alias, $this->old);
0337d704 123 } else {
08cce2ff 124 XDB::execute('INSERT INTO virtual SET alias={?},type="user"', $this->alias);
8b83a166 125 $vid = XDB::insertId();
4c6fce94 126 $dom = $this->shorter_domain();
29d908fa 127 return XDB::query('INSERT INTO virtual_redirect (vid,redirect) VALUES ({?}, {?})',
128 $vid, $this->forlife.'@'.$dom);
0337d704 129 }
130 }
131
132 // }}}
133}
134
135// }}}
136
a7de4ef7 137// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
0337d704 138?>