* 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');
$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) {
#* 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
'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
} )
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)
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:
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:
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:
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:
mlist.Unlock()
return True
+#-------------------------------------------------------------------------------
+# owners procedures [ admin.php ]
+#
+
def set_welcome((userdesc,perms),listname,welcome):
try:
mlist = MailList.MailList(listname)
* 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}&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' />
-
- <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' />
- <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}&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' />
+
+ <input type='submit' value='ajouter' />
+ </td>
+ </tr>
+ </table>
</form>
{/if}
-{/if}
-
{/dynamic}
{* vim:set et sw=2 sts=2 sws=2: *}
* 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'>
<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>