<?php
/***************************************************************************
- * Copyright (C) 2003-2008 Polytechnique.org *
+ * Copyright (C) 2003-2011 Polytechnique.org *
* http://opensource.polytechnique.org/ *
* *
* This program is free software; you can redistribute it and/or modify *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
***************************************************************************/
-// {{{ class AliasReq
-
+// class AliasReq {{{1
class AliasReq extends Validate
{
- // {{{ properties
-
+ // properties {{{2
public $alias;
- public $raison;
+ public $reason;
public $unique = true;
- public $old='';
- public $public='private';
+ public $old;
+ public $public = 'private';
- public $rules = "Interdire ce qui peut nous servir (virus@, postmaster@, ...),
+ public $rules = "Interdire ce qui peut nous servir (virus@, postmaster@…),
les alias vulgaires, et les prenom.nom (sauf si c'est pour l'utilisateur prenom.nom).
- Pas de contrainte pour les tirets ou les points, en revanche le souligné (_) est interdit";
-
- // }}}
- // {{{ constructor
+ Pas de contrainte pour les tirets ou les points, en revanche le souligné (_) est interdit.";
- public function __construct($_uid, $_alias, $_raison, $_public, $_stamp=0)
+ // constructor {{{2
+ public function __construct(User $_user, $_alias, $_reason, $_public, $_old, $_stamp = 0)
{
global $globals;
- parent::__construct($_uid, true, 'alias', $_stamp);
- $this->alias = $_alias.'@'.$globals->mail->alias_dom;
- $this->raison = $_raison;
+ parent::__construct($_user, true, 'alias', $_stamp);
+ $this->alias = $_alias;
+ $this->reason = $_reason;
$this->public = $_public;
-
- $res = XDB::query("
- SELECT v.alias
- FROM virtual_redirect AS vr
- INNER JOIN virtual AS v ON (v.vid=vr.vid AND v.alias LIKE '%@{$globals->mail->alias_dom}')
- WHERE vr.redirect={?} OR vr.redirect={?}",
- "{$this->forlife}@{$globals->mail->domain}", "{$this->forlife}@{$globals->mail->domain2}");
- $this->old = $res->fetchOneCell();
- if (empty($this->old)) { unset($this->old); }
+ $this->old = $_old;
}
- // }}}
- // {{{ function get_request()
-
+ // function get_request() {{{2
static public function get_request($uid)
{
- return parent::get_typed_request($uid,'alias');
+ return parent::get_typed_request($uid, 'alias');
}
- // }}}
- // {{{ function formu()
-
+ // function formu() {{{2
public function formu()
{
return 'include/form.valid.aliases.tpl';
}
- // }}}
- // {{{ function _mail_subj
-
+ // function _mail_subj {{{2
protected function _mail_subj()
{
- return "[Polytechnique.org/MELIX] Demande de l'alias {$this->alias}";
+ global $globals;
+ return "[Polytechnique.org/MELIX] Demande de l'alias {$this->alias}@{$globals->mail->alias_dom}";
}
- // }}}
- // {{{ function _mail_body
-
+ // function _mail_body {{{2
protected function _mail_body($isok)
{
+ global $globals;
if ($isok) {
- 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.":"");
+ return " L'adresse email {$this->alias}@{$globals->mail->alias_dom} 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.' : '');
} else {
- return " La demande que tu avais faite pour l'alias {$this->alias} a été refusée.";
+ return " La demande que tu avais faite pour l'alias {$this->alias}@{$globals->mail->alias_dom} a été refusée.";
}
}
- // }}}
- // {{{ function shorter_domain
-
- private function shorter_domain()
+ // function commit() {{{2
+ public function commit()
{
- global $globals;
-
- $mail = $globals->mail;
-
- if (empty($mail->domain2) || strlen($mail->domain2) > strlen($mail->domain)) {
- return $mail->domain;
- } else {
- return $mail->domain2;
+ if ($this->user->hasProfile()) {
+ XDB::execute('UPDATE profiles
+ SET alias_pub = {?}
+ WHERE pid = {?}',
+ $this->public, $this->user->profile()->id());
}
- }
-
- // }}}
- // {{{ function commit()
-
- public function commit ()
- {
- XDB::execute("UPDATE auth_user_quick SET emails_alias_pub = {?} WHERE user_id = {?}",
- $this->public, $this->uid);
if ($this->old) {
- return XDB::execute('UPDATE virtual SET alias={?} WHERE alias={?}',
- $this->alias, $this->old);
+ $success = XDB::execute('UPDATE email_source_account
+ SET email = {?}
+ WHERE uid = {?} AND type = \'alias_aux\'',
+ $this->alias, $this->user->id());
} else {
- XDB::execute('INSERT INTO virtual SET alias={?},type="user"', $this->alias);
- $vid = XDB::insertId();
- $dom = $this->shorter_domain();
- return XDB::query('INSERT INTO virtual_redirect (vid,redirect) VALUES ({?}, {?})',
- $vid, $this->forlife.'@'.$dom);
+ $success = XDB::execute('INSERT INTO email_source_account (email, uid, domain, type, flags)
+ SELECT {?}, {?}, id, \'alias_aux\', \'\'
+ FROM email_virtual_domains
+ WHERE name = {?}',
+ $this->alias, $this->user->id(), Platal::globals()->mail->alias_dom);
}
- }
- // }}}
+ return $success;
+ }
}
-// }}}
-
// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
?>