Уборщик для UMI.CMS. Чистка незарегистрированных пользователей и брошенных корзин
Со временем роста возраста сайта и кол-ва посетителей база данных UMI.CMS начитает увеличиваться, если используется не дорогой хостинг, то вам могу, например отключить сайт — что чревато для бизнеса потерей денег 🙁 ...
Данная статья посвящена тому, как настроить авто-очистку брошенных корзин и незарегистрированных пользователей.
Для того, чтобы увидеть полный список пользователей и брошенных корзин вам нужно войти:
1) Старая версия UMI — Шаблоны данных -> в строку поиска написать «Незарегистрированный» -> Открыть справочник с данными:
2) Новая версия UMI - Шаблоны данных -> в строку поиска написать «Незарегистрированный», навести мышь и посмотреть на ID справочника, и в строку ввода браузера вставить: /admin/data/guide_items/{id}/, где {id} — это то, что вы подсмотрели на скриншоте:
После этих манипуляций вы войдете в справочник, где будут хранится незарегистрированные пользователи. Для того, чтобы найти заказы, нужно проделать теже действия.
Справочники можно чистить вручную, например, 1 раз в месяц. Но по мне данные процесс проще автоматизировать.
Я покажу пример автоматизации справочника для работы с заказами, вы по аналогии сможете сделать с пользователями.
В корне сайта создайте файл garbage.php и в него поместите код (пояснения будут ниже)
<?php /** * @desc Уборщик брощенных корзин. Справочник разположен в Шаблоны данных -> Справочники -> Содержание справочника "Заказ" * @desc Удаляет записи у которых payment_status_id = пустота и 218(иницилизированна) */ include "./standalone.php"; $sel = new selector('objects'); $sel->types('object-type')->name('emarket', 'order'); foreach ($sel as $selItem) { $umiObjects = umiObjectsCollection::getInstance(); $order = $umiObjects->getObject($selItem->getId()); $orderPaymentStatusId = $order->getValue("payment_status_id"); if( $orderPaymentStatusId== "" OR $orderPaymentStatusId == 218) { $umiObjects->delObject($order->getId()); } } ?>
Строка #6 — подключается фрейморк UMI.CMS
Строка #7 #8 — при помощи selector UMI.CMS выбираем объекты с типом «Заказа». Чтобы узнать, какие существуют еще объекты и узнать их ID и типы, вам сюда
Строка #11 — #20 осуществляется перебор объектов.
Строка #16 — получает значение поля «payment_status_id» в заказе
Строка #17 — ВНИМАНИЕ! Здесь проверяется ID статуса, в моем случае это пустота и иницилизированна и удаляется.
Рекомендации касательно работы.
1) Данный процесс либо можно запускать вручную, либо настроить процесс (cron) автоматического запуска, например, каждое воскресенье, в 4 утра
2) Первый запуск самый сложный, так как данных будет много и сразу все удалить может не получиться и нужно будет запустить несколько раз подряд
3) Все изменения на свой страх и риск, не тестируйте на рабочих площадках
4) Перед переносом на prodaction-площадку, сделайте резервную копию БД (вообще настройке резервирование на постоянной основе)