From: x2000habouzit Date: Thu, 23 Sep 2004 15:40:45 +0000 (+0000) Subject: reworked index/members/trombi to support vhost schemes X-Git-Tag: xorg/old~1505 X-Git-Url: http://git.polytechnique.org/?a=commitdiff_plain;h=b0ef08ccee360c737b33781e50d4a5c7da56fc26;p=platal.git reworked index/members/trombi to support vhost schemes --- diff --git a/htdocs/listes/index.php b/htdocs/listes/index.php index ad4849a..ad6f885 100644 --- a/htdocs/listes/index.php +++ b/htdocs/listes/index.php @@ -18,21 +18,28 @@ * Foundation, Inc., * * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * *************************************************************************** - $Id: index.php,v 1.3 2004-09-22 12:51:07 x2000habouzit Exp $ + $Id: index.php,v 1.4 2004-09-23 15:40:45 x2000habouzit Exp $ ***************************************************************************/ require("auto.prepend.inc.php"); new_skinned_page('listes/index.tpl', AUTH_MDP); include('xml-rpc-client.inc.php'); + $res = $globals->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($_GET['del'])) { $client->unsubscribe($_GET['del']); header('Location: index.php'); } -if(isset($_GET['add'])) { $client->subscribe($_GET['add']); } +if(isset($_GET['del'])) { + $client->unsubscribe('polytechnique.org',$_GET['del']); + header('Location: index.php'); +} +if(isset($_GET['add'])) { + $client->subscribe('polytechnique.org',$_GET['add']); + header('Location: index.php'); +} -$listes = $client->get_lists(); +$listes = $client->get_lists('polytechnique.org'); $page->assign_by_ref('listes',$listes); $page->run(); ?> diff --git a/htdocs/listes/liste.php b/htdocs/listes/members.php similarity index 94% rename from htdocs/listes/liste.php rename to htdocs/listes/members.php index ef0f3fd..6a4d62d 100644 --- a/htdocs/listes/liste.php +++ b/htdocs/listes/members.php @@ -18,14 +18,14 @@ * Foundation, Inc., * * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * *************************************************************************** - $Id: liste.php,v 1.7 2004-09-21 16:14:35 x2000habouzit Exp $ + $Id: members.php,v 1.1 2004-09-23 15:40:45 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_COOKIE, true); +new_skinned_page('listes/members.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,7 +33,7 @@ list($pass) = mysql_fetch_row($res); mysql_free_result($res); $client = new xmlrpc_client("http://{$_SESSION['uid']}:$pass@localhost:4949"); -$members = $client->get_members($liste); +$members = $client->get_members('polytechnique.org', $liste); if(is_array($members)) { $membres = Array(); diff --git a/htdocs/listes/trombi.php b/htdocs/listes/trombi.php index 81f4cdd..344551b 100644 --- a/htdocs/listes/trombi.php +++ b/htdocs/listes/trombi.php @@ -18,7 +18,7 @@ * Foundation, Inc., * * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * *************************************************************************** - $Id: trombi.php,v 1.3 2004-09-22 08:42:25 x2000habouzit Exp $ + $Id: trombi.php,v 1.4 2004-09-23 15:40:45 x2000habouzit Exp $ ***************************************************************************/ if(empty($_REQUEST['liste'])) header('Location: index.php'); @@ -34,7 +34,7 @@ list($pass) = mysql_fetch_row($res); mysql_free_result($res); $client = new xmlrpc_client("http://{$_SESSION['uid']}:$pass@localhost:4949"); -$members = $client->get_members_limit($liste,$npage,30); +$members = $client->get_members_limit('polytechnique.org',$liste,$npage,30); if(is_array($members)) { $membres = Array(); diff --git a/scripts/mailman/mailman-rpc.py b/scripts/mailman/mailman-rpc.py index 0fe4dff..41ce4a0 100755 --- a/scripts/mailman/mailman-rpc.py +++ b/scripts/mailman/mailman-rpc.py @@ -18,7 +18,7 @@ #* Foundation, Inc., * #* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * #*************************************************************************** -# $Id: mailman-rpc.py,v 1.29 2004-09-23 11:03:20 x2000habouzit Exp $ +# $Id: mailman-rpc.py,v 1.30 2004-09-23 15:40:46 x2000habouzit Exp $ #*************************************************************************** import base64, MySQLdb, os, getopt, sys, MySQLdb.converters @@ -109,75 +109,57 @@ def connectDB(): db.ping() return db.cursor() +def is_owner(userdesc,perms,mlist): + return ( perms == 'admin' and mm_cfg.ADMIN_ML_OWNER in mlist.owner ) or ( userdesc.address in mlist.owner ) + def is_admin_on(userdesc,perms,mlist): return ( perms == 'admin' ) or ( userdesc.address in mlist.owner ) #------------------------------------------------------------------------------- -# users procedures +# users procedures for [ index.php ] # -def get_lists((userdesc,perms)): +def get_lists((userdesc,perms),vhost): + prefix = vhost.lower()+'-' names = Utils.list_names() names.sort() result = [] for name in names: + if not name.startswith(prefix): + continue try: - mlist = MailList.MailList(name, lock=0) + mlist = MailList.MailList(name) except: continue - is_member = userdesc.address in mlist.getRegularMemberKeys() - is_admin = mm_cfg.ADMIN_ML_OWNER in mlist.owner - is_owner = ( perms == 'admin' and is_admin ) or ( userdesc.address in mlist.owner ) + is_member = userdesc.address in mlist.getRegularMemberKeys() + is_admin = mm_cfg.ADMIN_ML_OWNER in mlist.owner + is_owner = ( perms == 'admin' and is_admin ) or ( userdesc.address in mlist.owner ) + is_pending = False + for id in mlist.GetSubscriptionIds(): + if userdesc.address == mlist.GetRecord(id)[1]: + is_pending = True + break if mlist.advertised or is_member or is_owner: result.append( { - 'list' : name, + 'list' : str('-').join(name.split('-')[1:]), 'desc' : mlist.description, 'diff' : mlist.generic_nonmember_action, - 'ins' : mlist.subscribe_policy > 0, + 'ins' : mlist.subscribe_policy > 1, 'priv' : (1-mlist.advertised)+2*is_admin, 'welc' : mlist.welcome_msg, - 'you' : is_member + 2*is_owner + 'sub' : is_pending + 2*is_member, + 'own' : is_owner } ) + mlist.Unlock() return result -def get_members((userdesc,perms),listname): - try: - mlist = MailList.MailList(listname, lock=0) - except: - return 0 - members = mlist.getRegularMemberKeys() - 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.sort() - details = { 'addr' : listname+'@polytechnique.org', - 'desc' : mlist.description, - 'diff' : mlist.generic_nonmember_action, - 'ins' : mlist.subscribe_policy > 0, - 'priv' : (1-mlist.advertised)+2*is_admin, - 'welc' : mlist.welcome_msg, - 'you' : is_member + 2*is_owner - } - members = map(lambda member: (mlist.getMemberName(member) or '', member), members) - return (details,members,mlist.owner) - return 0 - -def get_members_limit((userdesc,perms),listname,page,nb_per_page): - try: - details,members,owners = get_members((userdesc,perms),listname) - except: - return 0 - i = (int(page)-1) * int(nb_per_page) - return (details,members[i:i+int(nb_per_page)],owners,(len(members)-1)/int(nb_per_page)+1) - -def subscribe((userdesc,perms),listname): +def subscribe((userdesc,perms),vhost,listname): try: - mlist = MailList.MailList(listname) + mlist = MailList.MailList(vhost+'-'+listname) except: return 0 try: - if ( mlist.subscribe_policy in (0,1) ) or ( userdesc.address in mlist.owner ) or ( mm_cfg.ADMIN_ML_OWNER in mlist.owner ): + if ( mlist.subscribe_policy in (0,1) ) or is_owner(userdesc,perms,mlist): result = 2 mlist.ApprovedAddMember(userdesc) else: @@ -192,9 +174,9 @@ def subscribe((userdesc,perms),listname): mlist.Unlock() return result -def unsubscribe((userdesc,perms),listname): +def unsubscribe((userdesc,perms),vhost,listname): try: - mlist = MailList.MailList(listname) + mlist = MailList.MailList(vhost+'-'+listname) except: return 0 try: @@ -207,6 +189,41 @@ def unsubscribe((userdesc,perms),listname): return 0 #------------------------------------------------------------------------------- +# users procedures for [ index.php ] +# + +def get_members((userdesc,perms),vhost,listname): + try: + mlist = MailList.MailList(vhost+'-'+listname, lock=0) + except: + return 0 + members = mlist.getRegularMemberKeys() + 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.sort() + details = { 'addr' : listname+'@polytechnique.org', + 'desc' : mlist.description, + 'diff' : mlist.generic_nonmember_action, + 'ins' : mlist.subscribe_policy > 0, + 'priv' : (1-mlist.advertised)+2*is_admin, + 'welc' : mlist.welcome_msg, + 'you' : is_member + 2*is_owner + } + members = map(lambda member: (mlist.getMemberName(member) or '', member), members) + return (details,members,mlist.owner) + return 0 + +def get_members_limit((userdesc,perms),vhost,listname,page,nb_per_page): + try: + details,members,owners = get_members((userdesc,perms),vhost,listname) + except: + return 0 + i = (int(page)-1) * int(nb_per_page) + return (details,members[i:i+int(nb_per_page)],owners,(len(members)-1)/int(nb_per_page)+1) + +#------------------------------------------------------------------------------- # owners procedures # diff --git a/templates/listes/index.tpl b/templates/listes/index.tpl index b0e6e4d..e3751d4 100644 --- a/templates/listes/index.tpl +++ b/templates/listes/index.tpl @@ -17,15 +17,9 @@ * Foundation, Inc., * * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * *************************************************************************** - $Id: index.tpl,v 1.5 2004-09-22 12:51:08 x2000habouzit Exp $ + $Id: index.tpl,v 1.6 2004-09-23 15:40:46 x2000habouzit Exp $ ***************************************************************************} -{if $smarty.request.add} -

