From: x2000habouzit Date: Sat, 15 Jul 2006 13:45:50 +0000 (+0000) Subject: migrate alias things X-Git-Tag: xorg/0.9.11~405 X-Git-Url: http://git.polytechnique.org/?a=commitdiff_plain;h=d1fcf09c3abbd5be364dbd7e0e38e8de7b2fcb1d;p=platal.git migrate alias things git-svn-id: svn+ssh://murphy/home/svn/platal/trunk@497 839d8a87-29fc-0310-9880-83ba4fa771e5 --- diff --git a/htdocs.net/groupe/alias-admin.php b/htdocs.net/groupe/alias-admin.php deleted file mode 100644 index 3891fe5..0000000 --- a/htdocs.net/groupe/alias-admin.php +++ /dev/null @@ -1,65 +0,0 @@ -xdb->query( - "SELECT a.alias, b.alias - FROM x4dat.aliases AS a - LEFT JOIN x4dat.aliases AS b ON (a.id=b.id AND b.type = 'a_vie') - WHERE a.alias={?} AND a.type!='homonyme'", $mbox); - if (list($alias, $blias) = $res->fetchOneRow()) { - $alias = empty($blias) ? $alias : $blias; - $globals->xdb->query( - "INSERT INTO x4dat.virtual_redirect (vid,redirect) - SELECT vid, {?} - FROM x4dat.virtual - WHERE alias={?}", "$alias@m4x.org", $lfull); - $page->trig("$alias@m4x.org ajouté"); - } else { - $page->trig("$mbox@polytechnique.org n'existe pas."); - } - } else { - $globals->xdb->query( - "INSERT INTO x4dat.virtual_redirect (vid,redirect) - SELECT vid,{?} - FROM x4dat.virtual - WHERE alias={?}", "$mbox@$dom", $lfull); - $page->trig("$mbox@$dom ajouté"); - } -} - -if (Env::has('del_member')) { - $globals->xdb->query( - "DELETE FROM x4dat.virtual_redirect - USING x4dat.virtual_redirect - INNER JOIN x4dat.virtual USING(vid) - WHERE redirect={?} AND alias={?}", Env::get('del_member'), $lfull); - redirect("?liste=$lfull"); -} - -$res = $globals->xdb->iterator( - "SELECT redirect - FROM x4dat.virtual_redirect AS vr - INNER JOIN x4dat.virtual AS v USING(vid) - WHERE v.alias={?} - ORDER BY redirect", $lfull); -$page->assign('mem', $res); - -$page->run(); -?> diff --git a/htdocs.net/groupe/alias-create.php b/htdocs.net/groupe/alias-create.php deleted file mode 100644 index 476fc0c..0000000 --- a/htdocs.net/groupe/alias-create.php +++ /dev/null @@ -1,28 +0,0 @@ -trig_run('champs «addresse souhaitée» vide'); - } - $liste = Post::get('liste'); - if (!preg_match("/^[a-zA-Z0-9\-\.]*$/", $liste)) { - $page->trig_run('le nom de l\'alias ne doit contenir que des lettres, chiffres, tirets et points'); - } - - $new = $liste.'@'.$globals->asso('mail_domain'); - $res = $globals->xdb->query('SELECT COUNT(*) FROM x4dat.virtual WHERE alias={?}', $new); - $n = $res->fetchOneCell(); - if($n) { - $page->trig_run('cet alias est déjà pris'); - } - - $globals->xdb->query('INSERT INTO x4dat.virtual (alias,type) VALUES({?}, "user")', $new); - redirect("alias-admin.php?liste=$new"); -} - -$page->run(); - -?> diff --git a/include/xnet/page.inc.php b/include/xnet/page.inc.php index 2939ebe..4c30410 100644 --- a/include/xnet/page.inc.php +++ b/include/xnet/page.inc.php @@ -98,7 +98,7 @@ class XnetPage extends PlatalPage if ($globals->asso('mail_domain')) { $sub['envoyer un mail'] = "$dim/mail"; $sub['créer une liste'] = "$dim/lists/create"; - $sub['créer un alias'] = "$dim/alias-create.php"; + $sub['créer un alias'] = "$dim/alias/create"; } $menu['Administrer Groupe'] = $sub; } diff --git a/modules/xnetlists.php b/modules/xnetlists.php index 97a74db..278fa7d 100644 --- a/modules/xnetlists.php +++ b/modules/xnetlists.php @@ -43,6 +43,9 @@ class XnetListsModule extends ListsModule 'grp/lists/check' => $this->make_hook('check', AUTH_MDP), 'grp/lists/sync' => $this->make_hook('sync', AUTH_MDP), + 'grp/alias/admin' => $this->make_hook('aadmin', AUTH_MDP), + 'grp/alias/create' => $this->make_hook('acreate', AUTH_MDP), + /* hack: lists uses that */ 'profile' => $this->make_hook('profile', AUTH_PUBLIC), ); @@ -223,6 +226,104 @@ class XnetListsModule extends ListsModule $page->assign('not_in_list', $not_in_list); } + function handler_aadmin(&$page, $lfull = null) + { + global $globals; + + if (is_null($lfull)) { + return PL_NOT_FOUND; + } + + new_groupadmin_page('xnet/groupe/alias-admin.tpl'); + + if (Env::has('add_member')) { + $add = Env::get('add_member'); + if (strstr($add, '@')) { + list($mbox,$dom) = explode('@', strtolower($add)); + } else { + $mbox = $add; + $dom = 'm4x.org'; + } + if($dom == 'polytechnique.org' || $dom == 'm4x.org') { + $res = $globals->xdb->query( + "SELECT a.alias, b.alias + FROM x4dat.aliases AS a + LEFT JOIN x4dat.aliases AS b ON (a.id=b.id AND b.type = 'a_vie') + WHERE a.alias={?} AND a.type!='homonyme'", $mbox); + if (list($alias, $blias) = $res->fetchOneRow()) { + $alias = empty($blias) ? $alias : $blias; + $globals->xdb->query( + "INSERT INTO x4dat.virtual_redirect (vid,redirect) + SELECT vid, {?} + FROM x4dat.virtual + WHERE alias={?}", "$alias@m4x.org", $lfull); + $page->trig("$alias@m4x.org ajouté"); + } else { + $page->trig("$mbox@polytechnique.org n'existe pas."); + } + } else { + $globals->xdb->query( + "INSERT INTO x4dat.virtual_redirect (vid,redirect) + SELECT vid,{?} + FROM x4dat.virtual + WHERE alias={?}", "$mbox@$dom", $lfull); + $page->trig("$mbox@$dom ajouté"); + } + } + + if (Env::has('del_member')) { + $globals->xdb->query( + "DELETE FROM x4dat.virtual_redirect + USING x4dat.virtual_redirect + INNER JOIN x4dat.virtual USING(vid) + WHERE redirect={?} AND alias={?}", Env::get('del_member'), $lfull); + redirect("?liste=$lfull"); + } + + $res = $globals->xdb->iterator( + "SELECT redirect + FROM x4dat.virtual_redirect AS vr + INNER JOIN x4dat.virtual AS v USING(vid) + WHERE v.alias={?} + ORDER BY redirect", $lfull); + $page->assign('mem', $res); + } + + function handler_acreate(&$page) + { + global $globals; + + new_groupadmin_page('xnet/groupe/alias-create.tpl'); + + if (!Post::has('submit')) { + return; + } + + if (!Post::has('liste')) { + $page->trig('champs «addresse souhaitée» vide'); + return; + } + $liste = Post::get('liste'); + if (!preg_match("/^[a-zA-Z0-9\-\.]*$/", $liste)) { + $page->trig('le nom de l\'alias ne doit contenir que des lettres,' + .' chiffres, tirets et points'); + return; + } + + $new = $liste.'@'.$globals->asso('mail_domain'); + $res = $globals->xdb->query('SELECT COUNT(*) FROM x4dat.virtual WHERE alias={?}', $new); + $n = $res->fetchOneCell(); + if($n) { + $page->trig('cet alias est déjà pris'); + return; + } + + $globals->xdb->query('INSERT INTO x4dat.virtual (alias,type) VALUES({?}, "user")', $new); + + global $platal; + redirect(smarty_function_rel()."/{$platal->ns}alias/admin/$new"); + } + function handler_profile(&$page, $user = null) { redirect('https://www.polytechnique.org/profile/'.$user); diff --git a/templates/xnet/groupe/alias-admin.tpl b/templates/xnet/groupe/alias-admin.tpl index 96923a5..7267a98 100644 --- a/templates/xnet/groupe/alias-admin.tpl +++ b/templates/xnet/groupe/alias-admin.tpl @@ -20,9 +20,9 @@ {* *} {**************************************************************************} -

