ActionRegistration
Package | application.actions |
---|---|
Inheritance | class ActionRegistration » Action » LsObject |
Since | 1.0 |
Source Code | /application/classes/actions/ActionRegistration.class.php |
Экшен обработки регистрации
Protected Properties
Property | Type | Description | Defined By |
---|---|---|---|
_aBehaviors | Список поведений в виде готовых объектов, формируется автоматически | LsObject | |
aBehaviors | array | Список поведений | LsObject |
aParams | array | Список параметров из URL | Action |
aParamsEventMatch | array | Список совпадений по регулярному выражению для евента | Action |
aRegisterEvent | array | Список зарегистрированных евентов | Action |
aRegisterEventExternal | array | Список евентов, которые нужно обрабатывать внешним обработчиком | Action |
sActionTemplate | string|null | Шаблон экшена | Action |
sCurrentAction | null|string | Текущий экшен | Action |
sCurrentEvent | string|null | Текущий евент | Action |
sCurrentEventName | string|null | Имя текущий евента | Action |
sDefaultEvent | string|null | Дефолтный евент | Action |
Public Methods
Method | Description | Defined By |
---|---|---|
ActionCall() | Позволяет запускать не публичные методы экшена через объект | Action |
ActionCallExists() | Проверяет метод экшена на существование | Action |
ActionGet() | Возвращает свойство объекта экшена | Action |
ActionSet() | Устанавливает свойство объекта экшена | Action |
AddBehaviorHook() | Добавляет хук поведения | LsObject |
AttachBehavior() | Присоединяет поведение к объекту | LsObject |
DetachBehavior() | Отсоединяет поведение от объекта | LsObject |
EventShutdown() | Выполняется при завершение экшена, после вызова основного евента | Action |
ExecEvent() | Запускает евент на выполнение | Action |
GetActionClass() | Получить каталог с шаблонами экшена(совпадает с именем класса) | Action |
GetBehavior() | Возвращает объект поведения по его имени | LsObject |
GetBehaviors() | Возвращает все объекты поведения | LsObject |
GetCurrentEventName() | Возвращает имя евента | Action |
GetDefaultEvent() | Получает евент по умолчанию | Action |
GetParam() | Получает параметр из URL по его номеру, если его нет то null | Action |
GetParams() | Получает список параметров из УРЛ | Action |
GetTemplate() | Получить шаблон | Action |
Init() | Инициализация | ActionRegistration |
RemoveBehaviorHook() | Удаляет хук поведения | LsObject |
RunBehaviorHook() | Запускает хук поведения на выполнение | LsObject |
SetDefaultEvent() | Устанавливает евент по умолчанию | Action |
SetParam() | Установить значение параметра(эмуляция параметра в URL). | Action |
__call() | Ставим хук на вызов неизвестного метода и считаем что хотели вызвать метод какого либо модуля | LsObject |
__clone() | При клонировании сбрасываем поведения | LsObject |
__construct() | Конструктор | Action |
__get() | Обработка доступа к объекты поведения | LsObject |
Protected Methods
Method | Description | Defined By |
---|---|---|
AddEvent() | Добавляет евент в экшен | Action |
AddEventPreg() | Добавляет евент в экшен, используя регулярное выражение для евента и параметров | Action |
CheckInviteRegister() | Пытается ли юзер зарегистрироваться с помощью кода приглашения | ActionRegistration |
DropInviteRegister() | Удаляет код приглашения из сессии | ActionRegistration |
EventActivate() | Обрабатывает активацию аккаунта | ActionRegistration |
EventAjaxReactivation() | Ajax повторной активации | ActionRegistration |
EventAjaxRegistration() | Обработка Ajax регистрации | ActionRegistration |
EventAjaxValidateFields() | Ajax валидация форму регистрации | ActionRegistration |
EventConfirm() | Просто выводит шаблон для подтверждения регистрации | ActionRegistration |
EventErrorDebug() | Выводит отладочную информацию в стандартном сообщении | Action |
EventIndex() | Показывает страничку регистрации | ActionRegistration |
EventInvite() | Обработка кода приглашения при включеном режиме инвайтов | ActionRegistration |
EventNotFound() | Вызывается в том случаи если не найден евент который запросили через URL | Action |
EventReactivation() | Повторный запрос активации | ActionRegistration |
GetEventMatch() | Возвращает элементы совпадения по регулярному выражению для евента | Action |
GetInviteRegister() | Вожвращает код приглашения из сессии | ActionRegistration |
GetParamEventMatch() | Возвращает элементы совпадения по регулярному выражению для параметров евента | Action |
PrepareBehaviors() | Инициализация поведений | LsObject |
RegisterEvent() | Регистрируем евенты | ActionRegistration |
RegisterEventExternal() | Регистрируем внешние обработчики для евентов | Action |
SetTemplate() | Устанавливает какой шаблон выводить | Action |
SetTemplateAction() | Устанавливает какой шаблон выводить | Action |
Method Details
CheckInviteRegister()
method
protected bool CheckInviteRegister()
| ||
{return} | bool |
Source Code: /application/classes/actions/ActionRegistration.class.php#385 (show)
protected function CheckInviteRegister()
{
if ($this->Session_Get('invite_code')) {
return true;
}
return false;
}
Пытается ли юзер зарегистрироваться с помощью кода приглашения
DropInviteRegister()
method
protected void DropInviteRegister()
|
Source Code: /application/classes/actions/ActionRegistration.class.php#406 (show)
protected function DropInviteRegister()
{
if (Config::Get('general.reg.invite')) {
$this->Session_Drop('invite_code');
}
}
Удаляет код приглашения из сессии
EventActivate()
method
protected void EventActivate()
|
Source Code: /application/classes/actions/ActionRegistration.class.php#261 (show)
protected function EventActivate()
{
$bError = false;
/**
* Проверяет передан ли код активации
*/
$sActivateKey = $this->GetParam(0);
if (!func_check($sActivateKey, 'md5')) {
$bError = true;
}
/**
* Проверяет верный ли код активации
*/
if (!($oUser = $this->User_GetUserByActivateKey($sActivateKey))) {
$bError = true;
}
/**
*
*/
if ($oUser and $oUser->getActivate()) {
$this->Message_AddErrorSingle($this->Lang_Get('auth.registration.notices.error_reactivate'),
$this->Lang_Get('error'));
return Router::Action('error');
}
/**
* Если что то не то
*/
if ($bError) {
$this->Message_AddErrorSingle($this->Lang_Get('auth.registration.notices.error_code'),
$this->Lang_Get('error'));
return Router::Action('error');
}
/**
* Активируем
*/
$oUser->setActivate(1);
$oUser->setDateActivate(date("Y-m-d H:i:s"));
/**
* Сохраняем юзера
*/
if ($this->User_Update($oUser)) {
$this->DropInviteRegister();
$this->User_Authorization($oUser, false);
return;
} else {
$this->Message_AddErrorSingle($this->Lang_Get('system_error'));
return Router::Action('error');
}
}
Обрабатывает активацию аккаунта
EventAjaxReactivation()
method
protected void EventAjaxReactivation()
|
Source Code: /application/classes/actions/ActionRegistration.class.php#326 (show)
protected function EventAjaxReactivation()
{
$this->Viewer_SetResponseAjax('json');
if ((func_check(getRequestStr('mail'), 'mail') and $oUser = $this->User_GetUserByMail(getRequestStr('mail')))) {
if ($oUser->getActivate()) {
$this->Message_AddErrorSingle($this->Lang_Get('auth.registration.notices.error_reactivate'));
return;
} else {
$oUser->setActivateKey(md5(func_generator() . time()));
if ($this->User_Update($oUser)) {
$this->Message_AddNotice($this->Lang_Get('auth.reactivation.notices.success'));
$this->Notify_SendReactivationCode($oUser);
return;
}
}
}
$this->Message_AddErrorSingle($this->Lang_Get('auth.notices.error_bad_email'));
}
Ajax повторной активации
EventAjaxRegistration()
method
protected void EventAjaxRegistration()
|
Source Code: /application/classes/actions/ActionRegistration.class.php#153 (show)
protected function EventAjaxRegistration()
{
/**
* Устанавливаем формат Ajax ответа
*/
$this->Viewer_SetResponseAjax('json');
/**
* Создаем объект пользователя и устанавливаем сценарий валидации
*/
$oUser = Engine::GetEntity('ModuleUser_EntityUser');
$oUser->_setValidateScenario('registration');
/**
* Заполняем поля (данные)
*/
$oUser->setLogin(getRequestStr('login'));
$oUser->setMail(getRequestStr('mail'));
$oUser->setPassword(getRequestStr('password'));
$oUser->setPasswordConfirm(getRequestStr('password_confirm'));
$oUser->setCaptcha(getRequestStr('captcha'));
$oUser->setDateRegister(date("Y-m-d H:i:s"));
$oUser->setIpRegister(func_getIp());
/**
* Если используется активация, то генерим код активации
*/
if (Config::Get('general.reg.activation')) {
$oUser->setActivate(0);
$oUser->setActivateKey(md5(func_generator() . time()));
} else {
$oUser->setActivate(1);
$oUser->setActivateKey(null);
}
$this->Hook_Run('registration_validate_before', array('oUser' => $oUser));
/**
* Запускаем валидацию
*/
if ($oUser->_Validate()) {
$this->Hook_Run('registration_validate_after', array('oUser' => $oUser));
$oUser->setPassword(func_encrypt($oUser->getPassword()));
if ($this->User_Add($oUser)) {
$this->Hook_Run('registration_after', array('oUser' => $oUser));
/**
* Убиваем каптчу
*/
unset($_SESSION['captcha_keystring_user_signup']);
/**
* Подписываем пользователя на дефолтные события в ленте активности
*/
$this->Stream_switchUserEventDefaultTypes($oUser->getId());
/**
* Если юзер зарегистрировался по приглашению то обновляем инвайт
*/
if (Config::Get('general.reg.invite') and $oInvite = $this->User_GetInviteByCode($this->GetInviteRegister())) {
$oInvite->setUserToId($oUser->getId());
$oInvite->setDateUsed(date("Y-m-d H:i:s"));
$oInvite->setUsed(1);
$this->User_UpdateInvite($oInvite);
}
/**
* Если стоит регистрация с активацией то проводим её
*/
if (Config::Get('general.reg.activation')) {
/**
* Отправляем на мыло письмо о подтверждении регистрации
*/
$this->Notify_SendRegistrationActivate($oUser, getRequestStr('password'));
$this->Viewer_AssignAjax('sUrlRedirect', Router::GetPath('registration') . 'confirm/');
} else {
$this->Notify_SendRegistration($oUser, getRequestStr('password'));
$oUser = $this->User_GetUserById($oUser->getId());
/**
* Сразу авторизуем
*/
$this->User_Authorization($oUser, false);
$this->DropInviteRegister();
/**
* Определяем URL для редиректа после авторизации
*/
$sUrl = Config::Get('module.user.redirect_after_registration');
if (getRequestStr('return-path')) {
$sUrl = getRequestStr('return-path');
}
$this->Viewer_AssignAjax('sUrlRedirect', $sUrl ? $sUrl : Router::GetPath('/'));
$this->Message_AddNoticeSingle($this->Lang_Get('auth.registration.notices.success'));
}
} else {
$this->Message_AddErrorSingle($this->Lang_Get('system_error'));
return;
}
} else {
/**
* Получаем ошибки
*/
$this->Viewer_AssignAjax('aErrors', $oUser->_getValidateErrors());
}
}
Обработка Ajax регистрации
EventAjaxValidateFields()
method
protected void EventAjaxValidateFields()
|
Source Code: /application/classes/actions/ActionRegistration.class.php#86 (show)
protected function EventAjaxValidateFields()
{
/**
* Устанавливаем формат Ajax ответа
*/
$this->Viewer_SetResponseAjax('json');
/**
* Создаем объект пользователя и устанавливаем сценарий валидации
*/
$oUser = Engine::GetEntity('ModuleUser_EntityUser');
$oUser->_setValidateScenario('registration');
/**
* Пробегаем по переданным полям/значениям и валидируем их каждое в отдельности
*/
$aFields = getRequest('fields');
if (is_array($aFields)) {
foreach ($aFields as $aField) {
if (isset($aField['field']) and isset($aField['value'])) {
$this->Hook_Run('registration_validate_field', array('aField' => &$aField));
$sField = $aField['field'];
$sValue = $aField['value'];
/**
* Список полей для валидации
*/
switch ($sField) {
case 'login':
$oUser->setLogin($sValue);
break;
case 'mail':
$oUser->setMail($sValue);
break;
case 'captcha':
$oUser->setCaptcha($sValue);
break;
case 'password':
$oUser->setPassword($sValue);
break;
case 'password_confirm':
$oUser->setPasswordConfirm($sValue);
$oUser->setPassword(isset($aField['params']['password']) ? $aField['params']['password'] : null);
break;
default:
continue;
break;
}
/**
* Валидируем поле
*/
$oUser->_Validate(array($sField), false);
}
}
}
/**
* Возникли ошибки?
*/
if ($oUser->_hasValidateErrors()) {
/**
* Получаем ошибки
*/
$this->Viewer_AssignAjax('aErrors', $oUser->_getValidateErrors());
}
}
Ajax валидация форму регистрации
EventConfirm()
method
protected void EventConfirm()
|
Source Code: /application/classes/actions/ActionRegistration.class.php#417 (show)
protected function EventConfirm()
{
}
Просто выводит шаблон для подтверждения регистрации
EventIndex()
method
protected void EventIndex()
|
Source Code: /application/classes/actions/ActionRegistration.class.php#253 (show)
protected function EventIndex()
{
}
Показывает страничку регистрации Просто вывод шаблона
EventInvite()
method
protected void EventInvite()
|
Source Code: /application/classes/actions/ActionRegistration.class.php#351 (show)
protected function EventInvite()
{
if (!Config::Get('general.reg.invite')) {
return parent::EventNotFound();
}
/**
* Обработка отправки формы с кодом приглашения
*/
if (isPost('submit_invite')) {
/**
* проверяем код приглашения на валидность
*/
if ($this->CheckInviteRegister()) {
$sInviteId = $this->GetInviteRegister();
} else {
$sInviteId = getRequestStr('invite_code');
}
$oInvate = $this->User_GetInviteByCode($sInviteId);
if ($oInvate) {
if (!$this->CheckInviteRegister()) {
$this->Session_Set('invite_code', $oInvate->getCode());
}
return Router::Action('registration');
} else {
$this->Message_AddError($this->Lang_Get('auth.invite.alerts.error_code'), $this->Lang_Get('error'));
}
}
}
Обработка кода приглашения при включеном режиме инвайтов
EventReactivation()
method
protected void EventReactivation()
|
Source Code: /application/classes/actions/ActionRegistration.class.php#314 (show)
protected function EventReactivation()
{
if ($this->User_GetUserCurrent()) {
Router::Location(Router::GetPath('/'));
}
$this->Viewer_AddHtmlTitle($this->Lang_Get('auth.reactivation.title'));
}
Повторный запрос активации
GetInviteRegister()
method
protected string GetInviteRegister()
| ||
{return} | string |
Source Code: /application/classes/actions/ActionRegistration.class.php#398 (show)
protected function GetInviteRegister()
{
return $this->Session_Get('invite_code');
}
Вожвращает код приглашения из сессии
Init()
method
public void Init()
|
Source Code: /application/classes/actions/ActionRegistration.class.php#34 (show)
public function Init()
{
/**
* Проверяем аторизован ли юзер
*/
if ($this->User_IsAuthorization()) {
$this->Message_AddErrorSingle($this->Lang_Get('auth.registration.notices.already_registered'),
$this->Lang_Get('attention'));
return Router::Action('error');
}
/**
* Если включены инвайты то перенаправляем на страницу регистрации по инвайтам
*/
if (!$this->User_IsAuthorization() and Config::Get('general.reg.invite') and !in_array(Router::GetActionEvent(),
array('invite', 'activate', 'reactivation', 'confirm')) and !$this->CheckInviteRegister()
) {
return Router::Action('registration', 'invite');
}
$this->SetDefaultEvent('index');
/**
* Устанавливаем title страницы
*/
$this->Viewer_AddHtmlTitle($this->Lang_Get('auth.registration.title'));
}
Инициализация
RegisterEvent()
method
protected void RegisterEvent()
|
Source Code: /application/classes/actions/ActionRegistration.class.php#63 (show)
protected function RegisterEvent()
{
$this->AddEvent('index', 'EventIndex');
$this->AddEvent('confirm', 'EventConfirm');
$this->AddEvent('activate', 'EventActivate');
$this->AddEvent('invite', 'EventInvite');
$this->AddEvent('reactivation', 'EventReactivation');
$this->AddEvent('ajax-validate-fields', 'EventAjaxValidateFields');
$this->AddEvent('ajax-registration', 'EventAjaxRegistration');
$this->AddEvent('ajax-reactivation', 'EventAjaxReactivation');
}
Регистрируем евенты