-Ta demande d'inscription sur {$smarty.request.add} a été prise en compte. -

-{/if} -
Listes de diffusion de Polytechnique.org
diff --git a/templates/listes/listes.inc.tpl b/templates/listes/listes.inc.tpl index 87fbcba..43f7494 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.4 2004-09-22 12:51:08 x2000habouzit Exp $ + $Id: listes.inc.tpl,v 1.5 2004-09-23 15:40:46 x2000habouzit Exp $ ***************************************************************************} @@ -32,24 +32,23 @@ {if $liste.priv >= $min && $liste.priv <= $max|default:$min}
- {if $liste.you>1} - {$liste.list} + {$liste.list} + {if $liste.own} [mod] {elseif $smarty.session.perms eq admin} - {$liste.list} - [mod] - {else} - {$liste.list} + [mod] {/if} {$liste.desc} {if $liste.diff}modérée{else}libre{/if} {if $liste.ins}modérée{else}libre{/if} - {if $liste.you is odd} + {if $liste.sub eq 2} me désinscrire + {elseif $liste.sub eq 1} + en cours {elseif $liste.ins} - demander une inscription + demander son inscription {else} m'inscrire {/if} diff --git a/templates/listes/liste.tpl b/templates/listes/members.tpl similarity index 98% rename from templates/listes/liste.tpl rename to templates/listes/members.tpl index 6e3d31e..10ecb10 100644 --- a/templates/listes/liste.tpl +++ b/templates/listes/members.tpl @@ -17,7 +17,7 @@ * Foundation, Inc., * * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * *************************************************************************** - $Id: liste.tpl,v 1.9 2004-09-21 16:14:35 x2000habouzit Exp $ + $Id: members.tpl,v 1.1 2004-09-23 15:40:46 x2000habouzit Exp $ ***************************************************************************} {dynamic} diff --git a/templates/listes/trombi.tpl b/templates/listes/trombi.tpl index b911c3f..b6f4fa7 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.3 2004-09-22 08:42:26 x2000habouzit Exp $ + $Id: trombi.tpl,v 1.4 2004-09-23 15:40:46 x2000habouzit Exp $ ***************************************************************************} {dynamic} @@ -55,11 +55,7 @@
- {if $details.you > 1 || $smarty.session.perms eq admin} - Page de la liste - {else} - Page de la liste - {/if} + Page de la liste