last vhosting things for moderate.php
authorx2000habouzit <x2000habouzit>
Thu, 23 Sep 2004 18:46:58 +0000 (18:46 +0000)
committerx2000habouzit <x2000habouzit>
Thu, 23 Sep 2004 18:46:58 +0000 (18:46 +0000)
now I have to work on owner/admin options

htdocs/listes/moderate.php
scripts/mailman/mailman-rpc.py
templates/listes/admin.tpl

index e152246..7396ad3 100644 (file)
  *  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');
index bc29c0d..3a7dafa 100755 (executable)
@@ -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()
 
index d642d08..8d36bad 100644 (file)
  *  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 )}
 
 <p class='erreur'>La liste n'existe pas ou tu n'as pas le droit de l'administrer</p>
 
@@ -38,6 +38,10 @@ Tu n'es pas administrateur de la liste, mais du site.
 {/if}
 
 <p>
+[<a href='moderate.php?liste={$smarty.get.liste}'>modérer la liste</a>]
+</p>
+
+<p>
 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"
 </p>