Ищу Смс регистрация в joomla

Статус
В этой теме нельзя размещать новые ответы.
Могу сказать только хорошее в поддержку SMSfox.ru (пока что). И плагин рабочий на Joomlа 2.5.11. И CMC уходят на укр. номера. И в общем работает отлично.

Но ложка дегтя в том что он не совместим с плагином принудительного редиректа с обычной регистрации пользователей Joomla на форму региcтрации Joomshopping от Nevigen - plg_jshopping_registration_redirect. Каким то образом он перекрывает работу плагина SMSfox.

Задача стоит в том чтобы после подтверждения номера через CMC пользователя бросало на продолжение регистрации в форму JShopping, в не стандартную. Отключение стандартного плагина Аутентификация - Joomla ни к чему не привела.

Может кто подсказать - возможно ли как то установить порядок вызова переменных этих плагинов чтобы их подружить и установить в нужном порядке?

Техподдержка SMSfox.ru уже вторые сутки молчит как на сайте так и по почте. А на джумлафоруме об этом плагине (SMSfox) вообще практически никто ничего не слышал.
 
Ну наверно первый полезный пост. Техподдержка все же ответила и так содержательно ответила.

В плагине «СМС подтверждение регистрации для Joomla» используется 2 сессии, по которым можно определить подтвердил ли пользователь свой номер.

Сессия "smsfox_phone" - устанавливается после того, как пользователь ввел корректный номер телефона.

Сессия "smsfox_code" - устанавливается после того, как пользователь подтвердил свой номер (ввел корректный код из СМС).


Чтобы подружить плагины "Переадресация регистрации и авторизации на JoomShopping" и «СМС подтверждение регистрации для Joomla» нужно сделать следующее.

1) Перед редиректом нужно проверить на существование сессии и если она есть тогда редиректить.
В файле root_your_site/plugins/system/jshopping_registration_redirect/jshopping_registration_redirect.php в событии "onAfterDispatch" нужно добавить условие, т.е. так:
(приблизительные строки 33-38)
...
function onAfterDispatch()
{
// ext. for smsfox_reg
$smsSession =& JFactory::getSession();
if (!$smsSession->get('smsfox_code', false)) {
return;
}
...

2) Чтобы пользователь не попал на страницу регистрации (Для просмотра ссылки Войди или Зарегистрируйся) без подтверждения номера нужно также проверить сессию.
В файле root_your_site/components/com_jshopping/contrlollers/user.php в контроллере "register()" нужно добавить условие, т.е. так:
(приблизительные строки 163-168)
...
function register(){
$smsSession =& JFactory::getSession();
if (!$smsSession->get('smsfox_code', false)) {
JError::raiseError(403, JText::_('Access Forbidden'));
return;
}
...

Должно получиться следующее, сначала идет подтверждение номера мобильного телефона плагином "smsfox_reg", затем после подтверждения плагин "jshopping_registration_redirect" редиректит на страницу регистрации компонента "com_jshopping". Далее уже пользователь регистрируется через компонент "com_jshopping".
 
Буду колдовать и о результатах отписываться.

UPD 1

Спасибо. Все вышло отлично. Все работает. Сперва идет проверка сессий SMS. И после успешной верификации перебрасывает дальше в форму регистрации JoomShopping.

НО! только при условии, что вызов процедуры регистрации осуществляется изначально через стандартный плагин аутентификации и компонента com_users

по таким прямым обращениям, как к примеру Для просмотра ссылки Войди или Зарегистрируйсяindex.php?option=com_users&view=registration

А вот если обращаться к форме регистрации JoomShopping напрямую через элементы компонентов JoomShopping (модуль Jshopping Login, пункты меню Jshopping: мой аккаунт, регистрация и пр) по ссылкам вида:

Для просмотра ссылки Войди или Зарегистрируйся

Для просмотра ссылки Войди или Зарегистрируйся

То получается, что мы игнорируем обращение к плагину jshopping_registration_redirect и разумеется проверку первого условия которое я внес в файл

Скрыть текстовый блок
root_your_site/plugins/system/jshopping_registration_redirect/jshopping_registration_redirect.php в событии "onAfterDispatch" нужно добавить условие, т.е. так:
(приблизительные строки 33-38)
...
function onAfterDispatch()
{
// ext. for smsfox_reg
$smsSession =& JFactory::getSession();
if (!$smsSession->get('smsfox_code', false)) {
return;
}
...


И в ответ получаем отсутсвие подтверждения сесии и ошибку 403, которую, как результат я прописал в файле root_your_site/components/com_jshopping/contrlollers/user.php в контроллере "register()" нужно добавить условие, т.е. так:
Скрыть текстовый блок
(приблизительные строки 163-168)
...
function register(){
$smsSession =& JFactory::getSession();
if (!$smsSession->get('smsfox_code', false)) {
JError::raiseError(403, JText::_('Access Forbidden'));
return;
}
...


UPD 2

Ну и еще сделал такой вот финт ушами.

В файле /SITE_ROOT/components/com_jshopping/templates/ВАШ_ШАБЛОН/user/register.php

добавил в начало файла в определение переменных

Код:
$smsSession =& JFactory::getSession();
$smsSession->get('smsfox_phone');
$res = $smsSession->get('smsfox_phone');


Что позволяет нам вытянуть подтвержденный номер телефона прямо из текущей сессии и задать его переменной $res

Которую потом можно впихнуть в параметр строки input mobil_phone таким образом

Код:
<input type = "text" name = "mobil_phone" id = "mobil_phone" value = "+<?php echo $res ?>" class = "inputbox" />

И получить на дальнейшей странице продолжения регистрации (форма регистрации joomshopping) в поле мобильный телефон уже вбитый готовый в обязательном международном формате номер. Что будет очень полезно для тех кто использует SMS уведомления о заказах в JoomShopping
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху