2009-05-10 10:50:39 +03:00
|
|
|
|
<?php
|
2008-09-21 09:36:57 +03:00
|
|
|
|
/*-------------------------------------------------------
|
|
|
|
|
*
|
|
|
|
|
* LiveStreet Engine Social Networking
|
|
|
|
|
* Copyright © 2008 Mzhelskiy Maxim
|
|
|
|
|
*
|
|
|
|
|
*--------------------------------------------------------
|
|
|
|
|
*
|
|
|
|
|
* Official site: www.livestreet.ru
|
|
|
|
|
* Contact e-mail: rus.engine@gmail.com
|
|
|
|
|
*
|
|
|
|
|
* GNU General Public License, version 2:
|
|
|
|
|
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
|
|
|
|
*
|
|
|
|
|
---------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Обрабатывает регистрацию
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
class ActionRegistration extends Action {
|
|
|
|
|
/**
|
|
|
|
|
* Инициализация
|
|
|
|
|
*
|
|
|
|
|
* @return unknown
|
|
|
|
|
*/
|
|
|
|
|
public function Init() {
|
|
|
|
|
/**
|
|
|
|
|
* Проверяем аторизован ли юзер
|
|
|
|
|
*/
|
|
|
|
|
if ($this->User_IsAuthorization()) {
|
2009-04-11 14:50:42 +03:00
|
|
|
|
$this->Message_AddErrorSingle($this->Lang_Get('registration_is_authorization'),$this->Lang_Get('attention'));
|
2008-09-21 09:36:57 +03:00
|
|
|
|
return Router::Action('error');
|
|
|
|
|
}
|
2008-10-11 17:51:38 +03:00
|
|
|
|
/**
|
|
|
|
|
* Если включены инвайты то перенаправляем на страницу регистрации по инвайтам
|
|
|
|
|
*/
|
2009-08-20 10:43:06 +03:00
|
|
|
|
if (!$this->User_IsAuthorization() and Config::Get('general.reg.invite') and !in_array(Router::GetActionEvent(),array('invite','activate','confirm')) and !$this->CheckInviteRegister()) {
|
2008-10-11 17:51:38 +03:00
|
|
|
|
return Router::Action('registration','invite');
|
|
|
|
|
}
|
|
|
|
|
|
2008-09-21 09:36:57 +03:00
|
|
|
|
$this->SetDefaultEvent('index');
|
2009-04-11 14:50:42 +03:00
|
|
|
|
$this->Viewer_AddHtmlTitle($this->Lang_Get('registration'));
|
2008-09-21 09:36:57 +03:00
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* Регистрируем евенты
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
protected function RegisterEvent() {
|
2009-02-07 15:04:44 +02:00
|
|
|
|
$this->AddEvent('index','EventIndex');
|
2008-09-21 09:36:57 +03:00
|
|
|
|
$this->AddEvent('confirm','EventConfirm');
|
|
|
|
|
$this->AddEvent('activate','EventActivate');
|
2008-10-11 17:51:38 +03:00
|
|
|
|
$this->AddEvent('invite','EventInvite');
|
2008-09-21 09:36:57 +03:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**********************************************************************************
|
|
|
|
|
************************ РЕАЛИЗАЦИЯ ЭКШЕНА ***************************************
|
|
|
|
|
**********************************************************************************
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Показывает страничку регистрации и обрабатывает её
|
|
|
|
|
*
|
|
|
|
|
* @return unknown
|
|
|
|
|
*/
|
|
|
|
|
protected function EventIndex() {
|
|
|
|
|
/**
|
|
|
|
|
* Если нажали кнопку "Зарегистрироваться"
|
|
|
|
|
*/
|
2009-10-17 03:27:22 +03:00
|
|
|
|
if (isPost('submit_register')) {
|
2008-09-21 09:36:57 +03:00
|
|
|
|
//Проверяем входные данные
|
|
|
|
|
$bError=false;
|
|
|
|
|
/**
|
|
|
|
|
* Проверка логина
|
|
|
|
|
*/
|
2010-08-21 13:14:13 +03:00
|
|
|
|
if (!$this->User_CheckLogin(getRequest('login'))) {
|
2009-04-11 14:50:42 +03:00
|
|
|
|
$this->Message_AddError($this->Lang_Get('registration_login_error'),$this->Lang_Get('error'));
|
2008-09-21 09:36:57 +03:00
|
|
|
|
$bError=true;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* Проверка мыла
|
|
|
|
|
*/
|
|
|
|
|
if (!func_check(getRequest('mail'),'mail')) {
|
2009-04-11 14:50:42 +03:00
|
|
|
|
$this->Message_AddError($this->Lang_Get('registration_mail_error'),$this->Lang_Get('error'));
|
2008-09-21 09:36:57 +03:00
|
|
|
|
$bError=true;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* Проверка пароля
|
|
|
|
|
*/
|
|
|
|
|
if (!func_check(getRequest('password'),'password',5)) {
|
2009-04-11 14:50:42 +03:00
|
|
|
|
$this->Message_AddError($this->Lang_Get('registration_password_error'),$this->Lang_Get('error'));
|
2008-09-21 09:36:57 +03:00
|
|
|
|
$bError=true;
|
|
|
|
|
} elseif (getRequest('password')!=getRequest('password_confirm')) {
|
2009-04-11 14:50:42 +03:00
|
|
|
|
$this->Message_AddError($this->Lang_Get('registration_password_error_different'),$this->Lang_Get('error'));
|
2008-09-21 09:36:57 +03:00
|
|
|
|
$bError=true;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* Проверка капчи(циферки с картинки)
|
|
|
|
|
*/
|
2008-11-23 10:24:08 +02:00
|
|
|
|
if (!isset($_SESSION['captcha_keystring']) or $_SESSION['captcha_keystring']!=strtolower(getRequest('captcha'))) {
|
2009-04-11 14:50:42 +03:00
|
|
|
|
$this->Message_AddError($this->Lang_Get('registration_captcha_error'),$this->Lang_Get('error'));
|
2008-09-21 09:36:57 +03:00
|
|
|
|
$bError=true;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* А не занят ли логин?
|
|
|
|
|
*/
|
|
|
|
|
if ($this->User_GetUserByLogin(getRequest('login'))) {
|
2009-04-11 14:50:42 +03:00
|
|
|
|
$this->Message_AddError($this->Lang_Get('registration_login_error_used'),$this->Lang_Get('error'));
|
2008-09-21 09:36:57 +03:00
|
|
|
|
$bError=true;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* А не занято ли мыло?
|
|
|
|
|
*/
|
|
|
|
|
if ($this->User_GetUserByMail(getRequest('mail'))) {
|
2009-04-11 14:50:42 +03:00
|
|
|
|
$this->Message_AddError($this->Lang_Get('registration_mail_error_used'),$this->Lang_Get('error'));
|
2008-09-21 09:36:57 +03:00
|
|
|
|
$bError=true;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* Если всё то пробуем зарегить
|
|
|
|
|
*/
|
|
|
|
|
if (!$bError) {
|
|
|
|
|
/**
|
|
|
|
|
* Создаем юзера
|
|
|
|
|
*/
|
2009-09-08 15:02:51 +03:00
|
|
|
|
$oUser=Engine::GetEntity('User');
|
2008-09-21 09:36:57 +03:00
|
|
|
|
$oUser->setLogin(getRequest('login'));
|
|
|
|
|
$oUser->setMail(getRequest('mail'));
|
|
|
|
|
$oUser->setPassword(func_encrypt(getRequest('password')));
|
|
|
|
|
$oUser->setDateRegister(date("Y-m-d H:i:s"));
|
|
|
|
|
$oUser->setIpRegister(func_getIp());
|
|
|
|
|
/**
|
|
|
|
|
* Если используется активация, то генерим код активации
|
|
|
|
|
*/
|
2009-08-20 10:43:06 +03:00
|
|
|
|
if (Config::Get('general.reg.activation')) {
|
2008-09-21 09:36:57 +03:00
|
|
|
|
$oUser->setActivate(0);
|
|
|
|
|
$oUser->setActivateKey(md5(func_generator().time()));
|
|
|
|
|
} else {
|
|
|
|
|
$oUser->setActivate(1);
|
|
|
|
|
$oUser->setActivateKey(null);
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* Регистрируем
|
|
|
|
|
*/
|
|
|
|
|
if ($this->User_Add($oUser)) {
|
2008-11-23 10:24:08 +02:00
|
|
|
|
/**
|
|
|
|
|
* Убиваем каптчу
|
|
|
|
|
*/
|
|
|
|
|
unset($_SESSION['captcha_keystring']);
|
2008-09-21 09:36:57 +03:00
|
|
|
|
/**
|
|
|
|
|
* Создаем персональный блог
|
|
|
|
|
*/
|
|
|
|
|
$this->Blog_CreatePersonalBlog($oUser);
|
2008-10-11 17:51:38 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Если юзер зарегистрировался по приглашению то обновляем инвайт
|
|
|
|
|
*/
|
2009-08-20 10:43:06 +03:00
|
|
|
|
if (Config::Get('general.reg.invite') and $oInvite=$this->User_GetInviteByCode($this->GetInviteRegister())) {
|
2008-10-11 17:51:38 +03:00
|
|
|
|
$oInvite->setUserToId($oUser->getId());
|
|
|
|
|
$oInvite->setDateUsed(date("Y-m-d H:i:s"));
|
|
|
|
|
$oInvite->setUsed(1);
|
|
|
|
|
$this->User_UpdateInvite($oInvite);
|
|
|
|
|
}
|
2008-09-21 09:36:57 +03:00
|
|
|
|
/**
|
|
|
|
|
* Если стоит регистрация с активацией то проводим её
|
|
|
|
|
*/
|
2009-08-20 10:43:06 +03:00
|
|
|
|
if (Config::Get('general.reg.activation')) {
|
2008-09-21 09:36:57 +03:00
|
|
|
|
/**
|
2008-10-21 07:58:03 +03:00
|
|
|
|
* Отправляем на мыло письмо о подтверждении регистрации
|
|
|
|
|
*/
|
|
|
|
|
$this->Notify_SendRegistrationActivate($oUser,getRequest('password'));
|
2009-09-09 20:49:00 +03:00
|
|
|
|
Router::Location(Router::GetPath('registration').'confirm/');
|
2008-09-21 09:36:57 +03:00
|
|
|
|
} else {
|
2008-10-21 07:58:03 +03:00
|
|
|
|
$this->Notify_SendRegistration($oUser,getRequest('password'));
|
2009-02-07 15:04:44 +02:00
|
|
|
|
$this->Viewer_Assign('bRefreshToHome',true);
|
|
|
|
|
$oUser=$this->User_GetUserById($oUser->getId());
|
|
|
|
|
$this->User_Authorization($oUser,false);
|
|
|
|
|
$this->SetTemplateAction('ok');
|
|
|
|
|
$this->DropInviteRegister();
|
|
|
|
|
}
|
2008-09-21 09:36:57 +03:00
|
|
|
|
} else {
|
2009-04-11 14:50:42 +03:00
|
|
|
|
$this->Message_AddErrorSingle($this->Lang_Get('system_error'));
|
2008-09-21 09:36:57 +03:00
|
|
|
|
return Router::Action('error');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* Обрабатывает активацию аккаунта
|
|
|
|
|
*
|
|
|
|
|
* @return unknown
|
|
|
|
|
*/
|
|
|
|
|
protected function EventActivate() {
|
|
|
|
|
$bError=false;
|
|
|
|
|
/**
|
|
|
|
|
* Проверяет передан ли код активации
|
|
|
|
|
*/
|
|
|
|
|
$sActivateKey=$this->GetParam(0);
|
|
|
|
|
if (!func_check($sActivateKey,'md5')) {
|
|
|
|
|
$bError=true;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* Проверяет верный ли код активации
|
|
|
|
|
*/
|
|
|
|
|
if (!($oUser=$this->User_GetUserByActivateKey($sActivateKey))) {
|
|
|
|
|
$bError=true;
|
|
|
|
|
}
|
2009-03-09 13:24:05 +02:00
|
|
|
|
/**
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
if ($oUser and $oUser->getActivate()) {
|
2009-04-11 14:50:42 +03:00
|
|
|
|
$this->Message_AddErrorSingle($this->Lang_Get('registration_activate_error_reactivate'),$this->Lang_Get('error'));
|
2009-03-09 13:24:05 +02:00
|
|
|
|
return Router::Action('error');
|
|
|
|
|
}
|
2008-09-21 09:36:57 +03:00
|
|
|
|
/**
|
|
|
|
|
* Если что то не то
|
|
|
|
|
*/
|
|
|
|
|
if ($bError) {
|
2009-04-11 14:50:42 +03:00
|
|
|
|
$this->Message_AddErrorSingle($this->Lang_Get('registration_activate_error_code'),$this->Lang_Get('error'));
|
2008-09-21 09:36:57 +03:00
|
|
|
|
return Router::Action('error');
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* Активируем
|
|
|
|
|
*/
|
|
|
|
|
$oUser->setActivate(1);
|
|
|
|
|
$oUser->setDateActivate(date("Y-m-d H:i:s"));
|
|
|
|
|
/**
|
|
|
|
|
* Сохраняем юзера
|
|
|
|
|
*/
|
|
|
|
|
if ($this->User_Update($oUser)) {
|
2008-10-11 17:51:38 +03:00
|
|
|
|
$this->DropInviteRegister();
|
2009-02-07 15:04:44 +02:00
|
|
|
|
$this->Viewer_Assign('bRefreshToHome',true);
|
|
|
|
|
$this->User_Authorization($oUser,false);
|
2008-09-21 09:36:57 +03:00
|
|
|
|
return;
|
|
|
|
|
} else {
|
2009-04-11 14:50:42 +03:00
|
|
|
|
$this->Message_AddErrorSingle($this->Lang_Get('system_error'));
|
2008-09-21 09:36:57 +03:00
|
|
|
|
return Router::Action('error');
|
|
|
|
|
}
|
|
|
|
|
}
|
2008-10-11 17:51:38 +03:00
|
|
|
|
/**
|
|
|
|
|
* Обработка кода приглашения при включеном режиме инвайтов
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
protected function EventInvite() {
|
2009-08-20 10:43:06 +03:00
|
|
|
|
if (!Config::Get('general.reg.invite')) {
|
2009-04-11 14:50:42 +03:00
|
|
|
|
return parent::EventNotFound();
|
2008-10-11 17:51:38 +03:00
|
|
|
|
}
|
|
|
|
|
|
2009-10-17 03:27:22 +03:00
|
|
|
|
if (isPost('submit_invite')) {
|
2008-10-11 17:51:38 +03:00
|
|
|
|
/**
|
|
|
|
|
* проверяем код приглашения на валидность
|
|
|
|
|
*/
|
|
|
|
|
if ($this->CheckInviteRegister()) {
|
|
|
|
|
$sInviteId=$this->GetInviteRegister();
|
|
|
|
|
} else {
|
|
|
|
|
$sInviteId=getRequest('invite_code');
|
|
|
|
|
}
|
|
|
|
|
$oInvate=$this->User_GetInviteByCode($sInviteId);
|
|
|
|
|
if ($oInvate) {
|
|
|
|
|
if (!$this->CheckInviteRegister()) {
|
|
|
|
|
$this->Session_Set('invite_code',$oInvate->getCode());
|
|
|
|
|
}
|
|
|
|
|
return Router::Action('registration');
|
|
|
|
|
} else {
|
2009-04-11 14:50:42 +03:00
|
|
|
|
$this->Message_AddError($this->Lang_Get('registration_invite_code_error'),$this->Lang_Get('error'));
|
2008-10-11 17:51:38 +03:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* Путается ли юзер зарегистрироваться с помощью кода приглашения
|
|
|
|
|
*
|
|
|
|
|
* @return unknown
|
|
|
|
|
*/
|
2010-02-06 14:47:19 +02:00
|
|
|
|
protected function CheckInviteRegister() {
|
2008-10-11 17:51:38 +03:00
|
|
|
|
if ($this->Session_Get('invite_code')) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected function GetInviteRegister() {
|
|
|
|
|
return $this->Session_Get('invite_code');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected function DropInviteRegister() {
|
2009-08-20 10:43:06 +03:00
|
|
|
|
if (Config::Get('general.reg.invite')) {
|
2008-10-11 17:51:38 +03:00
|
|
|
|
$this->Session_Drop('invite_code');
|
|
|
|
|
}
|
|
|
|
|
}
|
2009-02-07 15:04:44 +02:00
|
|
|
|
|
2008-09-21 09:36:57 +03:00
|
|
|
|
/**
|
|
|
|
|
* Просто выводит шаблон
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
protected function EventConfirm() {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
?>
|