if ($globals->asso('id')) {
$joins .= XDB::format("LEFT JOIN groupex.membres AS gpm ON (gpm.uid = a.uid AND gpm.asso_id = {?})\n", $globals->asso('id'));
$fields[] = 'gpm.perms AS group_perms';
+ $fields[] = 'gpm.comm AS group_comm';
}
if (count($fields) > 0) {
$fields = ', ' . implode(', ', $fields);
return $this->profile()->promo();
}
+ public function firstName()
+ {
+ if (!$this->hasProfile()) {
+ return $this->displayName();
+ }
+ return $this->profile()->firstName();
+ }
+
+ public function lastName()
+ {
+ if (!$this->hasProfile()) {
+ return '';
+ }
+ return $this->profile()->lastName();
+ }
+
/** Return the main profile attached with this account if any.
*/
public function profile()
/** Get all the aliases the user belongs to.
*/
- public function emailAliases($domain = null)
+ public function emailAliases($domain = null, $type = 'user', $sub_state = false)
{
+ $join = XDB::format('(vr.redirect = {?} OR vr.redirect = {?}) ',
+ $this->forlifeEmail(), $this->m4xForlifeEmail());
$where = '';
if (!is_null($domain)) {
- $where = XDB::format(' AND alias LIKE CONCAT("%@", {?})', $domain);
+ $where = XDB::format('WHERE v.alias LIKE CONCAT("%@", {?})', $domain);
+ }
+ if (!is_null($type)) {
+ if (empty($where)) {
+ $where = XDB::format('WHERE v.type = {?}', $type);
+ } else {
+ $where .= XDB::format(' AND v.type = {?}', $type);
+ }
+ }
+ if ($sub_state) {
+ return XDB::fetchAllAssoc('alias', 'SELECT v.alias, vr.redirect IS NOT NULL AS sub
+ FROM virtual AS v
+ LEFT JOIN virtual_redirect AS vr ON (v.vid = vr.vid AND ' . $join . ')
+ ' . $where);
+ } else {
+ return XDB::fetchColumn('SELECT v.alias
+ FROM virtual AS v
+ INNER JOIN virtual_redirect AS vr ON (v.vid = vr.vid AND ' . $join . ')
+ ' . $where);
}
- return XDB::fetchColumn('SELECT v.alias
- FROM virtual AS v
- INNER JOIN virtual_redirect AS vr ON (v.vid = vr.vid)
- WHERE (vr.redirect = {?} OR vr.redirect = {?})
- ' . $where,
- $this->forlifeEmail(), $this->m4xForlifeEmail());
}
/** Get the alternative forlife email
S::assert_xsrf_token();
$flags = new PlFlagSet('wiki_desc');
- if (Post::has('notif_unsub') && Post::i('notif_unsub') == 1) {
- $flags->addFlag('notif_unsub');
- }
- $site = trim(Post::v('site'));
+ $flags->addFlag('notif_unsub', Post::i('notif_unsub') == 1);
+ $site = Post::t('site');
if ($site && ($site != "http://")) {
$scheme = parse_url($site, PHP_URL_SCHEME);
if (!$scheme) {
$site = "";
}
if (S::has_perms()) {
- if (Post::v('mail_domain') && (strstr(Post::v('mail_domain'), '.') === false)) {
+ if (strstr(Post::v('mail_domain'), '.') === false) {
$page->trigError("le domaine doit être un FQDN (aucune modif effectuée) !!!");
return;
}
$flags, $globals->asso('id'));
}
+
if ($_FILES['logo']['name']) {
- $logo = file_get_contents($_FILES['logo']['tmp_name']);
- $mime = $_FILES['logo']['type'];
- XDB::execute('UPDATE groupex.asso
- SET logo={?}, logo_mime={?}
- WHERE id={?}', $logo, $mime,
- $globals->asso('id'));
+ $upload = PlUpload::get($_FILES['logo'], $globals->asso('id'), 'asso.logo', true);
+ if (!$upload) {
+ $page->trigError("Impossible de télécharger le logo");
+ } else {
+ XDB::execute('UPDATE groupex.asso
+ SET logo={?}, logo_mime={?}
+ WHERE id={?}', $upload->getContents(), $upload->contentType(),
+ $globals->asso('id'));
+ $upload->rm();
+ }
}
pl_redirect('../'.Post::v('diminutif', $globals->asso('diminutif')).'/edit');
if (is_null($filename)) {
$filename = $globals->asso('diminutif') . '.csv';
}
- $ann = 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, IF(m.origine='ext', 'extérieur', 'personne morale')) AS promo,
- IF(m.origine='X' AND u.perms != 'pending',CONCAT(a.alias, '@', {?}), m.email) AS email,
- IF(m.origine='X',FIND_IN_SET('femme', u.flags), m.sexe) AS femme,
- m.comm as comm
- 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 = {?}
- AND (m.origine != 'X' OR u.perms != 'pending' OR m.email IS NOT NULL)
- GROUP BY m.uid
- ORDER BY nom, prenom",
- $globals->mail->domain, $globals->asso('id'));
+ $id = XDB::fetchColumn("SELECT uid
+ FROM groupex.membres
+ WHERE asso_id = {?}",
+ $globals->asso('id'));
+ $users = User::getBuildUsersWithUIDs($id, 'full_name');
header('Content-Type: text/x-csv; charset=utf-8;');
header('Pragma: ');
header('Cache-Control: ');
$page->changeTpl('xnetgrp/annuaire-csv.tpl', NO_SKIN);
- $page->assign('ann', $ann);
+ $page->assign('users', $users);
}
private function removeSubscriptionRequest($uid)
}
$perms = Post::i('is_admin');
- $comm = trim(Post::s('comm'));
+ $comm = Post::t('comm');
if ($user['perms'] != $perms || $user['comm'] != $comm) {
XDB::query('UPDATE groupex.membres
SET perms={?}, comm={?}
}
$page->assign('user', $user);
- $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 = {?} OR redirect = {?}))
- WHERE alias LIKE {?} AND type="user"',
- $user['email'], $user['email2'], '%@'.$globals->asso('mail_domain'));
- $page->assign('alias', $res->fetchAllAssoc());
+ $page->assign('listes', $mmlist->get_lists($user->forlifeEmail()));
+ $page->assign('alias', $user->emailAliases($globals->asso('mail_domain'), 'user', true));
}
function handler_rss(&$page, $user = null, $hash = null)
<!-- Don't copy this list of emails!!!
+{assign var="login" value="false"}
{if !t($login)}
{if t($smarty.session.auth)}
{assign var="login" value="true"}
{/if}
{/foreach}
{/foreach}
- {if $asso && ($is_admin ||
+ {if $asso && ($is_admin ||
($smarty.session.suid && ($smarty.session.suid.perms->hasFlag('admin') ||
$smarty.session.suid.may_update[$asso.id])))}
<h1>Voir le site comme...</h1>
{* *}
{**************************************************************************}
Nom,Prénom,Sexe,Promotion,Email,Commentaire
-{if $ann}
-{iterate from=$ann item=m}
+{if $users|@count}
+{foreach from=$users item=user}
-{$m.nom},{$m.prenom},{if $m.sexe}F{else}M{/if},{$m.promo},{$m.email},{$m.comm|replace:',':'\,'}
+{$user->firstName()},{$user->lastName()},{if $user->isFemale()}F{else}M{/if},{$user->promo()},{$user->forlifeEmail()},{$user->group_comm|replace:',':'\,'}
-{/iterate}
+{/foreach}
{/if}
{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}
<br />
-{if $article_index && $article_index->total()}
+{if t($article_index) && $article_index->total()}
<table class="tinybicol">
<tr>
<th>
</p>
<h2>
- Édition du profil de {if "`$user.prenom` `$user.nom`"|trim}{$user.prenom} {$user.nom}{else}{$user.email}{/if}
- {if $user.origine eq 'X'}
- (X{$user.promo})
- <a href="https://www.polytechnique.org/profile/{$user.alias}">{icon name=user_suit title="fiche"}</a>
- {/if}
- <a href="{$platal->ns}member/del/{$user.email}">{icon name=delete title="Suppression du compte"}</a>
- <a href="mailto:{$user.email}">{icon name=email title="mail"}</a>
+ Édition du profil de {profile user=$user groupperms=false sex=false promo=true}
+ <a href="mailto:{$user->bestEmail()}">{icon name=email title="mail"}</a>
</h2>
<form method="post" action="{$platal->ns}member/{$platal->argv[1]}">
</td>
<td>
<select name="is_admin">
- <option value="0" {if !$user.perms}selected="selected"{/if}>Membre</option>
- <option value="1" {if $user.perms}selected="selected"{/if}>Animateur</option>
+ <option value="0" {if $user->group_perms eq 'membre'}</option>}selected="selected"{/if}>Membre</option>
+ <option value="1" {if $user->group_perms eq 'admin'}</option>}selected="selected"{/if}>Animateur</option>
</select>
</td>
</tr>
- {if $user.origine neq X}
<tr class="impair">
<td class="titre">
Type d'utilisateur :
</td>
<td>
<select name="origine" onchange="showInformations(this); return true">
- <option value="ext" {if $user.origine eq "ext"}selected="selected"{/if}>Personne physique</option>
- <option value="groupe" {if $user.origine eq "groupe"}selected="selected"{/if}>Personne morale</option>
+ <option value="ext" {if $user->type neq 'virtual'}selected="selected"{/if}>Personne physique</option>
+ <option value="groupe" {if $user->type eq "virtual"}selected="selected"{/if}>Personne morale</option>
</select>
</td>
</tr>
- <tr id="prenom" class="impair" {if $user.origine eq "groupe"}style="display: none"{/if}>
+ <tr id="prenom" class="impair" {if $user->type eq "virtual"}style="display: none"{/if}>
<td class="titre">
Prénom :
</td>
<td>
- <input type="text" value="{$user.prenom}" name="prenom" size="40" />
+ <input type="text" value="{$user->displayName()}" name="prenom" size="40" />
</td>
</tr>
<tr class="impair">
Nom :
</td>
<td>
- <input type="text" value="{$user.nom}" name="nom" size="40" />
+ <input type="text" value="{$user->fullName()}" name="nom" size="40" />
</td>
</tr>
- <tr id="sexe" class="impair" {if $user.origine eq "groupe"}style="display: none"{/if}>
+ <tr id="sexe" class="impair" {if $user->type eq "virtual"}style="display: none"{/if}>
<td class="titre">
Sexe :
</td>
<td>
<select name="sexe">
- <option value="0"{if $user.sexe eq 0} selected="selected"{/if}>Homme</option>
- <option value="1"{if $user.sexe eq 1} selected="selected"{/if}>Femme</option>
+ <option value="0"{if !$user->isFemale()} selected="selected"{/if}>Homme</option>
+ <option value="1"{if $user->isFemale()} selected="selected"{/if}>Femme</option>
</select>
</td>
</tr>
Email :
</td>
<td>
- <input type="text" value="{$user.email}" name="email" size="40" />
+ <input type="text" value="{$user->forlifeEmail()}" name="email" size="40" />
</td>
</tr>
- {/if}
<tr class="impair">
<td class="titre">
Commentaire :
</td>
<td>
- <input type="text" name="comm" value="{$user.comm}" size="40" maxlength="255" /><br />
+ <input type="text" name="comm" value="{$user->group_comm}" size="40" maxlength="255" /><br />
<small>Poste, origine, ... (accessible à toutes les personnes autorisées à consulter l'annuaire)</small>
</td>
</tr>
- {if $user.origine neq X}
- <tr id="make_X" {if $user.origine eq "groupe"}style="display: none"{/if}>
+ {if $user->type eq 'ext'}
+ <tr id="make_X">
<td colspan="2">
<span id="make_X_cb">
<input type="checkbox" name="is_x" id="is_x" onclick="showXInput(this);" onchange="showXInput(this);" />
<th>Alias</th>
</tr>
- {foreach from=$alias item=a}
+ {foreach from=$alias key=address item=sub}
<tr>
<td align='right'>
- <input type='hidden' name='ml3[{$a.alias}]' value='{$a.sub}' />
- <input type='checkbox' name='ml4[{$a.alias}]' {if $a.sub}checked="checked"{/if} />
+ <input type='hidden' name='ml3[{$address}]' value='{$sub}' />
+ <input type='checkbox' name='ml4[{$address}]' {if $sub}checked="checked"{/if} />
</td>
<td>
- <a href='{$platal->ns}alias/admin/{$a.alias}'>{$a.alias}</a>
+ <a href='{$platal->ns}alias/admin/{$address}'>{$address}</a>
</td>
</tr>
{foreachelse}