From 2e94d2b81ecadfd32bea9e45a8f6cf938c877f7f Mon Sep 17 00:00:00 2001 From: x2000habouzit Date: Fri, 14 Jul 2006 20:34:32 +0000 Subject: [PATCH] migrate annuaire git-svn-id: svn+ssh://murphy/home/svn/platal/trunk@485 839d8a87-29fc-0310-9880-83ba4fa771e5 --- classes/Xnet.php | 2 +- htdocs.net/groupe/annuaire.php | 94 ------------------ htdocs.net/groupe/edit.php | 47 --------- htdocs.net/groupe/membres-edit.php | 18 ++-- include/xnet/page.inc.php | 4 +- include/xnet/smarty.plugins.inc.php | 2 +- modules/xnet.php | 2 +- modules/xnetgrp.php | 176 +++++++++++++++++++++++++++++++++- templates/xnet/admin.tpl | 4 +- templates/xnet/groupe/edit.tpl | 2 +- templates/xnet/groupe/mail.tpl | 2 +- templates/xnet/groupe/membres-del.tpl | 4 +- 12 files changed, 193 insertions(+), 164 deletions(-) delete mode 100644 htdocs.net/groupe/annuaire.php delete mode 100644 htdocs.net/groupe/edit.php diff --git a/classes/Xnet.php b/classes/Xnet.php index 408ff55..f76e287 100644 --- a/classes/Xnet.php +++ b/classes/Xnet.php @@ -31,7 +31,7 @@ class Xnet extends Platal global $globals; if ($globals->asso()) { if ($p = strpos($this->path, '/')) { - $this->ns = substr($this->path, 0, $p); + $this->ns = substr($this->path, 0, $p).'/'; $this->path = 'grp'.substr($this->path, $p); } else { $this->ns = $this->path.'/'; diff --git a/htdocs.net/groupe/annuaire.php b/htdocs.net/groupe/annuaire.php deleted file mode 100644 index 76a9946..0000000 --- a/htdocs.net/groupe/annuaire.php +++ /dev/null @@ -1,94 +0,0 @@ -asso('pub') == 'public') - new_group_page('xnet/groupe/annuaire.tpl'); -else - new_groupadmin_page('xnet/groupe/annuaire.tpl'); - -$page->assign('admin', may_update()); - -switch (Env::get('order')) { - case 'promo' : $group = 'promo'; $tri = 'promo_o DESC, nom, prenom'; break; - case 'promo_inv' : $group = 'promo'; $tri = 'promo_o, nom, prenom'; break; - case 'alpha_inv' : $group = 'initiale'; $tri = 'nom DESC, prenom DESC, promo'; break; - default : $group = 'initiale'; $tri = 'nom, prenom, promo'; -} -if ($group == 'initiale') - $res = $globals->xdb->iterRow( - 'SELECT UPPER(SUBSTRING(IF(m.origine="X",IF(u.nom_usage<>"", u.nom_usage, u.nom),m.nom), 1, 1)) as letter, COUNT(*) - FROM groupex.membres AS m - LEFT JOIN auth_user_md5 AS u ON ( u.user_id = m.uid ) - WHERE asso_id = {?} - GROUP BY letter - ORDER BY letter', $globals->asso('id')); -else - $res = $globals->xdb->iterRow( - 'SELECT IF(m.origine="X",u.promo,"extérieur") as promo, COUNT(*), IF(m.origine="X",u.promo,"") as promo_o - FROM groupex.membres AS m - LEFT JOIN auth_user_md5 AS u ON ( u.user_id = m.uid ) - WHERE asso_id = {?} - GROUP BY promo - ORDER BY promo_o DESC', $globals->asso('id')); - -$alphabet = array(); -$nb_tot = 0; -while (list($char, $nb) = $res->next()) { - $alphabet[] = $char; - $nb_tot += $nb; - if (Env::has($group) && $char == strtoupper(Env::get($group))) { - $tot = $nb; - } -} -$page->assign('group', $group); -$page->assign('request_group', Env::get($group)); -$page->assign('alphabet', $alphabet); -$page->assign('nb_tot', $nb_tot); - -$ofs = Env::getInt('offset'); -$tot = Env::get($group) ? $tot : $nb_tot; -$nbp = intval(($tot-1)/NB_PER_PAGE); -$links = array(); -if ($ofs) { - $links['précédent'] = $ofs-1; -} -for ($i = 0; $i <= $nbp; $i++) { - $links[(string)($i+1)] = $i; -} -if ($ofs < $nbp) { - $links['suivant'] = $ofs+1; -} -if (count($links)>1) { - $page->assign('links', $links); -} - -$ini = ''; -if (Env::has('initiale')) - $ini = 'AND IF(m.origine="X",IF(u.nom_usage<>"", u.nom_usage, u.nom),m.nom) LIKE "'.addslashes(Env::get('initiale')).'%"'; -elseif (Env::has('promo')) - $ini = 'AND IF(m.origine="X",u.promo,"extérieur") = "'.addslashes(Env::get('promo')).'"'; -$ann = $globals->xdb->iterator( - "SELECT IF(m.origine='X',IF(u.nom_usage<>'', u.nom_usage, u.nom) ,m.nom) AS nom, - IF(m.origine='X',u.prenom,m.prenom) AS prenom, - IF(m.origine='X',u.promo,'extérieur') AS promo, - IF(m.origine='X',u.promo,'') AS promo_o, - IF(m.origine='X',a.alias,m.email) AS email, - IF(m.origine='X',FIND_IN_SET('femme', u.flags),0) AS femme, - m.perms='admin' AS admin, - m.origine='X' AS x, - m.uid - FROM groupex.membres AS m - LEFT JOIN auth_user_md5 AS u ON ( u.user_id = m.uid ) - LEFT JOIN aliases AS a ON ( a.id = m.uid AND a.type='a_vie' ) - WHERE m.asso_id = {?} $ini - ORDER BY $tri - LIMIT {?},{?}", $globals->asso('id'), $ofs*NB_PER_PAGE, NB_PER_PAGE); - - -$page->assign('ann', $ann); - -$page->run(); - -?> diff --git a/htdocs.net/groupe/edit.php b/htdocs.net/groupe/edit.php deleted file mode 100644 index dced958..0000000 --- a/htdocs.net/groupe/edit.php +++ /dev/null @@ -1,47 +0,0 @@ -trig_run("le domaine doit être un FQDN (aucune modif effectuée) !!!"); - } - $globals->xdb->execute( - "UPDATE groupex.asso - SET nom={?}, diminutif={?}, cat={?}, dom={?}, descr={?}, site={?}, mail={?}, resp={?}, forum={?}, mail_domain={?}, ax={?}, pub={?}, sub_url={?}, inscriptible={?} - WHERE id={?}", - Post::get('nom'), Post::get('diminutif'), Post::get('cat'), Post::getInt('dom'), - Post::get('descr'), Post::get('site'), Post::get('mail'), Post::get('resp'), - Post::get('forum'), Post::get('mail_domain'), Post::has('ax'), Post::has('pub')?'private':'public', Post::get('sub_url'), Post::get('inscriptible'), - $globals->asso('id')); - if (Post::get('mail_domain')) { - $globals->xdb->execute('INSERT INTO virtual_domains (domain) VALUES({?})', Post::get('mail_domain')); - } - } else { - $globals->xdb->execute( - "UPDATE groupex.asso - SET descr={?}, site={?}, mail={?}, resp={?}, forum={?}, ax={?}, pub= {?}, sub_url={?} - WHERE id={?}", - Post::get('descr'), Post::get('site'), Post::get('mail'), Post::get('resp'), - Post::get('forum'), Post::has('ax'), Post::has('pub')?'private':'public', Post::get('sub_url'), $globals->asso('id')); - } - - if ($_FILES['logo']['name']) { - $logo = file_get_contents($_FILES['logo']['tmp_name']); - $mime = $_FILES['logo']['type']; - $globals->xdb->execute('UPDATE groupex.asso SET logo={?}, logo_mime={?} WHERE id={?}', $logo, $mime, $globals->asso('id')); - } - - redirect('../'.Post::get('diminutif', $globals->asso('diminutif')).'/edit.php'); - } - - if (has_perms()) { - $dom = $globals->xdb->iterator('SELECT * FROM groupex.dom ORDER BY nom'); - $page->assign('dom', $dom); - $page->assign('super', true); - } - $page->run(); - -?> diff --git a/htdocs.net/groupe/membres-edit.php b/htdocs.net/groupe/membres-edit.php index c5c86f5..72098bd 100644 --- a/htdocs.net/groupe/membres-edit.php +++ b/htdocs.net/groupe/membres-edit.php @@ -86,7 +86,9 @@ new_groupadmin_page('xnet/groupe/membres-edit.tpl'); $user = get_infos(Env::get('edit')); - if (empty($user)) { redirect("annuaire.php"); } + if (empty($user)) { + redirect('annuaire'); + } require 'lists.inc.php'; $client =& lists_xmlrpc(Session::getInt('uid'), Session::get('password'), $globals->asso('mail_domain')); @@ -141,9 +143,9 @@ $page->trig("{$user['prenom']} {$user['nom']} a été désabonné de $ml"); } } - redirect("annuaire.php"); + redirect('annuaire'); } - + $page->assign('user', $user); $listes = $client->get_lists($user['email2']); $page->assign('listes', $listes); @@ -159,7 +161,9 @@ { new_groupadmin_page('xnet/groupe/membres-del.tpl'); $user = get_infos(Env::get('del')); - if (empty($user)) { redirect("annuaire.php"); } + if (empty($user)) { + redirect('annuaire'); + } $page->assign('user', $user); if (Post::has('confirm')) { @@ -170,9 +174,9 @@ // don't unsubscribe email from list if other user use same email $user_same_email = get_infos($user['email']); - + if (($domain = $globals->asso('mail_domain')) && empty($user_same_email)) { - + require 'lists.inc.php'; $client =& lists_xmlrpc(Session::getInt('uid'), Session::get('password'), $domain); $listes = $client->get_lists($user['email2']); @@ -200,7 +204,7 @@ } } else { - redirect("annuaire.php"); + redirect('annuaire'); } $page->run(); diff --git a/include/xnet/page.inc.php b/include/xnet/page.inc.php index f336167..1b79379 100644 --- a/include/xnet/page.inc.php +++ b/include/xnet/page.inc.php @@ -74,7 +74,7 @@ class XnetPage extends PlatalPage $dim = $globals->asso('diminutif'); $sub['présentation'] = "$dim/"; if (may_update() || $globals->asso('pub') == 'public') { - $sub['annuaire du groupe'] = "$dim/annuaire.php"; + $sub['annuaire du groupe'] = "$dim/annuaire"; if ($globals->xnet->geoloc) $sub['carte'] = "$dim/geoloc.php"; } @@ -92,7 +92,7 @@ class XnetPage extends PlatalPage if (logged() && may_update()) { $sub = array(); - $sub['modifier l\'accueil'] = "$dim/edit.php"; + $sub['modifier l\'accueil'] = "$dim/edit"; if ($globals->wiki->wikidir && $globals->xnet->wiki) $sub['wiki'] = "$dim/Accueil"; if ($globals->asso('mail_domain')) { diff --git a/include/xnet/smarty.plugins.inc.php b/include/xnet/smarty.plugins.inc.php index 725b50f..f8331d5 100644 --- a/include/xnet/smarty.plugins.inc.php +++ b/include/xnet/smarty.plugins.inc.php @@ -36,7 +36,7 @@ function list_all_my_groups($params) WHERE m.uid={?}", Session::getInt('uid')); $html = '
Mes groupes :
'; while (list($nom, $mini) = $res->next()) { - $html .= "• $nom"; + $html .= "• $nom"; } return $html; } diff --git a/modules/xnet.php b/modules/xnet.php index 2d4a983..7b7c0a9 100644 --- a/modules/xnet.php +++ b/modules/xnet.php @@ -135,7 +135,7 @@ class XnetModule extends PLModule if (Post::has('diminutif')) { $globals->xdb->query('INSERT INTO groupex.asso (id,diminutif) VALUES(NULL,{?})', Post::get('diminutif')); - redirect(Post::get('diminutif').'/edit.php'); + redirect(Post::get('diminutif').'/edit'); } $res = $globals->xdb->query('SELECT nom,diminutif FROM groupex.asso ORDER by NOM'); diff --git a/modules/xnetgrp.php b/modules/xnetgrp.php index feb9239..3b0c455 100644 --- a/modules/xnetgrp.php +++ b/modules/xnetgrp.php @@ -24,17 +24,19 @@ class XnetGrpModule extends PLModule function handlers() { return array( - 'grp' => $this->make_hook('index', AUTH_PUBLIC), - 'grp/asso.php' => $this->make_hook('index', AUTH_PUBLIC), - 'grp/logo' => $this->make_hook('logo', AUTH_PUBLIC), + 'grp' => $this->make_hook('index', AUTH_PUBLIC), + 'grp/asso.php' => $this->make_hook('index', AUTH_PUBLIC), + 'grp/logo' => $this->make_hook('logo', AUTH_PUBLIC), + 'grp/edit' => $this->make_hook('edit', AUTH_MDP), + 'grp/annuaire' => $this->make_hook('annuaire', AUTH_MDP), ); } - function handler_index(&$page) + function handler_index(&$page, $arg = null) { global $globals; - if (!$globals->asso('id')) { + if (!is_null($arg)) { return PL_NOT_FOUND; } @@ -74,6 +76,170 @@ class XnetGrpModule extends PLModule exit; } + + function handler_edit(&$page) + { + global $globals; + + new_groupadmin_page('xnet/groupe/edit.tpl'); + + if (Post::has('submit')) { + if (has_perms()) { + if (Post::get('mail_domain') && (strstr(Post::get('mail_domain'), '.') === false)) { + $page->trig_run("le domaine doit être un FQDN (aucune modif effectuée) !!!"); + } + $globals->xdb->execute( + "UPDATE groupex.asso + SET nom={?}, diminutif={?}, cat={?}, dom={?}, + descr={?}, site={?}, mail={?}, resp={?}, + forum={?}, mail_domain={?}, ax={?}, pub={?}, + sub_url={?}, inscriptible={?} + WHERE id={?}", + Post::get('nom'), Post::get('diminutif'), + Post::get('cat'), Post::getInt('dom'), + Post::get('descr'), Post::get('site'), + Post::get('mail'), Post::get('resp'), + Post::get('forum'), Post::get('mail_domain'), + Post::has('ax'), Post::has('pub')?'private':'public', + Post::get('sub_url'), Post::get('inscriptible'), + $globals->asso('id')); + if (Post::get('mail_domain')) { + $globals->xdb->execute('INSERT INTO virtual_domains (domain) VALUES({?})', + Post::get('mail_domain')); + } + } else { + $globals->xdb->execute( + "UPDATE groupex.asso + SET descr={?}, site={?}, mail={?}, resp={?}, + forum={?}, ax={?}, pub= {?}, sub_url={?} + WHERE id={?}", + Post::get('descr'), Post::get('site'), + Post::get('mail'), Post::get('resp'), + Post::get('forum'), Post::has('ax'), + Post::has('pub')?'private':'public', + Post::get('sub_url'), $globals->asso('id')); + } + + if ($_FILES['logo']['name']) { + $logo = file_get_contents($_FILES['logo']['tmp_name']); + $mime = $_FILES['logo']['type']; + $globals->xdb->execute('UPDATE groupex.asso + SET logo={?}, logo_mime={?} + WHERE id={?}', $logo, $mime, + $globals->asso('id')); + } + + redirect('../'.Post::get('diminutif', $globals->asso('diminutif')).'/edit'); + } + + if (has_perms()) { + $dom = $globals->xdb->iterator('SELECT * FROM groupex.dom ORDER BY nom'); + $page->assign('dom', $dom); + $page->assign('super', true); + } + } + + function handler_annuaire(&$page) + { + global $globals; + + define('NB_PER_PAGE', 25); + + if ($globals->asso('pub') == 'public') { + new_group_page('xnet/groupe/annuaire.tpl'); + } else { + new_groupadmin_page('xnet/groupe/annuaire.tpl'); + } + + $page->assign('admin', may_update()); + + switch (Env::get('order')) { + case 'promo' : $group = 'promo'; $tri = 'promo_o DESC, nom, prenom'; break; + case 'promo_inv': $group = 'promo'; $tri = 'promo_o, nom, prenom'; break; + case 'alpha_inv': $group = 'initiale'; $tri = 'nom DESC, prenom DESC, promo'; break; + default : $group = 'initiale'; $tri = 'nom, prenom, promo'; + } + + if ($group == 'initiale') + $res = $globals->xdb->iterRow( + 'SELECT UPPER(SUBSTRING( + IF(m.origine="X", IF(u.nom_usage<>"", u.nom_usage, u.nom),m.nom), + 1, 1)) as letter, COUNT(*) + FROM groupex.membres AS m + LEFT JOIN auth_user_md5 AS u ON ( u.user_id = m.uid ) + WHERE asso_id = {?} + GROUP BY letter + ORDER BY letter', $globals->asso('id')); + else + $res = $globals->xdb->iterRow( + 'SELECT IF(m.origine="X",u.promo,"extérieur") AS promo, + COUNT(*), IF(m.origine="X",u.promo,"") AS promo_o + FROM groupex.membres AS m + LEFT JOIN auth_user_md5 AS u ON ( u.user_id = m.uid ) + WHERE asso_id = {?} + GROUP BY promo + ORDER BY promo_o DESC', $globals->asso('id')); + + $alphabet = array(); + $nb_tot = 0; + while (list($char, $nb) = $res->next()) { + $alphabet[] = $char; + $nb_tot += $nb; + if (Env::has($group) && $char == strtoupper(Env::get($group))) { + $tot = $nb; + } + } + $page->assign('group', $group); + $page->assign('request_group', Env::get($group)); + $page->assign('alphabet', $alphabet); + $page->assign('nb_tot', $nb_tot); + + $ofs = Env::getInt('offset'); + $tot = Env::get($group) ? $tot : $nb_tot; + $nbp = intval(($tot-1)/NB_PER_PAGE); + $links = array(); + if ($ofs) { + $links['précédent'] = $ofs-1; + } + for ($i = 0; $i <= $nbp; $i++) { + $links[(string)($i+1)] = $i; + } + if ($ofs < $nbp) { + $links['suivant'] = $ofs+1; + } + if (count($links)>1) { + $page->assign('links', $links); + } + + $ini = ''; + if (Env::has('initiale')) { + $ini = 'AND IF(m.origine="X", + IF(u.nom_usage<>"", u.nom_usage, u.nom), + m.nom) LIKE "'.addslashes(Env::get('initiale')).'%"'; + } elseif (Env::has('promo')) { + $ini = 'AND IF(m.origine="X", u.promo, "extérieur") = "' + .addslashes(Env::get('promo')).'"'; + } + + $ann = $globals->xdb->iterator( + "SELECT IF(m.origine='X',IF(u.nom_usage<>'', u.nom_usage, u.nom) ,m.nom) AS nom, + IF(m.origine='X',u.prenom,m.prenom) AS prenom, + IF(m.origine='X',u.promo,'extérieur') AS promo, + IF(m.origine='X',u.promo,'') AS promo_o, + IF(m.origine='X',a.alias,m.email) AS email, + IF(m.origine='X',FIND_IN_SET('femme', u.flags),0) AS femme, + m.perms='admin' AS admin, + m.origine='X' AS x, + m.uid + FROM groupex.membres AS m + LEFT JOIN auth_user_md5 AS u ON ( u.user_id = m.uid ) + LEFT JOIN aliases AS a ON ( a.id = m.uid AND a.type='a_vie' ) + WHERE m.asso_id = {?} $ini + ORDER BY $tri + LIMIT {?},{?}", $globals->asso('id'), $ofs*NB_PER_PAGE, NB_PER_PAGE); + + $page->assign('ann', $ann); + } } ?> diff --git a/templates/xnet/admin.tpl b/templates/xnet/admin.tpl index dca95f5..0f7f9fa 100644 --- a/templates/xnet/admin.tpl +++ b/templates/xnet/admin.tpl @@ -34,7 +34,7 @@

