From e1f387066908d3c244fc5d19f4d50ad57b30df2a Mon Sep 17 00:00:00 2001 From: x2000habouzit Date: Tue, 21 Sep 2004 16:14:35 +0000 Subject: [PATCH] some improvements. no new feature --- htdocs/listes/admin.php | 105 ++++++++++++++++++++++++ htdocs/listes/liste.php | 38 +-------- scripts/mailman/mailman-rpc.py | 17 ++-- templates/listes/admin.tpl | 173 ++++++++++++++++++++++++++++++++++++++++ templates/listes/liste.tpl | 62 +------------- templates/listes/listes.inc.tpl | 11 ++- templates/listes/trombi.tpl | 6 +- 7 files changed, 305 insertions(+), 107 deletions(-) create mode 100644 htdocs/listes/admin.php create mode 100644 templates/listes/admin.tpl diff --git a/htdocs/listes/admin.php b/htdocs/listes/admin.php new file mode 100644 index 0000000..67687ab --- /dev/null +++ b/htdocs/listes/admin.php @@ -0,0 +1,105 @@ +db->query("SELECT password FROM auth_user_md5 WHERE user_id={$_SESSION['uid']}"); +list($pass) = mysql_fetch_row($res); +mysql_free_result($res); + +$client = new xmlrpc_client("http://{$_SESSION['uid']}:$pass@localhost:4949"); + +if(isset($_REQUEST['welc'])) $client->set_welcome($liste, $_REQUEST['welc']); + +if(isset($_REQUEST['add_member']) && isset($_REQUEST['member'])) { + $client->mass_subscribe($liste, Array($_REQUEST['member'])); +} + +if(isset($_REQUEST['del_member']) && isset($_REQUEST['member'])) { + $res = $globals->db->query("SELECT b.alias + FROM aliases AS a + INNER JOIN aliases AS b ON (a.id=b.id AND b.type='a_vie') + WHERE a.alias='{$_REQUEST['member']}'"); + if($forlife = mysql_fetch_row($res)) { + $client->mass_unsubscribe($liste, $forlife); + } + mysql_free_result($res); +} + +if(isset($_REQUEST['add_owner']) && isset($_REQUEST['owner'])) { + $client->add_owner($liste, $_REQUEST['owner']); +} + +if(isset($_REQUEST['del_owner']) && isset($_REQUEST['owner'])) { + $res = $globals->db->query("SELECT b.alias + FROM aliases AS a + INNER JOIN aliases AS b ON (a.id=b.id AND b.type='a_vie') + WHERE a.alias='{$_REQUEST['owner']}'"); + if(list($forlife) = mysql_fetch_row($res)) { + $client->del_owner($liste, $forlife); + } + mysql_free_result($res); +} + +$members = $client->get_members($liste); +if(is_array($members)) { + $membres = Array(); + foreach($members[1] as $member) { + if(preg_match('/^([^.]*.[^.]*.(\d\d\d\d))@polytechnique.org$/', $member[1], $matches)) { + $membres[$matches[2]][] = Array('n' => $member[0], 'l' => $matches[1]); + } else { + $membres[0][] = Array('l' => $member[1]); + } + } + ksort($membres); + + $moderos = Array(); + foreach($members[2] as $owner) { + list($m) = split('@',$owner); + $res = $globals->db->query("SELECT CONCAT(prenom, ' ', nom), promo + FROM auth_user_md5 AS u + INNER JOIN aliases AS a ON u.user_id = a.id + WHERE a.alias = '$m'"); + if(list($nom, $promo) = mysql_fetch_row($res)) { + $moderos[$promo][] = Array('n' => $nom, 'l' => $m); + } else { + $moderos[0][] = Array('l' => $owner); + } + mysql_free_result($res); + } + ksort($moderos); + + $page->assign_by_ref('details', $members[0]); + $page->assign_by_ref('members', $membres); + $page->assign_by_ref('owners', $moderos); + +} else + $page->assign('no_list',true); + +$page->run(); +?> diff --git a/htdocs/listes/liste.php b/htdocs/listes/liste.php index e334494..ef0f3fd 100644 --- a/htdocs/listes/liste.php +++ b/htdocs/listes/liste.php @@ -18,14 +18,14 @@ * Foundation, Inc., * * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * *************************************************************************** - $Id: liste.php,v 1.6 2004-09-21 15:40:35 x2000habouzit Exp $ + $Id: liste.php,v 1.7 2004-09-21 16:14:35 x2000habouzit Exp $ ***************************************************************************/ if(empty($_REQUEST['liste'])) header('Location: index.php'); $liste = strtolower($_REQUEST['liste']); require("auto.prepend.inc.php"); -new_skinned_page('listes/liste.tpl', AUTH_MDP, true); +new_skinned_page('listes/liste.tpl', AUTH_COOKIE, true); include('xml-rpc-client.inc.php'); $res = $globals->db->query("SELECT password FROM auth_user_md5 WHERE user_id={$_SESSION['uid']}"); @@ -33,40 +33,8 @@ list($pass) = mysql_fetch_row($res); mysql_free_result($res); $client = new xmlrpc_client("http://{$_SESSION['uid']}:$pass@localhost:4949"); - -if(isset($_REQUEST['welc'])) $client->set_welcome($liste, $_REQUEST['welc']); - -if(isset($_REQUEST['add_member']) && isset($_REQUEST['member'])) { - $client->mass_subscribe($liste, Array($_REQUEST['member'])); -} - -if(isset($_REQUEST['del_member']) && isset($_REQUEST['member'])) { - $res = $globals->db->query("SELECT b.alias - FROM aliases AS a - INNER JOIN aliases AS b ON (a.id=b.id AND b.type='a_vie') - WHERE a.alias='{$_REQUEST['member']}'"); - if($forlife = mysql_fetch_row($res)) { - $client->mass_unsubscribe($liste, $forlife); - } - mysql_free_result($res); -} - -if(isset($_REQUEST['add_owner']) && isset($_REQUEST['owner'])) { - $client->add_owner($liste, $_REQUEST['owner']); -} - -if(isset($_REQUEST['del_owner']) && isset($_REQUEST['owner'])) { - $res = $globals->db->query("SELECT b.alias - FROM aliases AS a - INNER JOIN aliases AS b ON (a.id=b.id AND b.type='a_vie') - WHERE a.alias='{$_REQUEST['owner']}'"); - if(list($forlife) = mysql_fetch_row($res)) { - $client->del_owner($liste, $forlife); - } - mysql_free_result($res); -} - $members = $client->get_members($liste); + if(is_array($members)) { $membres = Array(); foreach($members[1] as $member) { diff --git a/scripts/mailman/mailman-rpc.py b/scripts/mailman/mailman-rpc.py index abc0b8e..e204c5a 100755 --- a/scripts/mailman/mailman-rpc.py +++ b/scripts/mailman/mailman-rpc.py @@ -1,6 +1,6 @@ #!/usr/bin/env python #*************************************************************************** -#* Copyright (C) 2namelytechnique.org * +#* Copyright (C) 2004 polytechnique.org * #* http://opensource.polytechnique.org/ * #* * #* This program is free software; you can redistribute it and/or modify * @@ -18,7 +18,7 @@ #* Foundation, Inc., * #* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * #*************************************************************************** -# $Id: mailman-rpc.py,v 1.21 2004-09-21 15:40:35 x2000habouzit Exp $ +# $Id: mailman-rpc.py,v 1.22 2004-09-21 16:14:35 x2000habouzit Exp $ #*************************************************************************** import base64, MySQLdb, os @@ -125,9 +125,9 @@ def get_lists((userdesc,perms)): except: continue is_member = userdesc.address in mlist.getRegularMemberKeys() - is_owner = userdesc.address in mlist.owner is_admin = mm_cfg.ADMIN_ML_OWNER in mlist.owner - if ( mlist.advertised ) or ( perms == 'admin' and is_admin ) or is_member or is_owner: + is_owner = ( perms == 'admin' and is_admin ) or ( userdesc.address in mlist.owner ) + if mlist.advertised or is_member or is_owner: result.append( { 'list' : name, 'desc' : mlist.description, @@ -144,16 +144,17 @@ def get_members((userdesc,perms),listname): mlist = MailList.MailList(listname, lock=0) except: return 0 - if ( mlist.advertised ) or ( is_admin_on(userdesc, perms, mlist) ) or ( userdesc.address in members ): + is_member = userdesc.address in members + is_admin = mm_cfg.ADMIN_ML_OWNER in mlist.owner + is_owner = ( perms == 'admin' and is_admin ) or ( userdesc.address in mlist.owner ) + if mlist.advertised or is_member or is_owner or ( perms == 'admin' ): members = mlist.getRegularMemberKeys() members.sort() - is_member = userdesc.address in members - is_owner = userdesc.address in mlist.owner details = { 'addr' : listname+'@polytechnique.org', 'desc' : mlist.description, 'diff' : mlist.generic_nonmember_action, 'ins' : mlist.subscribe_policy > 0, - 'priv' : (1-mlist.advertised)+2*(mm_cfg.ADMIN_ML_OWNER in mlist.owner), + 'priv' : (1-mlist.advertised)+2*is_admin, 'welc' : mlist.welcome_msg, 'you' : is_member + 2*is_owner } diff --git a/templates/listes/admin.tpl b/templates/listes/admin.tpl new file mode 100644 index 0000000..89a11ea --- /dev/null +++ b/templates/listes/admin.tpl @@ -0,0 +1,173 @@ +{*************************************************************************** + * Copyright (C) 2003-2004 Polytechnique.org * + * http://opensource.polytechnique.org/ * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the Free Software * + * Foundation, Inc., * + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * + *************************************************************************** + $Id: admin.tpl,v 1.1 2004-09-21 16:14:35 x2000habouzit Exp $ + ***************************************************************************} + +{dynamic} + +{if $no_list} + +

La liste n'existe pas ou tu n'as pas le droit d'en voir les détails

+ +{else} + +
+ Liste {$smarty.request.liste} +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Adresse {mailto address=$details.addr}
Sujet {$details.desc}
Visibilité {if $details.priv eq 0}publique{elseif $details.priv eq 1}privée{else}admin{/if}
Diffusion {if $details.diff}modérée{else}libre{/if}
Inscription {if $details.ins}modérée{else}libre{/if}
+ trombino de la liste (page longue à charger) +
+ +
+ modérateurs de la liste +
+ +{if $owners|@count} + + {foreach from=$owners item=xs key=promo} + + + + + {/foreach} +
{if $promo}{$promo}{else}non-X{/if} + {foreach from=$xs item=x} + {if $promo} + {$x.n}
+ {else} + {$x.l}
+ {/if} + {/foreach} +
+{/if} + +
+ membres de la liste +
+ +{if $members|@count} + + {foreach from=$members item=xs key=promo} + + + + + {/foreach} +
{if $promo}{$promo}{else}non-X{/if} + {foreach from=$xs item=x} + {if $promo} + {$x.n}
+ {else} + {$x.l}
+ {/if} + {/foreach} +
+{/if} + +{if $details.you > 1 || $smarty.session.perms eq admin} +
+ Administrer la liste +
+{if $details.priv < 2} +

+Tu n'es pas administrateur de la liste, mais du site. +

+{/if} + +

modération : modérer la liste

+ +

+Pour entrer un utilisateur, il faut remplir les champs prévus à cet effet par son login, +c'est-à-dire "prenom.nom" ou "prenom.nom.promo" +

+ +
+ + + + + + + + + + + + + +
modifier les abonnésmodifier les modérateurs
+ + + +
+ +   + + + +   + +
+
+ +

+Un message est adressé automatiquement à toute personne ajoutée à la liste de diffusion. Voici le +message actuellement envoyé : il est modifiable à volonté ! +

+ +
+
+
+ +
+
+ +{/if} + +{/if} + +{/dynamic} + +{* vim:set et sw=2 sts=2 sws=2: *} diff --git a/templates/listes/liste.tpl b/templates/listes/liste.tpl index e4bc567..6e3d31e 100644 --- a/templates/listes/liste.tpl +++ b/templates/listes/liste.tpl @@ -17,7 +17,7 @@ * Foundation, Inc., * * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * *************************************************************************** - $Id: liste.tpl,v 1.8 2004-09-21 15:40:36 x2000habouzit Exp $ + $Id: liste.tpl,v 1.9 2004-09-21 16:14:35 x2000habouzit Exp $ ***************************************************************************} {dynamic} @@ -106,66 +106,6 @@ {/if} -{if $details.you > 1 || $smarty.session.perms eq admin} -
- Administrer la liste -
-{if $details.priv < 2} -

-Tu n'es pas administrateur de la liste, mais du site. -

-{/if} - -

modération : modérer la liste

- -

-Pour entrer un utilisateur, il faut remplir les champs prévus à cet effet par son login, -c'est-à-dire "prenom.nom" ou "prenom.nom.promo" -

- -
- - - - - - - - - - - - - -
modifier les abonnésmodifier les modérateurs
- - - -
- -   - - - -   - -
-
- -

-Un message est adressé automatiquement à toute personne ajoutée à la liste de diffusion. Voici le -message actuellement envoyé : il est modifiable à volonté ! -

- -
-
-
- -
-
- -{/if} - {/if} {/dynamic} diff --git a/templates/listes/listes.inc.tpl b/templates/listes/listes.inc.tpl index d25b951..c7b2c62 100644 --- a/templates/listes/listes.inc.tpl +++ b/templates/listes/listes.inc.tpl @@ -17,7 +17,7 @@ * Foundation, Inc., * * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * *************************************************************************** - $Id: listes.inc.tpl,v 1.2 2004-09-21 15:40:36 x2000habouzit Exp $ + $Id: listes.inc.tpl,v 1.3 2004-09-21 16:14:35 x2000habouzit Exp $ ***************************************************************************} @@ -32,8 +32,15 @@ {if $liste.priv >= $min && $liste.priv <= $max|default:$min} diff --git a/templates/listes/trombi.tpl b/templates/listes/trombi.tpl index 69dfc92..2cd0e71 100644 --- a/templates/listes/trombi.tpl +++ b/templates/listes/trombi.tpl @@ -17,7 +17,7 @@ * Foundation, Inc., * * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * *************************************************************************** - $Id: trombi.tpl,v 1.1 2004-09-10 23:13:04 x2000habouzit Exp $ + $Id: trombi.tpl,v 1.2 2004-09-21 16:14:35 x2000habouzit Exp $ ***************************************************************************} {dynamic} @@ -55,7 +55,11 @@
+ {if $liste.you>1} + {$liste.list} + [mod] + {elseif $smarty.session.perms eq admin} + {$liste.list} + [mod] + {else} {$liste.list} - {if $liste.you>1}[mod]{/if} + {/if} {$liste.desc} {if $liste.diff}modérée{else}libre{/if}
+ {if $details.you > 1 || $smarty.session.perms eq admin} + Page de la liste + {else} Page de la liste + {/if}
-- 2.1.4