<?php
include_once 'sys/inc/start.php';
$doc = new document();
$doc->title = 'Регистрация';




if ($user->group)$doc->access_denied('Вы уже зарегистрированы');

if (!$dcms->reg_open)$doc->access_denied('Регистрация временно закрыта');


// пригласительный
$inv=&$_SESSION['reg']['invite'];
if (!$inv && isset($_GET['invite']) && $_GET['invite']){
$q=mysql_query("SELECT * FROM `invations` WHERE `code` = '".my_esc($_GET['invite'])."' AND `id_invite` IS NULL AND `email` IS NOT NULL LIMIT 1");
//echo mysql_error();exit;
if (mysql_num_rows($q))
{
//$doc->msg('Пригласительный учтен');
$inv=mysql_fetch_assoc($q);
mysql_query("UPDATE `invations` SET `code` = null WHERE `id` = '$inv[id]' LIMIT 1");
}
else $doc->err('Пригласительный недействителен');
}

if(!isset($inv))$inv=false;


if (!$inv && $dcms->reg_with_invite)$doc->access_denied('Регистрация возможна только по приглашению');



$step=&$_SESSION['reg']['step'];if (!isset($step)){$step=$dcms->reg_with_mail?0:1;}
$login=&$_SESSION['reg']['login'];




// принимаем правила
if ($step==0 && isset($_GET['rules'])){
if ($_POST['ok']){$step=1;$doc->msg('Очень хорошо, надеемся на их соблюдение');}
elseif ($_POST['no']){$doc->err('Для продолжения регистрации необходимо принять правила сайта');}
}


// выбираем ник
if ($step==1 && isset($_GET['nick']) && isset($_POST['login'])){
if (is_valid::nick($_POST['login']))
{
$login=$_POST['login'];
if (!mysql_result(mysql_query("SELECT COUNT(*) FROM `users` WHERE `login` = '".my_esc($login)."'"), 0))
{
if ($_POST['login']!=my_esc($_POST['login']))$doc->msg('В нике содержатся запрещенные символы');
else
{
$step=2;
$_SESSION['reg']['login']=$_POST['login'];
$doc->msg('Ник может быть успешно зарегистрирован');
}
}
else $doc->err('Ник занят другим пользователем');
}
else $doc->err('Недопустимый ник');
}

