X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fxnetgrp.php;h=596a0a1bd41eec07f66d279b1725cb3b461fdb22;hb=1edb5aa5afd0d6c0172d845537c9b51fb47874fb;hp=b064196fa9bb6c1217f6de48a973fd8fe937042c;hpb=c4cfd6eb2e9b8b03c8833905f4da372140b27682;p=platal.git
diff --git a/modules/xnetgrp.php b/modules/xnetgrp.php
index b064196..596a0a1 100644
--- a/modules/xnetgrp.php
+++ b/modules/xnetgrp.php
@@ -209,7 +209,7 @@ class XnetGrpModule extends PLModule
global $globals;
$site = $globals->asso('site');
if (!$site) {
- $page->trig('Le groupe n\'a pas de site web.');
+ $page->trigError('Le groupe n\'a pas de site web.');
return $this->handler_index($page);
}
http_redirect($site);
@@ -221,10 +221,16 @@ class XnetGrpModule extends PLModule
global $globals;
$page->changeTpl('xnetgrp/edit.tpl');
- if (Post::has('submit') && Session::has_xsrf_token()) {
+ if (Post::has('submit')) {
+ S::assert_xsrf_token();
+
+ $flags = new PlFlagSet('wiki_desc');
+ if (Post::has('notif_unsub') && Post::i('notif_unsub') == 1) {
+ $flags->addFlag('notif_unsub');
+ }
if (S::has_perms()) {
if (Post::v('mail_domain') && (strstr(Post::v('mail_domain'), '.') === false)) {
- $page->trig("le domaine doit être un FQDN (aucune modif effectuée) !!!");
+ $page->trigError("le domaine doit être un FQDN (aucune modif effectuée) !!!");
return;
}
XDB::execute(
@@ -233,7 +239,7 @@ class XnetGrpModule extends PLModule
descr={?}, site={?}, mail={?}, resp={?},
forum={?}, mail_domain={?}, ax={?}, pub={?},
sub_url={?}, inscriptible={?}, unsub_url={?},
- flags='wiki_desc'
+ flags={?}
WHERE id={?}",
Post::v('nom'), Post::v('diminutif'),
Post::v('cat'), Post::i('dom'),
@@ -242,9 +248,9 @@ class XnetGrpModule extends PLModule
Post::v('forum'), Post::v('mail_domain'),
Post::has('ax'), Post::v('pub'),
Post::v('sub_url'), Post::v('inscriptible'),
- Post::v('unsub_url'),$globals->asso('id'));
+ Post::v('unsub_url'), $flags, $globals->asso('id'));
if (Post::v('mail_domain')) {
- XDB::execute('INSERT INTO virtual_domains (domain) VALUES({?})',
+ XDB::execute('INSERT IGNORE INTO virtual_domains (domain) VALUES({?})',
Post::v('mail_domain'));
}
} else {
@@ -252,14 +258,14 @@ class XnetGrpModule extends PLModule
"UPDATE groupex.asso
SET descr={?}, site={?}, mail={?}, resp={?},
forum={?}, ax={?}, pub= {?}, sub_url={?},
- unsub_url={?},flags='wiki_desc'
+ unsub_url={?},flags={?}
WHERE id={?}",
Post::v('descr'), Post::v('site'),
Post::v('mail'), Post::v('resp'),
Post::v('forum'), Post::has('ax'),
- Post::has('pub'),
+ Post::v('pub'),
Post::v('sub_url'), Post::v('unsub_url'),
- $globals->asso('id'));
+ $flags, $globals->asso('id'));
}
if ($_FILES['logo']['name']) {
@@ -272,8 +278,6 @@ class XnetGrpModule extends PLModule
}
pl_redirect('../'.Post::v('diminutif', $globals->asso('diminutif')).'/edit');
- } else if (Post::has('submit')) {
- $page->trig("La mise à jour des paramètres du groupe a échouée, merci de réssayer.");
}
if (S::has_perms()) {
@@ -282,7 +286,7 @@ class XnetGrpModule extends PLModule
$page->assign('super', true);
}
if (!$globals->asso('wiki_desc') && $globals->asso('descr')) {
- $page->trig("Attention, le format de la description a changé et utilise désormais la syntaxe wiki "
+ $page->trigWarning("Attention, le format de la description a changé et utilise désormais la syntaxe wiki "
. "intégrée au site. Il te faudra probablement adapter le formatage du texte actuel pour "
. "qu'il s'affiche correctement avec cette nouvelle syntaxe.");
}
@@ -593,25 +597,26 @@ class XnetGrpModule extends PLModule
if (Env::has('right') && (may_update() || S::has('suid'))) {
switch (Env::v('right')) {
case 'admin':
- XnetSession::killSuid();
+ Platal::session()->stopSUID();
break;
case 'anim':
- XnetSession::doSelfSuid();
+ Platal::session()->doSelfSuid();
may_update(true);
is_member(true);
break;
case 'member':
- XnetSession::doSelfSuid();
+ Platal::session()->doSelfSuid();
may_update(false, true);
is_member(true);
break;
case 'logged':
- XnetSession::doSelfSuid();
+ Platal::session()->doSelfSuid();
may_update(false, true);
is_member(false, true);
break;
}
}
+// var_dump($_SESSION);
http_redirect($_SERVER['HTTP_REFERER']);
}
@@ -691,7 +696,7 @@ class XnetGrpModule extends PLModule
WHERE a.alias={?}', $globals->asso('id'), $forlife);
pl_redirect("member/$forlife");
} else {
- $page->trig($email." n'est pas un alias polytechnique.org valide.");
+ $page->trigError($email." n'est pas un alias polytechnique.org valide.");
}
} else {
require_once 'xorg.misc.inc.php';
@@ -715,7 +720,7 @@ class XnetGrpModule extends PLModule
$uid, $globals->asso('id'), $email);
pl_redirect("member/$email");
}
- $page->trig("Utilisateur invalide");
+ $page->trigError("Utilisateur invalide");
} else {
$res = XDB::query('SELECT MAX(uid)+1 FROM groupex.membres');
$uid = max(intval($res->fetchOneCell()), 50001);
@@ -725,7 +730,7 @@ class XnetGrpModule extends PLModule
pl_redirect("member/$email");
}
} else {
- $page->trig("« $email » n'est pas une adresse mail valide.");
+ $page->trigError("« $email » n'est pas une adresse mail valide.");
}
}
}
@@ -766,15 +771,34 @@ class XnetGrpModule extends PLModule
function unsubscribe(&$user)
{
- global $globals, $page;
+ global $globals;
XDB::execute(
"DELETE FROM groupex.membres WHERE uid={?} AND asso_id={?}",
$user['uid'], $globals->asso('id'));
+ if ($globals->asso('notif_unsub')) {
+ $mailer = new PlMailer('xnetgrp/unsubscription-notif.mail.tpl');
+ $res = XDB::iterRow("SELECT a.alias, u.prenom, IF(u.nom_usage != '', u.nom_usage, u.nom) AS nom
+ FROM groupex.membres AS m
+ INNER JOIN aliases AS a ON (m.uid = a.id AND FIND_IN_SET('bestalias', a.flags))
+ INNER JOIn auth_user_md5 AS u ON (u.user_id = a.id)
+ WHERE m.asso_id = {?} AND m.perms = 'admin'",
+ $globals->asso('id'));
+ while (list($alias, $prenom, $nom) = $res->next()) {
+ $mailer->addTo("\"$prenom $nom\" <$alias@{$globals->mail->domain}>");
+ }
+ $mailer->assign('group', $globals->asso('nom'));
+ $mailer->assign('prenom', $user['prenom']);
+ $mailer->assign('nom', $user['nom']);
+ $mailer->assign('mail', $user['email2']);
+ $mailer->assign('selfdone', $user['uid'] == S::i('uid'));
+ $mailer->send();
+ }
+
$user_same_email = get_infos($user['email']);
$domain = $globals->asso('mail_domain');
- if (!$domain || !empty($user_same_email)) {
+ if (!$domain || (!empty($user_same_email) && $user_same_email['uid'] != $user['uid'])) {
return true;
}
@@ -791,9 +815,9 @@ class XnetGrpModule extends PLModule
$mmlist->unsubscribe($liste['list']);
}
} elseif ($liste['sub']) {
- $page->trig("{$user['prenom']} {$user['nom']} a une"
- ." demande d'inscription en cours sur la"
- ." liste {$liste['list']}@ !");
+ Platal::page()->trigWarning("{$user['prenom']} {$user['nom']} a une"
+ ." demande d'inscription en cours sur la"
+ ." liste {$liste['list']}@ !");
$warning = true;
}
}
@@ -821,9 +845,9 @@ class XnetGrpModule extends PLModule
}
if ($this->unsubscribe($user)) {
- $page->trig('Vous avez été désinscrit du groupe avec succès.');
+ $page->trigSuccess('Vous avez été désinscrit du groupe avec succès.');
} else {
- $page->trig('Vous avez été désinscrit du groupe, mais des erreurs se sont produites lors des désinscriptions des alias et des mailing-lists.');
+ $page->trigWarning('Vous avez été désinscrit du groupe, mais des erreurs se sont produites lors des désinscriptions des alias et des mailing-lists.');
}
$page->assign('is_member', is_member(true));
}
@@ -842,13 +866,13 @@ class XnetGrpModule extends PLModule
}
if ($this->unsubscribe($user)) {
- $page->trig("{$user['prenom']} {$user['nom']} a été désabonné du groupe !");
+ $page->trigSuccess("{$user['prenom']} {$user['nom']} a été désabonné du groupe !");
} else {
- $page->trig("{$user['prenom']} {$user['nom']} a été désabonné du groupe, mais des erreurs subsistent !");
+ $page->trigWarning("{$user['prenom']} {$user['nom']} a été désabonné du groupe, mais des erreurs subsistent !");
}
}
- private function changeLogin(PlatalPage &$page, array &$user, MMList &$mmlist, $login)
+ private function changeLogin(PlPage &$page, array &$user, MMList &$mmlist, $login)
{
require_once 'user.func.inc.php';
// Search the uid of the user...
@@ -860,10 +884,10 @@ class XnetGrpModule extends PLModule
if ($res->numRows() == 0) {
$x = get_not_registered_user($login);
if (!$x) {
- $page->trig("Le login $login ne correspond à aucun X.");
+ $page->trigError("Le login $login ne correspond à aucun X.");
return false;
} else if (count($x) > 1) {
- $page->trig("Le login $login correspond a plusieurs camarades.");
+ $page->trigError("Le login $login correspond a plusieurs camarades.");
return false;
}
$uid = $x[0]['user_id'];
@@ -898,20 +922,23 @@ class XnetGrpModule extends PLModule
// Update subscription to aliases
if ($email != $user['email']) {
XDB::execute("UPDATE IGNORE virtual_redirect AS vr
- INNER JOIN virtual AS v ON(vr.vid = v.vid AND SUBSTRING_INDEX(alias, '@', 2) = {?})
+ INNER JOIN virtual AS v ON(vr.vid = v.vid AND SUBSTRING_INDEX(alias, '@', -1) = {?})
SET vr.redirect = {?}
WHERE vr.redirect = {?}",
$globals->asso('mail_domain'), $email, $user['email']);
XDB::execute("DELETE vr.*
FROM virtual_redirect AS vr
- INNER JOIN virtual AS v ON(vr.vid = v.vid AND SUBSTRING_INDEX(alias, '@', 2) = {?})
+ INNER JOIN virtual AS v ON(vr.vid = v.vid AND SUBSTRING_INDEX(alias, '@', -1) = {?})
WHERE vr.redirect = {?}",
$globals->asso('mail_domain'), $user['email']);
foreach (Env::v('ml1', array()) as $ml => $state) {
$mmlist->replace_email($ml, $user['email'], $email);
}
}
- return $login;
+ if ($sub) {
+ return $login;
+ }
+ return $user['email'];
}
function handler_admin_member(&$page, $user)
@@ -962,7 +989,7 @@ class XnetGrpModule extends PLModule
$perms ? 'admin' : 'membre',
$user['uid'], $globals->asso('id'));
$user['perms'] = $perms;
- $page->trig('Permissions modifiées !');
+ $page->trigSuccess('Permissions modifiées !');
}
// Update ML subscriptions
@@ -971,24 +998,24 @@ class XnetGrpModule extends PLModule
if ($ask == $state) {
if ($state && $email_changed) {
$mmlist->replace_email($ml, $from_email, $user['email2']);
- $page->trig("L'abonnement de {$user['prenom']} {$user['nom']} à $ml@ a été mis à jour.");
+ $page->trigSuccess("L'abonnement de {$user['prenom']} {$user['nom']} à $ml@ a été mis à jour.");
}
continue;
}
if ($state == '1') {
- $page->trig("{$user['prenom']} {$user['nom']} a "
+ $page->trigWarning("{$user['prenom']} {$user['nom']} a "
."actuellement une demande d'inscription en "
."cours sur $ml@ !!!");
} elseif ($ask) {
$mmlist->mass_subscribe($ml, Array($user['email2']));
- $page->trig("{$user['prenom']} {$user['nom']} a été abonné à $ml@.");
+ $page->trigSuccess("{$user['prenom']} {$user['nom']} a été abonné à $ml@.");
} else {
if ($email_changed) {
$mmlist->mass_unsubscribe($ml, Array($from_email));
} else {
$mmlist->mass_unsubscribe($ml, Array($user['email2']));
}
- $page->trig("{$user['prenom']} {$user['nom']} a été désabonné de $ml@.");
+ $page->trigSuccess("{$user['prenom']} {$user['nom']} a été désabonné de $ml@.");
}
}
@@ -1000,28 +1027,29 @@ class XnetGrpModule extends PLModule
XDB::query("INSERT INTO virtual_redirect (vid,redirect)
SELECT vid,{?} FROM virtual WHERE alias={?}",
$user['email'], $ml);
- $page->trig("{$user['prenom']} {$user['nom']} a été abonné à $ml.");
+ $page->trigSuccess("{$user['prenom']} {$user['nom']} a été abonné à $ml.");
} else {
XDB::query("DELETE FROM virtual_redirect
USING virtual_redirect
INNER JOIN virtual USING(vid)
WHERE redirect={?} AND alias={?}",
$user['email'], $ml);
- $page->trig("{$user['prenom']} {$user['nom']} a été désabonné de $ml.");
+ $page->trigSuccess("{$user['prenom']} {$user['nom']} a été désabonné de $ml.");
}
}
}
$page->assign('user', $user);
+ echo $user['email2'];
$listes = $mmlist->get_lists($user['email2']);
$page->assign('listes', $listes);
$res = XDB::query(
'SELECT alias, redirect IS NOT NULL as sub
FROM virtual AS v
- LEFT JOIN virtual_redirect AS vr ON(v.vid=vr.vid AND redirect={?})
+ LEFT JOIN virtual_redirect AS vr ON(v.vid=vr.vid AND (redirect = {?} OR redirect = {?}))
WHERE alias LIKE {?} AND type="user"',
- $user['email'], '%@'.$globals->asso('mail_domain'));
+ $user['email'], $user['email2'], '%@'.$globals->asso('mail_domain'));
$page->assign('alias', $res->fetchAllAssoc());
}
@@ -1053,20 +1081,20 @@ class XnetGrpModule extends PLModule
$page->assign('rss', $rss);
}
- private function upload_image(PlatalPage &$page, PlUpload &$upload)
+ private function upload_image(PlPage &$page, PlUpload &$upload)
{
if (@!$_FILES['image']['tmp_name'] && !Env::v('image_url')) {
return true;
}
if (!$upload->upload($_FILES['image']) && !$upload->download(Env::v('image_url'))) {
- $page->trig('Impossible de télécharger l\'image');
+ $page->trigError('Impossible de télécharger l\'image');
return false;
} elseif (!$upload->isType('image')) {
- $page->trig('Le fichier n\'est pas une image valide au format JPEG, GIF ou PNG.');
+ $page->trigError('Le fichier n\'est pas une image valide au format JPEG, GIF ou PNG.');
$upload->rm();
return false;
} elseif (!$upload->resizeImage(200, 300, 100, 100, 32284)) {
- $page->trig('Impossible de retraiter l\'image');
+ $page->trigError('Impossible de retraiter l\'image');
return false;
}
return true;
@@ -1134,12 +1162,12 @@ class XnetGrpModule extends PLModule
($art['promo_min'] != 0 && ($art['promo_min'] <= 1900 || $art['promo_min'] >= 2020)) ||
($art['promo_max'] != 0 && ($art['promo_max'] <= 1900 || $art['promo_max'] >= 2020))))
{
- $page->trig("L'intervalle de promotions est invalide.");
+ $page->trigError("L'intervalle de promotions est invalide.");
Post::kill('valid');
}
if (!trim($art['titre']) || !trim($art['texte'])) {
- $page->trig("L'article doit avoir un titre et un contenu.");
+ $page->trigError("L'article doit avoir un titre et un contenu.");
Post::kill('valid');
}
@@ -1159,14 +1187,13 @@ class XnetGrpModule extends PLModule
if (Post::v('valid') == 'Enregistrer') {
$promo_min = ($art['public'] ? 0 : $art['promo_min']);
$promo_max = ($art['public'] ? 0 : $art['promo_max']);
- $flags = array();
+ $flags = new PlFlagSet();
if ($art['public']) {
- $flags[] = 'public';
+ $flags->addFlag('public');
}
if ($art['photo']) {
- $flags[] = 'photo';
+ $flags->addFlag('photo');
}
- $flags = implode(',', $flags);
if (is_null($aid)) {
$fulltext = $art['texte'];
if (!empty($art['contact_html'])) {
@@ -1198,7 +1225,7 @@ class XnetGrpModule extends PLModule
$art['promo_min'], $art['promo_max'], $art['peremption'], "", S::v('uid'),
$upload);
$article->submit();
- $page->trig("L'affichage sur la page d'accueil de Polytechnique.org est en attente de validation.");
+ $page->trigWarning("L'affichage sur la page d'accueil de Polytechnique.org est en attente de validation.");
} else if ($upload && $upload->exists()) {
$upload->rm();
}
@@ -1207,7 +1234,7 @@ class XnetGrpModule extends PLModule
$article = new NLReq(S::v('uid'), $globals->asso('nom') . " : " .$art['titre'],
$art['texte'], $art['contact_html']);
$article->submit();
- $page->trig("La parution dans la Lettre Mensuelle est en attente de validation.");
+ $page->trigWarning("La parution dans la Lettre Mensuelle est en attente de validation.");
}
} else {
XDB::query("UPDATE groupex.announces