Ajouter un groupe

-
+

Pour ajouter un groupe, choisir ici le diminutif qu'il va utiliser, tu seras ensuite redirigé vers une page te permettant d'éditer le groupe : @@ -52,7 +52,7 @@ {foreach from=$assos item=a key=i name=all} {if $i is even}{/if} delete - {$a.nom} + {$a.nom} {if $i is odd || $smarty.foreach.all.last}{/if} {/foreach} diff --git a/templates/xnet/groupe/edit.tpl b/templates/xnet/groupe/edit.tpl index f62348b..65c3a56 100644 --- a/templates/xnet/groupe/edit.tpl +++ b/templates/xnet/groupe/edit.tpl @@ -24,7 +24,7 @@

{$asso.nom} : Éditer l'accueil

- + {if $super} diff --git a/templates/xnet/groupe/mail.tpl b/templates/xnet/groupe/mail.tpl index 2636eca..48f0f85 100644 --- a/templates/xnet/groupe/mail.tpl +++ b/templates/xnet/groupe/mail.tpl @@ -57,7 +57,7 @@ masculin ou f diff --git a/templates/xnet/groupe/membres-del.tpl b/templates/xnet/groupe/membres-del.tpl index d26bf48..3e40155 100644 --- a/templates/xnet/groupe/membres-del.tpl +++ b/templates/xnet/groupe/membres-del.tpl @@ -23,7 +23,7 @@ {if $smarty.post.confirm}

-retour à l'annuaire +retour à l'annuaire

{else} @@ -43,7 +43,7 @@ et le désabonner de toutes les listes de diffusion du groupe ?

- + {/if} -- 2.1.4
- écrit à tout l'annuaire du groupe (voir annuaire) + écrit à tout l'annuaire du groupe (voir annuaire)