// выбираем ник
if ($step==2 && isset($_GET['final']) && isset($_POST['sex'])){
$sex=$_POST['sex']?1:0;


if (!isset($_SESSION['captcha']) || !isset($_POST['chislo']) || $_SESSION['captcha']!=$_POST['chislo']){$doc->err('Проверочное число введено неверно');}
elseif ($dcms->reg_with_mail && !$inv)
{
if (!isset($_POST['mail'])) $doc->err('Необходимо указать E-mail');
elseif(!is_valid::mail($_POST['mail'])) $doc->err('Указан не корректный E-mail');
elseif(!isset($_POST['password'])) $doc->err('Необходимо указать пароль');
elseif(!isset($_POST['password_retry'])) $doc->err('Необходимо подтвердить пароль');
elseif($_POST['password_retry']!=$_POST['password']) $doc->err('Введенные пароли не совпадают');
elseif(!is_valid::password($_POST['password'])) $doc->err('Не корректный пароль');
else
{
$a_code=md5(passgen());

mysql_query("INSERT INTO `users` (`reg_date`, `login`, `password`, `sex`, `a_code`, `reg_mail`)
values('".TIME."', '".my_esc($_SESSION['reg']['login'])."', '".crypt::hash($_POST['password'])."', '$sex', '$a_code', '".my_esc($_POST['mail'])."')");
$id_user=mysql_insert_id();
if ($id_user && is_numeric($id_user))
{
$t= new design();
$t->assign('title','Успешная регистрация');
$t->assign('login',$_SESSION['reg']['login']);
$t->assign('password',$_POST['password']);
$t->assign('site',$dcms->title);
$t->assign('url','http://'.$_SERVER['HTTP_HOST'].'/activation.php?id='.$id_user.'&amp;code='.$a_code.(isset($_GET['return'])?'&amp;return='.urlencode($_GET['return']):null));
if (mail::send($_POST['mail'],'Регистрация',$t->fetch('mail.reg.tpl')))
{
$step=3;
$doc->msg('На Ваш E-mail отправлено письмо с ссылкой для активации аккаунта');
}
else $doc->err('Ошибка при отправке email, попробуйте позже');
}
else
{
$doc->err('Ошибка при регистрации. Попробуйте позже');
$step=1;
}
}
}
elseif ($inv)
{
if(empty($_POST['password'])) $doc->err('Необходимо указать пароль');
elseif(!isset($_POST['password_retry'])) $doc->err('Необходимо подтвердить пароль');
elseif($_POST['password_retry']!=$_POST['password']) $doc->err('Введенные пароли не совпадают');
elseif(!is_valid::password($_POST['password'])) $doc->err('Не корректный пароль');
else
{

mysql_query("INSERT INTO `users` (`reg_date`, `login`, `password`, `sex`, `reg_mail`)
values('".TIME."', '".my_esc($_SESSION['reg']['login'])."', '".crypt::hash($_POST['password'])."', '$sex', '".my_esc($inv['email'])."')");
$id_user=mysql_insert_id();
if ($id_user && is_numeric($id_user))
{
mysql_query("UPDATE `invations` SET `id_invite` = '$id_user', `time_reg` = '".TIME."' WHERE `id` = '$inv[id]' LIMIT 1");
mysql_query("UPDATE `users` SET `balls` = `balls` * '1.1' WHERE `id` = '$inv[id_user]' LIMIT 1");
$step=3;
}

}
}
else
{

mysql_query("INSERT INTO `users` (`reg_date`, `login`, `password`, `sex`) values('".TIME."', '".my_esc($_SESSION['reg']['login'])."', '".crypt::hash($_POST['password'])."', '$sex')");

$id_user=mysql_insert_id();
if ($id_user && is_numeric($id_user))
{
$step=3;
}
else
{
$doc->err('Ошибка при регистрации. Попробуйте позже');
$step=1;
}
}
}

if ($step==3)
{
$doc->msg('Вы успешно зарегистрированы');

if ($dcms->reg_with_mail && !$inv)
{
echo "На ваш e-mail отправлено письмо с ссылкой для активации аккаунта";
}
else
{
echo "Теперь Вы можете <a href='/login.php".(isset($_GET['return'])?'?return='.urlencode($_GET['return']):null)."'>Авторизоваться</a>";
}

unset($_SESSION['reg']);
exit;
}

if ($step==2)
{
$doc->title = 'Завершение регистрации'; // заголовок страницы
$form = new design();
$form->assign('form_title','Выберите ник');
$form->assign('method','post');
$form->assign('action','/reg.php?final&amp;'.passgen().(isset($_GET['return'])?'&amp;return='.urlencode($_GET['return']):null));
$elements=array();
$elements[]=array('type'=>'text','value'=>'Ваш ник: '.$login,'br'=>1);
$elements[]=array('type'=>'password', 'title' => 'Пароль (6-32 символов)', 'br'=>1, 'info'=>array('name' => 'password'));
$elements[]=array('type'=>'password', 'title' => 'Повторите пароль', 'br'=>1, 'info'=>array('name' => 'password_retry'));

$elements[]=array('type'=>'select', 'title'=>'Ваш пол', 'br'=>1, 'info'=>array('name' => 'sex','options' => array(array(1,'Мужской'),array(0,'Женский'))));
$elements[]=array('type'=>'captcha','br'=>1); // капча
if ($dcms->reg_with_mail && !$inv)$elements[]=array('type'=>'input_text', 'title' => 'Ваш E-mail', 'br'=>1, 'info'=>array('name' => 'mail'));
if ($dcms->reg_with_mail && !$inv)$elements[]=array('type'=>'text','value'=>'* На Ваш E-mail придет письмо с ссылкой для активации аккаунта','br'=>1);



$elements[]=array('type'=>'submit', 'br'=>0, 'info'=>array('name'=>'post', 'value'=>'Зарегистрироваться')); // кнопка
$form->assign('el',$elements);
$form->display('input.form.tpl');
exit;
}






if ($step==1)
{
$doc->title = 'Подбор ника'; // заголовок страницы

$form = new design();
$form->assign('form_title','Выберите ник');
$form->assign('method','post');
$form->assign('action','/reg.php?nick&amp;'.passgen().(isset($_GET['return'])?'&amp;return='.urlencode($_GET['return']):null));
$elements=array();
$elements[]=array('type'=>'input_text', 'title' => 'Выберите ник [A-zА-я0-9 -_]', 'br'=>1, 'info'=>array('name' => 'login'));
$elements[]=array('type'=>'text','value'=>'* Сочетание русского и английского алфавитов запрещено','br'=>1);
$elements[]=array('type'=>'text','value'=>'** Использование пробелов вначале и конце строк запрещено','br'=>1);
$elements[]=array('type'=>'text','value'=>'*** Ник не должен начинаться с цифр','br'=>1);
$elements[]=array('type'=>'submit', 'br'=>0, 'info'=>array('name'=>'post', 'value'=>'Продолжить')); // кнопка
$form->assign('el',$elements);
$form->display('input.form.tpl');
exit;
}



if ($step==0){
$doc->title = 'Соглашение'; // заголовок страницы
$form = new design();


$form->assign('method','post');
$form->assign('action','/reg.php?rules&amp;'.passgen().(isset($_GET['return'])?'&amp;return='.urlencode($_GET['return']):null));
$elements=array();

$rules=file(H.'/sys/rules.txt');
$text='';
for ($i=0;$i<count($rules);$i++) {
$text.=($i+1).'. '.output_text($rules[$i],1,1,1)."<br />\n";
}


$elements[]=array('type'=>'text', 'value'=>$text); // правила
$elements[]=array('type'=>'submit', 'br'=>0, 'info'=>array('name'=>'ok', 'value'=>'Принимаю')); // кнопка
$elements[]=array('type'=>'submit', 'br'=>0, 'info'=>array('name'=>'no', 'value'=>'Не принимаю')); // кнопка
$form->assign('el',$elements);
$form->display('input.form.tpl');
exit;
}
?>