[retour à la page des listes]

+

[retour à la page des listes]

-

Membres de {$smarty.request.liste}

+

Membres de {$platal->argv[1]}

@@ -31,7 +31,7 @@ {if $mem->total()} {iterate from=$mem item=m} {$m.redirect} - + retirer membre
@@ -44,7 +44,7 @@
Ajouter -
+
  diff --git a/templates/xnet/groupe/alias-create.tpl b/templates/xnet/groupe/alias-create.tpl index 57dfa29..b3be7b6 100644 --- a/templates/xnet/groupe/alias-create.tpl +++ b/templates/xnet/groupe/alias-create.tpl @@ -43,9 +43,9 @@ Les alias sont concus pour r

Pour les autres besoins de communications (notament pour un grand nombre de personnes, et pour bénéficier des outils -de modération), il est recommandé de créer une liste de diffusion. +de modération), il est recommandé de créer une liste de diffusion.

- + diff --git a/templates/xnet/groupe/annuaire-admin.tpl b/templates/xnet/groupe/annuaire-admin.tpl index a06a519..325ab96 100644 --- a/templates/xnet/groupe/annuaire-admin.tpl +++ b/templates/xnet/groupe/annuaire-admin.tpl @@ -53,7 +53,7 @@ - + {/foreach}
Caractéristiques de l'alias
{$l.list} {$l.desc}synchrosynchro
diff --git a/templates/xnet/groupe/listes-create.tpl b/templates/xnet/groupe/listes-create.tpl index 25aae99..d717871 100644 --- a/templates/xnet/groupe/listes-create.tpl +++ b/templates/xnet/groupe/listes-create.tpl @@ -26,12 +26,12 @@ Note : Les listes de diffusion sont un outil particulièrement adapté pour des échanges entre 6 personnes, ou plus (newsletter, débat interne au groupe ...). En revanche, elles s'avèrent peu praticables pour des discussions plus restreintes. Il est alors préférable -d'utiliser un alias, à la gestion beaucoup plus souple. +d'utiliser un alias, à la gestion beaucoup plus souple.

D'autre part, il est impossible d'inscrire une liste de diffusion à une autre liste de diffusion. Si tu as besoin de cette fonctionnalité, il faut alors impérativement utiliser -un alias qui, lui, est capable de regrouper plusieurs listes. +un alias qui, lui, est capable de regrouper plusieurs listes.

diff --git a/templates/xnet/groupe/listes.tpl b/templates/xnet/groupe/listes.tpl index e4c6870..bd7db7c 100644 --- a/templates/xnet/groupe/listes.tpl +++ b/templates/xnet/groupe/listes.tpl @@ -102,7 +102,7 @@ t'emp {if $may_update} - + {else} diff --git a/templates/xnet/groupe/membres-edit.tpl b/templates/xnet/groupe/membres-edit.tpl index a675992..280e969 100644 --- a/templates/xnet/groupe/membres-edit.tpl +++ b/templates/xnet/groupe/membres-edit.tpl @@ -114,7 +114,7 @@ {foreachelse}
[mail]{$a.alias}{$a.alias} [supprimer][mail] {$a.alias} - {$a.alias} + {$a.alias}