From: x2000habouzit Date: Thu, 23 Sep 2004 18:46:58 +0000 (+0000) Subject: last vhosting things for moderate.php X-Git-Tag: xorg/old~1501 X-Git-Url: http://git.polytechnique.org/?a=commitdiff_plain;h=20f053e411f3f9ef1b32316636f79d9920f3f45b;p=platal.git last vhosting things for moderate.php now I have to work on owner/admin options --- diff --git a/htdocs/listes/moderate.php b/htdocs/listes/moderate.php index e152246..7396ad3 100644 --- a/htdocs/listes/moderate.php +++ b/htdocs/listes/moderate.php @@ -18,82 +18,80 @@ * Foundation, Inc., * * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * *************************************************************************** - $Id: moderate.php,v 1.3 2004-09-22 11:39:51 x2000habouzit Exp $ + $Id: moderate.php,v 1.4 2004-09-23 18:46:58 x2000habouzit Exp $ ***************************************************************************/ if(empty($_REQUEST['liste'])) header('Location: index.php'); $liste = strtolower($_REQUEST['liste']); require("auto.prepend.inc.php"); +new_skinned_page('listes/moderate.tpl', AUTH_MDP, true); 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(!$client->is_admin($liste)) header('Location: index.php'); if(isset($_REQUEST['sadd'])) { - $client->handle_request($liste,$_REQUEST['sadd'],4,''); /** 4 is the magic for SUBSCRIBE see Defaults.py **/ + $client->handle_request('polytechnique.org', $liste,$_REQUEST['sadd'],4,''); + /** 4 is the magic for SUBSCRIBE see Defaults.py **/ header("Location: moderate.php?liste=$liste"); } if(isset($_POST['sdel'])) { - $client->handle_request($liste,$_POST['sdel'],2,stripslashes($_POST['reason'])); /** 2 is the magic for REJECT see Defaults.py **/ + $client->handle_request('polytechnique.org', $liste,$_POST['sdel'],2,stripslashes($_POST['reason'])); + /** 2 is the magic for REJECT see Defaults.py **/ } if(isset($_POST['mid'])) { $mid = $_POST['mid']; if(isset($_POST['mok'])) - $client->handle_request($liste,$mid,1,''); /** 1 = APPROVE **/ + $client->handle_request('polytechnique.org', $liste,$mid,1,''); /** 1 = APPROVE **/ elseif(isset($_POST['mno'])) - $client->handle_request($liste,$mid,2,stripslashes($_POST['reason'])); /** 2 = REJECT **/ + $client->handle_request('polytechnique.org', $liste,$mid,2,stripslashes($_POST['reason'])); /** 2 = REJECT **/ elseif(isset($_POST['mdel'])) - $client->handle_request($liste,$mid,3,''); /** 3 = DISCARD **/ + $client->handle_request('polytechnique.org', $liste,$mid,3,''); /** 3 = DISCARD **/ } if(isset($_REQUEST['sid'])) { $sid = $_REQUEST['sid']; - if(list($subs,$mails) = $client->get_pending_ops($liste)) { + if(list($subs,$mails) = $client->get_pending_ops('polytechnique.org', $liste)) { foreach($subs as $user) { if($user['id'] == $sid) $u = $user; } - } - - if($u) { - new_skinned_page('listes/moderate_sub.tpl', AUTH_MDP, true); - $page->assign('del_user',$user); - } else { - new_skinned_page('listes/moderate.tpl', AUTH_MDP, true); - $page->assign_by_ref('subs', $subs); - $page->assign_by_ref('mails', $mails); - } + if($u) { + $page->changeTpl('listes/moderate_sub.tpl'); + $page->assign('del_user',$u); + } else { + $page->assign_by_ref('subs', $subs); + $page->assign_by_ref('mails', $mails); + } + } else + $page->assign('no_list', true); } elseif(isset($_GET['mid'])) { $mid = $_REQUEST['mid']; - $mail = $client->get_pending_mail($liste,$mid); + $mail = $client->get_pending_mail('polytechnique.org', $liste,$mid); if(is_array($mail)) { - new_skinned_page('listes/moderate_mail.tpl', AUTH_MDP, true); + $page->changeTpl('listes/moderate_mail.tpl'); $page->assign_by_ref('mail', $mail); } else { - new_skinned_page('listes/moderate.tpl', AUTH_MDP, true); - - if(list($subs,$mails) = $client->get_pending_ops($liste)) { + if(list($subs,$mails) = $client->get_pending_ops('polytechnique.org', $liste)) { $page->assign_by_ref('subs', $subs); $page->assign_by_ref('mails', $mails); - } + } else + $page->assign('no_list', true); } -} else { - - new_skinned_page('listes/moderate.tpl', AUTH_MDP, true); +} elseif(list($subs,$mails) = $client->get_pending_ops('polytechnique.org', $liste)) { - if(list($subs,$mails) = $client->get_pending_ops($liste)) { - $page->assign_by_ref('subs', $subs); - $page->assign_by_ref('mails', $mails); - } -} + $page->assign_by_ref('subs', $subs); + $page->assign_by_ref('mails', $mails); + +} else + $page->assign('no_list', true); function tolatin1($s) { return iconv('utf-8', 'iso-8859-1', $s); } $page->register_modifier('tl1','tolatin1'); diff --git a/scripts/mailman/mailman-rpc.py b/scripts/mailman/mailman-rpc.py index bc29c0d..3a7dafa 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.31 2004-09-23 17:20:36 x2000habouzit Exp $ +# $Id: mailman-rpc.py,v 1.32 2004-09-23 18:46:59 x2000habouzit Exp $ #*************************************************************************** import base64, MySQLdb, os, getopt, sys, MySQLdb.converters @@ -323,23 +323,9 @@ def del_owner((userdesc,perms),vhost,listname,user): # owners procedures [ admin.php ] # -def set_welcome((userdesc,perms),listname,welcome): +def get_pending_ops((userdesc,perms),vhost,listname): try: - mlist = MailList.MailList(listname) - except: - return 0 - try: - if not is_admin_on(userdesc, perms, mlist): - return 0 - mlist.welcome_msg = welcome - mlist.Save() - finally: - mlist.Unlock() - return True - -def get_pending_ops((userdesc,perms),listname): - try: - mlist = MailList.MailList(listname) + mlist = MailList.MailList(vhost+'-'+listname) except: return 0 try: @@ -347,10 +333,12 @@ def get_pending_ops((userdesc,perms),listname): return 0 subs = [] seen = [] + dosave = False for id in mlist.GetSubscriptionIds(): time, addr, fullname, passwd, digest, lang = mlist.GetRecord(id) if addr in seen: mlist.HandleRequest(id, mm_cfg.DISCARD) + dosave = True continue seen.append(addr) subs.append({ @@ -374,17 +362,18 @@ def get_pending_ops((userdesc,perms),listname): 'subj' : Utils.oneline(subject,'utf8'), 'stamp' : ptime }) - mlist.save(); + if dosave: mlist.save() except: mlist.Unlock() + raise return 0 mlist.Unlock() return (subs,helds) -def handle_request((userdesc,perms),listname,id,value,comment): +def handle_request((userdesc,perms),vhost,listname,id,value,comment): try: - mlist = MailList.MailList(listname) + mlist = MailList.MailList(vhost+'-'+listname) except: raise return 0 @@ -401,9 +390,9 @@ def handle_request((userdesc,perms),listname,id,value,comment): return 0 -def get_pending_mail((userdesc,perms),listname,id,raw=0): +def get_pending_mail((userdesc,perms),vhost,listname,id,raw=0): try: - mlist = MailList.MailList(listname) + mlist = MailList.MailList(vhost+'-'+listname) except: return 0 try: @@ -430,13 +419,6 @@ def get_pending_mail((userdesc,perms),listname,id,raw=0): mlist.Unlock() return 0 -def is_admin((userdesc,perms),listname): - try: - mlist = MailList.MailList(listname, lock=0) - except: - return 0 - return is_admin_on(userdesc, perms, mlist) - ################################################################################ # # INIT @@ -470,21 +452,23 @@ class FastXMLRPCServer(SimpleXMLRPCServer): mysql = connectDB() server = FastXMLRPCServer(("localhost", 4949), BasicAuthXMLRPCRequestHandler) +# index.php server.register_function(get_lists) -server.register_function(get_members) -server.register_function(get_members_limit) server.register_function(subscribe) server.register_function(unsubscribe) - +# members.php +server.register_function(get_members) +# trombi.php +server.register_function(get_members_limit) +# admin.php server.register_function(mass_subscribe) server.register_function(mass_unsubscribe) server.register_function(add_owner) server.register_function(del_owner) -server.register_function(set_welcome) +# moderate.php server.register_function(get_pending_ops) server.register_function(handle_request) server.register_function(get_pending_mail) -server.register_function(is_admin) server.serve_forever() diff --git a/templates/listes/admin.tpl b/templates/listes/admin.tpl index d642d08..8d36bad 100644 --- a/templates/listes/admin.tpl +++ b/templates/listes/admin.tpl @@ -17,12 +17,12 @@ * Foundation, Inc., * * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * *************************************************************************** - $Id: admin.tpl,v 1.3 2004-09-23 17:20:36 x2000habouzit Exp $ + $Id: admin.tpl,v 1.4 2004-09-23 18:47:00 x2000habouzit Exp $ ***************************************************************************} {dynamic} -{if $no_list || !$details.own || $smarty.session.perms neq admin} +{if $no_list || ( !$details.own && $smarty.session.perms neq admin )}

La liste n'existe pas ou tu n'as pas le droit de l'administrer

@@ -38,6 +38,10 @@ Tu n'es pas administrateur de la liste, mais du site. {/if}

+[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"