* Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
***************************************************************************
- $Id: liste.php,v 1.1 2004-09-10 21:28:53 x2000habouzit Exp $
+ $Id: liste.php,v 1.2 2004-09-10 22:28:39 x2000habouzit Exp $
***************************************************************************/
if(empty($_REQUEST['liste'])) header('Location: index.php');
mysql_free_result($res);
$client = new xmlrpc_client("http://{$_SESSION['uid']}:$pass@localhost:4949");
-$members = $client->get_members($liste);
+if(isset($_REQUEST['info'])) $client->set_welcome($liste, $_REQUEST['info']);
+
+if(isset($_REQUEST['add_member']) && isset($_REQUEST['member'])) {
+ $client->mass_subscribe($liste, Array($_REQUEST['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['add_owner']) && isset($_REQUEST['owner'])) {
+ $client->add_owner($liste, $_REQUEST['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);
+}
+
+$members = $client->get_members($liste);
if(is_array($members)) {
$membres = Array();
foreach($members[1] as $member) {
}
mysql_free_result($res);
}
- ksort($membres);
+ ksort($moderos);
$page->assign_by_ref('details', $members[0]);
$page->assign_by_ref('members', $membres);
#!/usr/bin/env python
#***************************************************************************
-#* Copyright (C) 2004 Polytechnique.org *
+#* Copyright (C) 2namelytechnique.org *
#* http://opensource.polytechnique.org/ *
#* *
#* This program is free software; you can redistribute it and/or modify *
#* Foundation, Inc., *
#* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
#***************************************************************************
-# $Id: mailman-rpc.py,v 1.15 2004-09-10 21:28:53 x2000habouzit Exp $
+# $Id: mailman-rpc.py,v 1.16 2004-09-10 22:28:39 x2000habouzit Exp $
#***************************************************************************
import base64, MySQLdb
self.end_headers()
def getUser(self, uid, md5):
- mysql.execute ("""SELECT u.prenom,u.nom,a.alias,u.perms
+ mysql.execute ("""SELECT CONCAT(u.prenom, ' ',u.nom),a.alias,u.perms
FROM auth_user_md5 AS u
INNER JOIN aliases AS a ON a.id=u.user_id
WHERE u.user_id = '%s' AND u.password = '%s'
LIMIT 1""" %( uid, md5 ) )
if int(mysql.rowcount) is 1:
- user = mysql.fetchone()
- userdesc = UserDesc(user[2]+'@polytechnique.org', user[0]+' '+user[1], None, 0)
- return (userdesc,user[3])
+ name,forlife,perms = mysql.fetchone()
+ userdesc = UserDesc(forlife+'@polytechnique.org', name, None, 0)
+ return (userdesc,perms)
else:
return None
return 0
try:
if not is_admin_on(userdesc, perms, mlist):
- return None
+ return 0
members = mlist.getRegularMemberKeys()
added = []
for user in users:
- if user+'@polytechnique.org' in members:
- continue
- mysql.execute ("""SELECT CONCAT(u.prenom,' ',u.nom)
+ mysql.execute ("""SELECT CONCAT(u.prenom,' ',u.nom), f.alias
FROM auth_user_md5 AS u
- INNER JOIN aliases AS a ON (a.id=u.user_id AND alias='%s')
+ INNER JOIN aliases AS f ON (f.id=u.user_id AND f.type='a_vie')
+ INNER JOIN aliases AS a ON (a.id=u.user_id AND a.alias='%s')
LIMIT 1""" %( user ) )
if int(mysql.rowcount) is 1:
- row = mysql.fetchone()
- userd = UserDesc(user+'@polytechnique.org', row[0], None, 0)
+ name, forlife = mysql.fetchone()
+ if forlife+'@polytechnique.org' in members:
+ continue
+ userd = UserDesc(forlife+'@polytechnique.org', name, None, 0)
mlist.ApprovedAddMember(userd)
added.append( (userd.fullname, userd.address) )
mlist.Save()
mlist.Unlock()
return added
-def mass_unsubscribe((userdesc,prems),listname,users):
+def mass_unsubscribe((userdesc,perms),listname,users):
try:
mlist = MailList.MailList(listname)
except:
return 0
try:
if not is_admin_on(userdesc, perms, mlist):
- return None
+ return 0
map(lambda user: mlist.ApprovedDeleteMember(user+'@polytechnique.org', None, 0, 0), users)
mlist.Save()
return 0
try:
if not is_admin_on(userdesc, perms, mlist):
- return None
- addr = user+'@polytechnique.org'
- if addr not in mlist.owner:
- mlist.owner.append(addr)
- mlist.Save()
+ return 0
+ mysql.execute ("""SELECT f.alias
+ FROM aliases AS f
+ INNER JOIN aliases AS a ON (a.id=f.id AND a.alias='%s')
+ WHERE f.type='a_vie'
+ LIMIT 1""" %( user ) )
+ if int(mysql.rowcount) is 1:
+ forlife = mysql.fetchone()[0]
+ if forlife+'@polytechnique.org' not in mlist.owner:
+ mlist.owner.append(forlife+'@polytechnique.org')
+ mlist.Save()
finally:
mlist.Unlock()
return True
return 0
try:
if not is_admin_on(userdesc, perms, mlist):
- return None
+ return 0
+ if len(mlist.owner) < 2:
+ return 0
mlist.owner.remove(user+'@polytechnique.org')
mlist.Save()
finally:
return 0
try:
if not is_admin_on(userdesc, perms, mlist):
- return None
+ return 0
mlist.info = info
mlist.Save()
finally:
* Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
***************************************************************************
- $Id: liste.tpl,v 1.1 2004-09-10 21:28:53 x2000habouzit Exp $
+ $Id: liste.tpl,v 1.2 2004-09-10 22:28:39 x2000habouzit Exp $
***************************************************************************}
{dynamic}
<td>
{foreach from=$xs item=x}
{if $promo}
- <a href="javascript:x()" onclick="popWin('{"fiche.php"|url}?user={$x.l}')">{$x.n}</a>
+ <a href="javascript:x()" onclick="popWin('{"fiche.php"|url}?user={$x.l}')">{$x.n}</a><br />
{else}
- {$x.l}
+ {$x.l}<br />
{/if}
{/foreach}
</td>
<td>
{foreach from=$xs item=x}
{if $promo}
- <a href="javascript:x()" onclick="popWin('{"fiche.php"|url}?user={$x.l}')">{$x.n}</a>
+ <a href="javascript:x()" onclick="popWin('{"fiche.php"|url}?user={$x.l}')">{$x.n}</a><br />
{else}
- {$x.l}
+ {$x.l}<br />
{/if}
{/foreach}
</td>
Administrer la liste
</div>
+<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>
+
+<form method='post' action='{$smarty.server.REQUEST_URI}'>
+ <table class='tinybicol'>
+ <tr>
+ <th>modifier les abonnés</th>
+ <th>modifier les modérateurs</th>
+ </tr>
+ <tr>
+ <td>
+ <input type='text' name='member' />
+ </td>
+ <td>
+ <input type='text' name='owner' />
+ </td>
+ </tr>
+ <tr class='center'>
+ <td>
+ <input type='submit' name='add_member' value='ajouter' />
+
+ <input type='submit' name='del_member' value='supprimer' />
+ </td>
+ <td>
+ <input type='submit' name='add_owner' value='ajouter' />
+
+ <input type='submit' name='del_owner' value='supprimer' />
+ </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>
+
+<form method='post' action='{$smarty.server.REQUEST_URI}'>
+ <div class='center'>
+ <textarea cols='50' rows='8' name='info'>{$details.info}</textarea><br />
+ <input type='submit' name='update' value='mettre à jour' />
+ </div>
+</form>
+
{/if}
{/if}