'%grp/member/new/ajax' => $this->make_hook('admin_member_new_ajax', AUTH_PASSWD, 'groups', NO_AUTH),
'%grp/member/del' => $this->make_hook('admin_member_del', AUTH_PASSWD, 'groupadmin'),
'%grp/member/suggest' => $this->make_hook('admin_member_suggest', AUTH_PASSWD, 'groupadmin'),
+ '%grp/member/reg' => $this->make_hook('admin_member_reg', AUTH_PASSWD, 'groupadmin'),
'%grp/rss' => $this->make_token_hook('rss', AUTH_PUBLIC),
'%grp/announce/new' => $this->make_hook('edit_announce', AUTH_PASSWD, 'groupadmin'),
continue;
}
+ require_once 'name.func.inc.php';
$parts = explode('.', $local_part);
if (count($parts) == 1) {
- $lastname = $display_name = $full_name = $directory_name = ucfirst($local_part);
+ $lastname = $display_name = capitalize_name($mbox);
$firstname = '';
} else {
- $firstname = ucfirst($parts[0]);
- $lastname = ucwords(implode(' ', array_slice($parts, 1)));
- $display_name = $firstname;
- $full_name = $firstname . ' ' . $lastname;
- $directory_name = strtoupper($lastname) . ' ' . $firstname;
+ $display_name = $firstname = capitalize_name($parts[0]);
+ $lastname = capitalize_name(implode(' ', array_slice($parts, 1)));
}
- XDB::execute('INSERT INTO accounts (hruid, display_name, full_name, directory_name, firstname, lastname, email, type, state)
- VALUES ({?}, {?}, {?}, {?}, {?}, {?}, {?}, \'xnet\', \'disabled\')',
- $hruid, $display_name, $full_name, $directory_name, $firstname, $lastname, $email);
+ $full_name = build_full_name($firstname, $lastname);
+ $directory_name = build_directory_name($firstname, $lastname);
+ $sort_name = build_sort_name($firstname, $lastname);
+ XDB::execute('INSERT INTO accounts (hruid, display_name, full_name, directory_name, sort_name,
+ firstname, lastname, email, type, state)
+ VALUES ({?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, \'xnet\', \'disabled\')',
+ $hruid, $display_name, $full_name, $directory_name, $sort_name, $firstname, $lastname, $email);
$uid = XDB::insertId();
XDB::execute('INSERT INTO group_members (asso_id, uid)
VALUES ({?}, {?})',
$uids_to_enable = array_intersect(array_keys(Post::v('enable_accounts')), $uids);
$user = S::user();
- $group = Platal::globals()->asso('nom');
- $request = new BulkAccountsReq($user, $uids_to_enable, $group);
+ $request = new BulkAccountsReq($user, $uids_to_enable, $globals->asso('nom'), $globals->asso('diminutif'));
$request->submit();
$page->trigSuccess('Un email va bientôt être envoyé aux personnes sélectionnées pour l\'activation de leur compte.');
global $globals;
$page->changeTpl('xnetgrp/membres-add.tpl');
+ $page->addJsLink('xnet_members.js');
if (is_null($email)) {
return;
XDB::query('UPDATE accounts
SET email = {?}
WHERE uid = {?} AND email IS NULL',
- Post::t('email'), $user->id());
+ $email, $user->id());
// Add email for marketing if required.
- if (Env::v('market')) {
+ if (Env::v('marketing')) {
$market = Marketing::get($user->uid, $email);
if (!$market) {
$market = new Marketing($user->uid, $email, 'group', $globals->asso('nom'),
- Env::v('market_from'), S::v('uid'));
+ Env::v('marketing_from'), S::v('uid'));
$market->add();
}
}
+ } elseif (Env::v('broken')) {
+ // Add email for broken if required.
+ $valid = new BrokenReq(S::user(), $user, $email, 'Groupe : ' . $globals->asso('nom'));
+ $valid->submit();
}
} else {
$user = User::getSilent($email);
require_once 'name.func.inc.php';
$parts = explode('.', $mbox);
if (count($parts) == 1) {
- $lastname = $display_name = $full_name = $directory_name = capitalize_name($mbox);
+ $lastname = $display_name = capitalize_name($mbox);
$firstname = '';
} else {
- $firstname = capitalize_name($parts[0]);
+ $display_name = $firstname = capitalize_name($parts[0]);
$lastname = capitalize_name(implode(' ', array_slice($parts, 1)));
- $display_name = $firstname;
- $full_name = $firstname . ' ' . $lastname;
- $directory_name = $lastname . ' ' . $firstname;
}
- XDB::execute('INSERT INTO accounts (hruid, display_name, full_name, directory_name, firstname, lastname, email, type, state)
- VALUES ({?}, {?}, {?}, {?}, {?}, {?}, {?}, \'xnet\', \'disabled\')',
- $hruid, $display_name, $full_name, $directory_name, $firstname, $lastname, $email);
+ $full_name = build_full_name($firstname, $lastname);
+ $directory_name = build_directory_name($firstname, $lastname);
+ $sort_name = build_sort_name($firstname, $lastname);
+ XDB::execute('INSERT INTO accounts (hruid, display_name, full_name, directory_name, sort_name,
+ firstname, lastname, email, type, state)
+ VALUES ({?}, {?}, {?}, {?}, {?}, {?}, {?}, {?}, \'xnet\', \'disabled\')',
+ $hruid, $display_name, $full_name, $directory_name, $sort_name, $firstname, $lastname, $email);
$user = User::getSilent($hruid);
}
if (Post::has('suggest')) {
if (Post::t('suggest') == 'yes') {
+ global $globals;
+
$user = S::user();
- $request = new AccountReq($user, $hruid, $email, Platal::globals()->asso('nom'));
+ $request = new AccountReq($user, $hruid, $email, $globals->asso('nom'), $globals->asso('diminutif'));
$request->submit();
$page->trigSuccessRedirect('Un email va bien être envoyé à ' . $email . ' pour l\'activation de son compte.',
- Platal::globals()->asso('diminutif') . '/member/' . $hruid);
+ $globals->asso('diminutif') . '/member/' . $hruid);
} else {
pl_redirect('member/' . $hruid);
}
$page->assign('hruid', $hruid);
}
+ function handler_admin_member_reg($page, $uid)
+ {
+ pl_content_headers('text/plain');
+
+ $user = User::getSilentWithUID($uid);
+ if ($user && $user->state != 'pending' && $user->hasProfile()) {
+ echo true;
+ }
+ echo false;
+ exit();
+ }
+
function handler_admin_member_new_ajax($page)
{
pl_content_headers("text/html");
$page->changeTpl('xnetgrp/membres-new-search.tpl', NO_SKIN);
$users = array();
+ $same_email = false;
if (Env::has('login')) {
$user = User::getSilent(Env::t('login'));
if ($user && $user->state != 'pending') {
- $users = array($user);
+ $users = array($user->id() => $user);
+ $same_email = true;
}
}
if (empty($users)) {
list($lastname, $firstname) = str_replace(array('-', ' ', "'"), '%', array(Env::t('nom'), Env::t('prenom')));
- $cond = new PFC_And(new PFC_Not(new UFC_Registered()));
+ $cond = new PFC_And();
if (!empty($lastname)) {
$cond->addChild(new UFC_NameTokens($lastname, array(), false, false, Profile::LASTNAME));
}
$users = array();
}
}
+
$page->assign('users', $users);
+ $page->assign('same_email', $same_email);
}
function unsubscribe(PlUser $user, $remember = false)
}
}
- private function changeLogin(PlPage $page, PlUser $user, $login)
+ private function changeLogin(PlPage $page, PlUser $user, $login, $req_broken = false, $req_marketing = false, $marketing_from = 'user')
{
// Search the user's uid.
$xuser = User::getSilent($login);
return false;
}
+ // Market or suggest new redirection if required.
+ $email = $user->bestEmail();
+ if ($req_broken) {
+ $valid = new BrokenReq(S::user(), $xuser, $email, 'Groupe : ' . Platal::globals()->asso('nom'));
+ $valid->submit();
+ } elseif ($req_marketing) {
+ $market = Marketing::get($xuser->uid, $email);
+ if (!$market) {
+ $market = new Marketing($xuser->uid, $email, 'group', Platal::globals()->asso('nom'), $marketing_from, S::i('uid'));
+ $market->add();
+ }
+ }
+
if ($user->mergeIn($xuser)) {
return $xuser->login();
}
}
$page->changeTpl('xnetgrp/membres-edit.tpl');
+ $page->addJsLink('xnet_members.js');
$mmlist = new MMList(S::user(), $globals->asso('mail_domain'));
if (Post::has('change')) {
- require_once 'emails.inc.php';
S::assert_xsrf_token();
+ require_once 'emails.inc.php';
+ require_once 'name.func.inc.php';
// Convert user status to X
- if (!Post::blank('login_X')) {
- $forlife = $this->changeLogin($page, $user, Post::t('login_X'));
+ if (!Post::blank('x')) {
+ $forlife = $this->changeLogin($page, $user, Post::i('userid'), Post::b('broken'), Post::b('marketing'), Post::v('marketing_from'));
if ($forlife) {
pl_redirect('member/' . $forlife);
}
$lastname = capitalize_name(Post::t('lastname'));
if (Post::s('type') != 'virtual') {
$firstname = capitalize_name(Post::t('firstname'));
- $full_name = $firstname . ' ' . $lastname;
- $directory_name = $lastname . ' ' . $firstname;
} else {
$firstname = '';
- $full_name = $lastname;
- $directory_name = $lastname;
}
+ $full_name = build_full_name($firstname, $lastname);
+ $directory_name = build_directory_name($firstname, $lastname);
+ $sort_name = build_sort_name($firstname, $lastname);
XDB::query('UPDATE accounts
- SET full_name = {?}, directory_name = {?}, display_name = {?},
+ SET full_name = {?}, directory_name = {?}, sort_name = {?}, display_name = {?},
firstname = {?}, lastname = {?}, sex = {?}, type = {?}
WHERE uid = {?}',
- $full_name, $directory_name, Post::t('display_name'), $firstname, $lastname,
+ $full_name, $directory_name, $sort_name, Post::t('display_name'), $firstname, $lastname,
(Post::t('sex') == 'male') ? 'male' : 'female',
(Post::t('type') == 'xnet') ? 'xnet' : 'virtual', $user->id());
}
// Updates email.
$new_email = strtolower(Post::t('email'));
- if (!$user->perms && require_email_update($user, $new_email)) {
+ if (($user->type == 'virtual' || ($user->type == 'xnet' && !$user->perms))
+ && require_email_update($user, $new_email)) {
XDB::query('UPDATE accounts
SET email = {?}
WHERE uid = {?}',
$new_email, $user->id());
- $listClient = new MMList(S::user());
- $listClient->change_user_email($user->forlifeEmail(), $new_email);
- update_alias_user($user->forlifeEmail(), $new_email);
+ if ($user->forlifeEmail()) {
+ $listClient = new MMList(S::user());
+ $listClient->change_user_email($user->forlifeEmail(), $new_email);
+ update_alias_user($user->forlifeEmail(), $new_email);
+ }
+ $user = User::getWithUID($user->id());
}
if (XDB::affectedRows()) {
$page->trigSuccess('Données de l\'utilisateur mises à jour.');
if (($user->type == 'xnet' && !$user->perms)) {
if (Post::b('suggest')) {
- $request = new AccountReq(S::user(), $user->hruid, Post::t('email'), $globals->asso('nom'));
+ $request = new AccountReq(S::user(), $user->hruid, Post::t('email'), $globals->asso('nom'), $globals->asso('diminutif'));
$request->submit();
$page->trigSuccess('Le compte va bientôt être activé.');
}
$mailer->assign('group', $data['group_name']);
$mailer->assign('sender_name', $data['sender_name']);
$mailer->assign('again', true);
+ $mailer->assign('baseurl', Platal::globals()->xnet->xorg_baseurl);
$mailer->send();
$page->trigSuccess('Relance effectuée avec succès.');
}