- #1285: Autocompletes on internal words in university search -JAC
* XnetGrp:
+ - #947: Lists group former members to group admins -JAC
- #1481: Adds group nl subscription from group profile edition -JAC
================================================================================
return $sub;
}
+ private $gpfm = array();
+ public function addGroupFormerMemberFilter()
+ {
+ $this->requireAccounts();
+ $sub = '_' . $this->option++;
+ $this->gpfm[] = $sub;
+ return $sub;
+ }
+
protected function groupJoins()
{
$joins = array();
$joins['gpm' . $sub] = PlSqlJoin::left('group_members', '$ME.uid = $UID AND $ME.asso_id = gpa' . $sub . '.id');
}
}
+ foreach ($this->gpfm as $sub) {
+ $joins['gpfm' . $sub] = PlSqlJoin::left('group_former_members', '$ME.uid = $UID');
+ }
return $joins;
}
}
}
// }}}
+// {{{ class UFC_GroupFormerMember
+/** Filters users based on group former membership
+ * @param $group Group whose former members we are selecting
+ */
+class UFC_GroupFormerMember extends UserFilterCondition
+{
+ private $group;
+
+ public function __construct($group)
+ {
+ $this->group = $group;
+ }
+
+ public function buildCondition(PlFilter $uf)
+ {
+ // Groups are only visible for users with perm 'groups'.
+ if (!S::user()->checkPerms(User::PERM_GROUPS)) {
+ return self::COND_FALSE;
+ }
+ $sub = $uf->addGroupFormerMemberFilter();
+ return XDB::format('gpfm' . $sub . '.asso_id = {?}', $this->group);
+ }
+}
+// }}}
// {{{ class UFC_Binet
/** Selects users based on their belonging to a given (list of) binet
* @param $binet either a binet_id or an array of binet_ids
'%grp/edit' => $this->make_hook('edit', AUTH_MDP, 'groupadmin'),
'%grp/mail' => $this->make_hook('mail', AUTH_MDP, 'groupadmin'),
'%grp/forum' => $this->make_hook('forum', AUTH_MDP, 'groupmember'),
+ '%grp/former_users' => $this->make_hook('former_users', AUTH_MDP, 'groupadmin'),
'%grp/annuaire' => $this->make_hook('annuaire', AUTH_MDP, 'groupannu'),
'%grp/annuaire/vcard' => $this->make_hook('vcard', AUTH_MDP, 'groupmember:groupannu'),
'%grp/annuaire/csv' => $this->make_hook('csv', AUTH_MDP, 'groupmember:groupannu'),
$page->changeTpl('xnetgrp/annuaire.tpl');
}
+ function handler_former_users($page)
+ {
+ global $globals;
+ require_once 'userset.inc.php';
+
+ $view = new UserSet(new UFC_GroupFormerMember($globals->asso('id')));
+ $view->addMod('groupmember', 'Anciens membres', true, array('noadmin' => true));
+ $view->apply('former_users', $page);
+ $page->changeTpl('xnetgrp/former_users.tpl');
+ }
+
function handler_trombi($page)
{
pl_redirect('annuaire/trombi');
{/if}
<a href="mailto:{$user->bestEmail()}">{icon name=email title="email"}</a>
</td>
- {if $is_admin}
+ {if $is_admin && !t($groupmember_noadmin)}
<td class="center">
<a href="{$platal->ns}member/{$user->login()}">{icon name=user_edit title="Édition du profil"}</a>
<a href="{$platal->ns}member/del/{$user->login()}">{icon name=delete title="Supprimer de l'annuaire"}</a>
<th>Nom</th>
<th>Promo</th>
<th colspan="2">Infos</th>
- {if $is_admin}
+ {if $is_admin && !t($groupmember_noadmin)}
<th>Actions</th>
{/if}
</tr>
</a>
</li>
{/if}
+ <li>
+ <a href="{$platal->ns}former_users">
+ {icon name=status_offline title="Anciens membres du groupe"}
+ Anciens membres du groupe
+ </a>
+ </li>
{/if}
<li>
<a href="{$platal->ns}annuaire/csv/{$asso->diminutif}.csv">