X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=include%2Fvalidations%2Flistes.inc.php;h=ab60fb134279bf40f639386a559c6964f940a74d;hb=1f58ccb1e75eca08fbd04971d617ea372bc77b5a;hp=9d2d7f86fb94cf4e7670a9472b08bbe78c34ed60;hpb=50a40a33a496131e817df875607ea5542d096a64;p=platal.git diff --git a/include/validations/listes.inc.php b/include/validations/listes.inc.php index 9d2d7f8..ab60fb1 100644 --- a/include/validations/listes.inc.php +++ b/include/validations/listes.inc.php @@ -1,6 +1,6 @@ Validate($_uid, true, 'liste', $_stamp); - + parent::__construct($_user, false, 'liste', $_stamp); + + $this->asso = $_asso; $this->liste = $_liste; + $this->domain = $_domain; $this->desc = $_desc; $this->advertise = $_advertise; $this->modlevel = $_modlevel; @@ -57,46 +61,106 @@ class ListeReq extends Validate // }}} // {{{ function formu() - function formu() - { return 'include/form.valid.listes.tpl'; } + public function formu() + { + return 'include/form.valid.listes.tpl'; + } + + // }}} + // {{{ function editor() + + public function editor() + { + return 'include/form.valid.edit-listes.tpl'; + } + + // }}} + // {{{ function handle_editor() + + protected function handle_editor() + { + global $globals; + + if (Env::has('listname')) { + $this->liste = trim(Env::v('listname')); + } + if (Env::has('domainname')) { + $this->domain = trim(Env::v('domainname')); + } + if (Env::has('assotype')) { + $this->asso = trim(Env::v('assotype')); + } + if (!$this->asso) { + $this->domain = $globals->mail->domain; + } + return true; + } // }}} // {{{ function _mail_subj - function _mail_subj() + protected function _mail_subj() { - return "[Polytechnique.org/LISTES] Demande de la liste {$this->liste}"; + return "[Polytechnique.org/LISTES] Demande de la liste {$this->liste}@{$this->domain}"; } // }}} // {{{ function _mail_body - function _mail_body($isok) + protected function _mail_body($isok) { if ($isok) { - return " La mailing list {$this->liste} que tu avais demandée vient d'être créée."; + return " Suite à ta demande de création de liste de diffusion, nous avons créé l'adresse {$this->liste}@{$this->domain}, qui est maintenant à ta disposition."; } else { - return " La demande que tu avais faite pour la mailing list {$this->liste} a été refusée."; + return " La demande que tu avais faite pour la liste de diffusion {$this->liste}@{$this->domain} a été refusée."; } } // }}} // {{{ function commit() - - function commit() + + public function commit() { global $globals; - require_once('platal/xmlrpc-client.inc.php'); - require_once('lists.inc.php'); - $client =& lists_xmlrpc(Session::getInt('uid'), Session::get('password')); - $ret = $client->create_list($this->liste, $this->desc, - $this->advertise, $this->modlevel, $this->inslevel, - $this->owners, $this->members); + if ($this->asso == "alias") { + $new = $this->liste . '@' . $this->domain; + XDB::query('INSERT INTO x4dat.virtual (alias, type) VALUES({?}, "user")', $new); + foreach ($this->members as $member) { + $user = User::get($member); + if ($user != null) { + XDB::query( + "INSERT INTO x4dat.virtual_redirect (vid, redirect) + SELECT vid, {?} + FROM x4dat.virtual + WHERE alias = {?}", $user->forlifeEmail(), $new); + } + } + return 1; + } + + $list = new MMList(S::user()->id(), S::v('password'), $this->domain); + $ret = $list->create_list($this->liste, utf8_decode($this->desc), $this->advertise, + $this->modlevel, $this->inslevel, + $this->owners, $this->members); $liste = strtolower($this->liste); - if ($ret) { - foreach(Array($liste, $liste."-owner", $liste."-admin", $liste."-bounces") as $l) { - $globals->xdb->execute("INSERT INTO aliases (alias,type) VALUES({?}, 'liste')", $l); + if ($ret && !$this->asso) { + foreach(Array($liste, $liste . "-owner", $liste . "-admin", $liste . "-bounces", $liste . "-unsubscribe") as $l) { + XDB::execute("INSERT INTO aliases (alias, type) VALUES({?}, 'liste')", $l); + } + } elseif ($ret) { + foreach (Array('', 'owner', 'admin', 'bounces', 'unsubscribe') as $app) { + $mdir = $app == '' ? '+post' : '+' . $app; + if (!empty($app)) { + $app = '-' . $app; + } + $red = $this->domain . '_' . $liste; + XDB::execute('INSERT INTO x4dat.virtual (alias, type) + VALUES({?}, {?})', $liste . $app . '@' . $this->domain, 'list'); + XDB::execute('INSERT INTO x4dat.virtual_redirect (vid, redirect) + VALUES ({?}, {?})', XDB::insertId(), + $red . $mdir . '@listes.polytechnique.org'); + $list->mass_subscribe($liste, join(' ', $this->members)); } } return $ret; @@ -107,5 +171,5 @@ class ListeReq extends Validate // }}} -// vim:set et sw=4 sts=4 sws=4 foldmethod=marker: +// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8: ?>