UMIhelp

Разработка сайта на UMI.CMS => Макросы UMI.CMS => Тема начата: atach от 24 Июня 2014, 17:48:02

Название: Регистрация пользователя и корзина гостя/пользователя
Отправлено: atach от 24 Июня 2014, 17:48:02
Подскажите такой нюанс.
В стандартной регистрации пользователя в UMI,  если у гостя есть корзина с товарами, то она переносится автоматом на зарегистрированного пользователя при этом текущий customer гостя удалятся и его заказ удаляется. И автоматом создается клон заказа customer и привязывается к новому только что зарегистрированному пользователю.


У меня сейчас в системе подключен провайдер авторизации аналог loginza. Я его сам подклюяал прописывая в кастомах простую по сути регистрацию пользователей (путем создания объекта) и не учитывал вот этот нюанс.

Кто может подсказать где посмотреть в системных методах как это реализовано, или как это сделать ... В системно "registrate_do" ничего подобного нет

Спасибо
Название: Re:Регистрация пользователя и корзина гостя/пользователя
Отправлено: admin от 24 Июня 2014, 22:28:10
система сливает заказы авторизованного покупателя и гостя при попытке взять заказ посетителя происходит
либо обращение к функции order::get($orderId) (см. файл /classes/modules/emarket/classes/orders/order.php) в этой функции (функция get()) есть строчка $customer = customer::get();,
либо сразу к $customer = customer::get();.
Тут мы попадаем в функцию (get() из файла /classes/modules/emarket/classes/customer/customer.php) в которой возможно обращение в функции customer::create() ? которая в свою очередь проверяет не надо ли слить заказы гостя (если таковой есть в куках) с авторизованным, текущим пользователем (функции merge() в файле /classes/modules/emarket/classes/customer/customer.php)
Название: Re:Регистрация пользователя и корзина гостя/пользователя
Отправлено: atach от 25 Июня 2014, 09:27:43
Да я это нашел
* Слить все заказы покупателя в профиль пользователя.
* Объект покупателя после этого будет уничтожен

Не могу понять что значит слить. По коду вижу что идет выборка всех заказов данного покупателя гостя (customer) и при выполннии функции идет просто присваивание всех заказов к новому зарегистрированному пользователю. Это понятно.

Но не могу понять как сохранить текущую корзину с товарами при регистрации (не оформленную). Т.е. сейчас после регистрации у меня всеравно созданется пустой заказ dummy...
Название: Re:Регистрация пользователя и корзина гостя/пользователя
Отправлено: admin от 25 Июня 2014, 09:45:01
Т.е. сейчас после регистрации у меня всеравно созданется пустой заказ dummy...

после регистрации, которую писали вы или после дефолтной umi'вской регистрации сливание заказов тоже не происходит? По идее, после авторизации, ваш гостевой заказ должен переехать к авторизованному пользователю.
Название: Re:Регистрация пользователя и корзина гостя/пользователя
Отправлено: atach от 25 Июня 2014, 15:16:47
После той который писал я ....
Получается что заказ последний присваивается новому зарегиному пользователю и всё норм, но он не отображается в корзине, а почему то всеравно создается новый dummy ....

Не могу понять как система определяет что у зарегистрированного пользователя надо создать новый пустой dummy или использовать недооформленный старый заказ ...

по какому то свойству заказа?
Название: Re:Регистрация пользователя и корзина гостя/пользователя
Отправлено: admin от 25 Июня 2014, 15:28:31
вы попробовали дефолтную авторизацию с товарами в корзине у гостя? товары потом видны в корзине у авторизованного клиента?

там в коде видно, что система просто создает заказ на авторизованного пользователя. Если в куках есть гость, система ищет нет ли у него товаров в корзине, копирует их в корзину авторизованного, а гостевую удаляет.
Название: Re:Регистрация пользователя и корзина гостя/пользователя
Отправлено: atach от 27 Июня 2014, 15:25:53
Долго мучал и нашел проблему ....
Система не давала доступа к старому заказу гостя (customer), с которого надо брать корзину и товары в ней ...
Название: Re:Регистрация пользователя и корзина гостя/пользователя
Отправлено: admin от 27 Июня 2014, 21:34:14
Не давала при дефолтном "своем" способе авторизации?
И почему не давала?