* 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();
?>
#* 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
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:
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:
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
#
* 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 $
***************************************************************************}
<table class='bicol' cellpadding='0' cellspacing='0'>
{if $liste.priv >= $min && $liste.priv <= $max|default:$min}
<tr class='{cycle values="impair,pair"}'>
<td>
- {if $liste.you>1}
- <a href='admin.php?liste={$liste.list}'>{$liste.list}</a>
+ <a href='members.php?liste={$liste.list}'>{$liste.list}</a>
+ {if $liste.own}
[<a href='moderate.php?liste={$liste.list}'>mod</a>]
{elseif $smarty.session.perms eq admin}
- <a href='admin.php?liste={$liste.list}'>{$liste.list}</a>
- <span class='erreur'>[<a href='moderate.php?liste={$liste.list}'>mod</a>]</span>
- {else}
- <a href='liste.php?liste={$liste.list}'>{$liste.list}</a>
+ [<span class='erreur'><a href='moderate.php?liste={$liste.list}'>mod</a></span>]
{/if}
</td>
<td>{$liste.desc}</td>
<td class='center'>{if $liste.diff}modérée{else}libre{/if}</td>
<td class='center'>{if $liste.ins}modérée{else}libre{/if}</td>
<td class='right'>
- {if $liste.you is odd}
+ {if $liste.sub eq 2}
<a href='{$smarty.server.PHP_SELF}?del={$liste.list}'>me désinscrire</a>
+ {elseif $liste.sub eq 1}
+ <span class='erreur'>en cours</span>
{elseif $liste.ins}
- <a href='{$smarty.server.PHP_SELF}?add={$liste.list}'>demander une inscription</a>
+ <a href='{$smarty.server.PHP_SELF}?add={$liste.list}'>demander son inscription</a>
{else}
<a href='{$smarty.server.PHP_SELF}?add={$liste.list}'>m'inscrire</a>
{/if}