$this->make_hook('register', AUTH_PUBLIC),
'register/end' => $this->make_hook('end', AUTH_PUBLIC),
'register/end.php' => $this->make_hook('end_old', AUTH_PUBLIC),
'register/success' => $this->make_hook('success', AUTH_MDP),
);
}
function handler_register(&$page, $hash = null)
{
global $globals;
$sub_state = Session::getMixed('sub_state', Array());
if (!isset($sub_state['step'])) {
$sub_state['step'] = 0;
}
if (Get::has('back') && Get::getInt('back') < $sub_state['step']) {
$sub_state['step'] = max(0,Get::getInt('back'));
}
// Compatibility with old sources, keep it atm
if (!$hash && Env::has('hash')) {
$hash = Env::get('hash');
}
if ($hash) {
$res = $globals->xdb->query(
"SELECT m.uid, u.promo, u.nom, u.prenom, u.matricule
FROM register_marketing AS m
INNER JOIN auth_user_md5 AS u ON u.user_id = m.uid
WHERE m.hash={?}", $hash);
if (list($uid, $promo, $nom, $prenom, $ourmat) = $res->fetchOneRow()) {
$sub_state['uid'] = $uid;
$sub_state['hash'] = $hash;
$sub_state['promo'] = $promo;
$sub_state['nom'] = $nom;
$sub_state['prenom'] = $prenom;
$sub_state['ourmat'] = $ourmat;
$globals->xdb->execute(
"REPLACE INTO register_mstats (uid,sender,success)
SELECT m.uid, m.sender, 0
FROM register_marketing AS m
WHERE m.hash", $sub_state['hash']);
}
}
switch ($sub_state['step']) {
case 0:
if (Post::has('step1')) {
$sub_state['step'] = 1;
if (isset($sub_state['hash'])) {
$sub_state['step'] = 3;
require_once('register.inc.php');
create_aliases($sub_state);
}
}
break;
case 1:
if (Post::has('promo')) {
$promo = Post::getInt('promo');
if ($promo < 1900 || $promo > date('Y')) {
$err = "La promotion saisie est incorrecte !";
} else {
$sub_state['step'] = 2;
$sub_state['promo'] = $promo;
if ($promo >= 1996 && $promo<2000) {
$sub_state['mat'] = ($promo % 100)*10 . '???';
} elseif($promo >= 2000) {
$sub_state['mat'] = 100 + ($promo % 100) . '???';
}
}
}
break;
case 2:
if (count($_POST)) {
require_once('register.inc.php');
$sub_state['prenom'] = Post::get('prenom');
$sub_state['nom'] = Post::get('nom');
$sub_state['mat'] = Post::get('mat');
$err = check_new_user($sub_state);
if ($err !== true) { break; }
$err = create_aliases($sub_state);
if ($err === true) {
unset($err);
$sub_state['step'] = 3;
}
}
break;
case 3:
if (count($_POST)) {
require_once('register.inc.php');
if (!isvalid_email(Post::get('email'))) {
$err[] = "Le champ 'E-mail' n'est pas valide.";
} elseif (!isvalid_email_redirection(Post::get('email'))) {
$err[] = $sub_state['forlife']." doit renvoyer vers un email existant ".
"valide, en particulier, il ne peut pas être renvoyé vers lui-même.";
}
if (!preg_match('/^[0-3][0-9][01][0-9][12][90][0-9][0-9]$/',
Post::get('naissance')))
{
$err[] = "La 'Date de naissance' n'est pas correcte.";
}
if (isset($err)) {
$err = join('
', $err);
} else {
$birth = Env::get('naissance');
$sub_state['naissance'] = sprintf("%s-%s-%s",
substr($birth,4,4),
substr($birth,2,2),
substr($birth,0,2));
$sub_state['email'] = Post::get('email');
$sub_state['step'] = 4;
finish_ins($sub_state);
}
}
break;
}
$_SESSION['sub_state'] = $sub_state;
$page->changeTpl('register/step'.intval($sub_state['step']).'.tpl');
$page->assign('simple', true);
if (isset($err)) {
$page->trig($err);
}
return PL_OK;
}
function handler_end_old(&$page)
{
return $this->handler_end($page, Env::get('hash'));
}
function handler_end(&$page, $hash = null)
{
global $globals;
$page->changeTpl('register/end.tpl');
require_once('user.func.inc.php');
if ($hash) {
$res = $globals->xdb->query(
"SELECT r.uid, r.forlife, r.bestalias, r.mailorg2,
r.password, r.email, r.naissance, u.nom, u.prenom,
u.promo, u.flags
FROM register_pending AS r
INNER JOIN auth_user_md5 AS u ON r.uid = u.user_id
WHERE hash={?} AND hash!='INSCRIT'", $hash);
}
if (!$hash || !list($uid, $forlife, $bestalias, $mailorg2, $password, $email,
$naissance, $nom, $prenom, $promo, $femme) = $res->fetchOneRow())
{
$page->kill("
Cette adresse n'existe pas, ou plus, sur le serveur.
Causes probables :