vhosting for admin.php
authorx2000habouzit <x2000habouzit>
Thu, 23 Sep 2004 17:20:35 +0000 (17:20 +0000)
committerx2000habouzit <x2000habouzit>
Thu, 23 Sep 2004 17:20:35 +0000 (17:20 +0000)
htdocs/listes/admin.php
scripts/mailman/mailman-rpc.py
templates/listes/admin.tpl
templates/listes/listes.inc.tpl

index 67687ab..4dfe2c5 100644 (file)
@@ -18,7 +18,7 @@
  *  Foundation, Inc.,                                                      *
  *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                *
  ***************************************************************************
-        $Id: admin.php,v 1.1 2004-09-21 16:14:35 x2000habouzit Exp $
+        $Id: admin.php,v 1.2 2004-09-23 17:20:35 x2000habouzit Exp $
  ***************************************************************************/
 
 if(empty($_REQUEST['liste'])) header('Location: index.php');
@@ -34,39 +34,25 @@ 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['add_member'])) {
+    $client->mass_subscribe('polytechnique.org', $liste, Array($_REQUEST['add_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['del_member'])) {
+    $client->mass_unsubscribe('polytechnique.org', $liste, Array($_REQUEST['del_member']));
+    header("Location: ?liste=$liste");
 }
 
-if(isset($_REQUEST['add_owner']) && isset($_REQUEST['owner'])) {
-    $client->add_owner($liste, $_REQUEST['owner']);
+if(isset($_REQUEST['add_owner'])) {
+    $client->add_owner('polytechnique.org', $liste, $_REQUEST['add_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);
+if(isset($_REQUEST['del_owner'])) {
+    $client->del_owner('polytechnique.org', $liste, $_REQUEST['del_owner']);
+    header("Location: ?liste=$liste");
 }
 
-$members = $client->get_members($liste);
+$members = $client->get_members('polytechnique.org', $liste);
 if(is_array($members)) {
     $membres = Array();
     foreach($members[1] as $member) {
index 41ce4a0..bc29c0d 100755 (executable)
@@ -18,7 +18,7 @@
 #*  Foundation, Inc.,                                                      *
 #*  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                *
 #***************************************************************************
-#       $Id: mailman-rpc.py,v 1.30 2004-09-23 15:40:46 x2000habouzit Exp $
+#       $Id: mailman-rpc.py,v 1.31 2004-09-23 17:20:36 x2000habouzit Exp $
 #***************************************************************************
 
 import base64, MySQLdb, os, getopt, sys, MySQLdb.converters
@@ -146,7 +146,6 @@ def get_lists((userdesc,perms),vhost):
                     'diff' : mlist.generic_nonmember_action,
                     'ins'  : mlist.subscribe_policy > 1,
                     'priv' : (1-mlist.advertised)+2*is_admin,
-                    'welc' : mlist.welcome_msg,
                     'sub'  : is_pending + 2*is_member,
                     'own'  : is_owner
                     } )
@@ -194,27 +193,38 @@ def unsubscribe((userdesc,perms),vhost,listname):
 
 def get_members((userdesc,perms),vhost,listname):
     try:
-        mlist = MailList.MailList(vhost+'-'+listname, lock=0)
+        mlist = MailList.MailList(vhost+'-'+listname)
     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 )
+    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 or ( perms == 'admin' ):
         members.sort()
         details = { 'addr' : listname+'@polytechnique.org',
                     '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
                   }
         members = map(lambda member: (mlist.getMemberName(member) or '', member), members)
+        mlist.Unlock()
         return (details,members,mlist.owner)
+    mlist.Unlock()
     return 0
 
+#-------------------------------------------------------------------------------
+# users procedures for [ trombi.php ]
+#
+
 def get_members_limit((userdesc,perms),vhost,listname,page,nb_per_page):
     try:
         details,members,owners = get_members((userdesc,perms),vhost,listname)
@@ -224,12 +234,12 @@ def get_members_limit((userdesc,perms),vhost,listname,page,nb_per_page):
     return (details,members[i:i+int(nb_per_page)],owners,(len(members)-1)/int(nb_per_page)+1)
 
 #-------------------------------------------------------------------------------
-# owners procedures
+# owners procedures [ admin.php ]
 #
 
-def mass_subscribe((userdesc,perms),listname,users):
+def mass_subscribe((userdesc,perms),vhost,listname,users):
     try:
-        mlist = MailList.MailList(listname)
+        mlist = MailList.MailList(vhost+'-'+listname)
     except:
         return 0
     try:
@@ -256,9 +266,9 @@ def mass_subscribe((userdesc,perms),listname,users):
         mlist.Unlock()
         return added
 
-def mass_unsubscribe((userdesc,perms),listname,users):
+def mass_unsubscribe((userdesc,perms),vhost,listname,users):
     try:
-        mlist = MailList.MailList(listname)
+        mlist = MailList.MailList(vhost+'-'+listname)
     except:
         return 0
     try:
@@ -271,9 +281,9 @@ def mass_unsubscribe((userdesc,perms),listname,users):
         mlist.Unlock()
         return users
 
-def add_owner((userdesc,perms),listname,user):
+def add_owner((userdesc,perms),vhost,listname,user):
     try:
-        mlist = MailList.MailList(listname)
+        mlist = MailList.MailList(vhost+'-'+listname)
     except:
         return 0
     try:
@@ -293,9 +303,9 @@ def add_owner((userdesc,perms),listname,user):
         mlist.Unlock()
         return True
 
-def del_owner((userdesc,perms),listname,user):
+def del_owner((userdesc,perms),vhost,listname,user):
     try:
-        mlist = MailList.MailList(listname)
+        mlist = MailList.MailList(vhost+'-'+listname)
     except:
         return 0
     try:
@@ -309,6 +319,10 @@ def del_owner((userdesc,perms),listname,user):
         mlist.Unlock()
         return True
 
+#-------------------------------------------------------------------------------
+# owners procedures [ admin.php ]
+#
+
 def set_welcome((userdesc,perms),listname,welcome):
     try:
         mlist = MailList.MailList(listname)
index 50dfbc7..d642d08 100644 (file)
  *  Foundation, Inc.,                                                      *
  *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                *
  ***************************************************************************
-        $Id: admin.tpl,v 1.2 2004-09-22 11:39:51 x2000habouzit Exp $
+        $Id: admin.tpl,v 1.3 2004-09-23 17:20:36 x2000habouzit Exp $
  ***************************************************************************}
 
 {dynamic}
 
-{if $no_list}
+{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 d'en voir les détails</p>
+<p class='erreur'>La liste n'existe pas ou tu n'as pas le droit de l'administrer</p>
 
 {else}
 
-<div class="rubrique">
-  Liste {$smarty.request.liste}
-</div>
-
-<table class='tinybicol' cellpadding='0' cellspacing='0'>
-  <tr>
-    <td class='titre'> Adresse </td>
-    <td>{mailto address=$details.addr}</td>
-  </tr>
-  <tr>
-    <td class='titre'> Sujet </td>
-    <td>{$details.desc}</td>
-  </tr>
-  <tr>
-    <td class='titre'> Visibilité </td>
-    <td>{if $details.priv eq 0}publique{elseif $details.priv eq 1}privée{else}admin{/if}</td>
-  </tr>
-  <tr>
-    <td class='titre'> Diffusion </td>
-    <td>{if $details.diff}modérée{else}libre{/if}</td>
-  </tr>
-  <tr>
-    <td class='titre'> Inscription </td>
-    <td>{if $details.ins}modérée{else}libre{/if}</td>
-  </tr>
-  <tr>
-    <td colspan='2' class='center'>
-      <a href='trombi.php?liste={$smarty.request.liste}'>trombino de la liste</a> (page longue à charger)
-    </td>
-  </tr>    
-</table>
-
-<div class='rubrique'>
-  modérateurs de la liste
-</div>
-
-{if $owners|@count}
-<table class='tinybicol' cellpadding='0' cellspacing='0'>
-  {foreach from=$owners item=xs key=promo}
-  <tr>
-    <td class='titre'>{if $promo}{$promo}{else}non-X{/if}</td>
-    <td>
-      {foreach from=$xs item=x}
-      {if $promo}
-      <a href="javascript:x()" onclick="popWin('{"fiche.php"|url}?user={$x.l}')">{$x.n}</a><br />
-      {else}
-      {$x.l}<br />
-      {/if}
-      {/foreach}
-    </td>
-  </tr>
-  {/foreach}
-</table>
-{/if}
-
 <div class='rubrique'>
-  membres de la liste
+  Administrer la liste {$details.addr}
 </div>
-
-{if $members|@count}
-<table class='bicol' cellpadding='0' cellspacing='0'>
-  {foreach from=$members item=xs key=promo}
-  <tr>
-    <td class='titre'>{if $promo}{$promo}{else}non-X{/if}</td>
-    <td>
-      {foreach from=$xs item=x}
-      {if $promo}
-      <a href="javascript:x()" onclick="popWin('{"fiche.php"|url}?user={$x.l}')">{$x.n}</a><br />
-      {else}
-      {$x.l}<br />
-      {/if}
-      {/foreach}
-    </td>
-  </tr>
-  {/foreach}
-</table>
-{/if}
-
-{if $details.you > 1 || $smarty.session.perms eq admin}
-<div class='rubrique'>
-  Administrer la liste
-</div>
-{if $details.you < 2}
+{if !$details.own}
 <p class='erreur'>
 Tu n'es pas administrateur de la liste, mais du site.
 </p>
 {/if}
 
-<p><strong>modération :</strong> <a href='moderate.php?liste={$smarty.request.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>
 
+<div class='rubrique'>
+  modérateurs de la liste
+</div>
+
 <form method='post' action='{$smarty.server.REQUEST_URI}'>
-  <table class='tinybicol'>
+  <table class='tinybicol' cellpadding='0' cellspacing='0'>
+    {foreach from=$owners item=xs key=promo}
     <tr>
-      <th>modifier les abonnés</th>
-      <th>modifier les modérateurs</th>
-    </tr>
-    <tr>
-      <td>
-        <input type='text' name='member' />
-      </td>
+      <td class='titre'>{if $promo}{$promo}{else}non-X{/if}</td>
       <td>
-        <input type='text' name='owner' />
+        {foreach from=$xs item=x}
+        {if $promo}
+        <a href="javascript:x()" onclick="popWin('{"fiche.php"|url}?user={$x.l}')">{$x.n}</a>
+        {else}
+        {$x.l}
+        {/if}
+        <a href='?liste={$smarty.get.liste}&amp;del_owner={$x.l}'>
+          <img src='{"images/retirer.gif"|url}' alt='retirer utilisateur' />
+        </a><br />
+        {/foreach}
       </td>
     </tr>
-    <tr class='center'>
-      <td>
-        <input type='submit' name='add_member' value='ajouter' />
-        &nbsp;
-        <input type='submit' name='del_member' value='supprimer' />
-      </td>
+    {/foreach}
+    <tr>
+      <td class='titre'>Ajouter ...</td>
       <td>
-        <input type='submit' name='add_owner' value='ajouter' />
+        <input type='text' name='add_owner' />
         &nbsp;
-        <input type='submit' name='del_owner' value='supprimer' />
+        <input type='submit' value='ajouter' />
       </td>
     </tr>
   </table>
 </form>
 
-<p>
-Un message est adressé automatiquement à toute personne ajoutée à la liste de diffusion.  Voici le
-message actuellement envoyé : il est modifiable à volonté !
-</p>
+
+<div class='rubrique'>
+  membres de la liste
+</div>
 
 <form method='post' action='{$smarty.server.REQUEST_URI}'>
-  <div class='center'>
-    <textarea cols='50' rows='8' name='welc'>{$details.welc}</textarea><br />
-    <input type='submit' name='update' value='mettre à jour' />
-  </div>
+  <table class='bicol' cellpadding='0' cellspacing='0'>
+    {foreach from=$members item=xs key=promo}
+    <tr>
+      <td class='titre'>{if $promo}{$promo}{else}non-X{/if}</td>
+      <td>
+        {foreach from=$xs item=x}
+        {if $promo}
+        <a href="javascript:x()" onclick="popWin('{"fiche.php"|url}?user={$x.l}')">{$x.n}</a>
+        {else}
+        {$x.l}
+        {/if}
+        <a href='?liste={$smarty.get.liste}&amp;del_member={$x.l}'>
+          <img src='{"images/retirer.gif"|url}' alt='retirer utilisateur' />
+        </a><br />
+        {/foreach}
+      </td>
+    </tr>
+    {/foreach}
+    <tr>
+      <td class='titre'>Ajouter ...</td>
+      <td>
+        <input type='text' size='32' name='add_member' />
+        &nbsp;
+        <input type='submit' value='ajouter' />
+      </td>
+    </tr>
+  </table>
 </form>
 
 {/if}
 
-{/if}
-
 {/dynamic}
 
 {* vim:set et sw=2 sts=2 sws=2: *}
index 43f7494..517b53d 100644 (file)
@@ -17,7 +17,7 @@
  *  Foundation, Inc.,                                                      *
  *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                *
  ***************************************************************************
-        $Id: listes.inc.tpl,v 1.5 2004-09-23 15:40:46 x2000habouzit Exp $
+        $Id: listes.inc.tpl,v 1.6 2004-09-23 17:20:36 x2000habouzit Exp $
  ***************************************************************************}
 
 <table class='bicol' cellpadding='0' cellspacing='0'>
@@ -34,9 +34,9 @@
     <td>
       <a href='members.php?liste={$liste.list}'>{$liste.list}</a>
       {if $liste.own}
-      [<a href='moderate.php?liste={$liste.list}'>mod</a>]
+      [<a href='admin.php?liste={$liste.list}'>adm</a>]
       {elseif $smarty.session.perms eq admin}
-      [<span class='erreur'><a href='moderate.php?liste={$liste.list}'>mod</a></span>]
+      [<span class='erreur'><a href='admin.php?liste={$liste.list}'>adm</a></span>]
       {/if}
     </td>
     <td>{$liste.desc}</td>