Setest / bpFilter

Велосипед вывода ресурсов на MODx с учетом сложной сортировки

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Project Title

Проект создан для вывода ресурсов у клиента с учетом пагинации, на modx версии 2.6.1-pl и выше. Основное отличие от pdoResources и аналогов, в том что позволяет выводить данные с учетом последовательности сложной сортировки. Например, есть сайт на говнохостинге, с общим списком товаров > 100000. Необходимо получить товары в следующией последовательности не нарушая общее кол-во товаров и пагинации:

  • Только с обозаченные как "особенные"
  • С ценой до 100 (исключая особенные)
  • С ценой 100-199 (исключая особенные)
  • Популярные (исключая предыдущие пункты)
  • ...
  • все остальные

Тип ресурса, связи с другими ресурсами и таблицами не имеет значения. Вы можете даже выводить данные которые находятся вне схемы БД modx.

Getting Started

Приложение, требует наличие компонента Bp, если у вас его нет... вы можете заменить используемые вызовы на свои.

Prerequisities

You'll need to install:

  • PHP (Minimum 7.3)

Installing

Usage

Для каждого нового appId необходимо создать файл с соответствующим именем в src/Filter. Смотрите примеры в папке. Все необходимые плагины и сниппеты лежат в папке elements.

Snippet

Вывод ресурсов на странице.

[[!+page.nav]]
[[!pdoPage?
    &showLog=`0`
    &element=`bp.cocain`
    &appId=`business`
    &resourceId = `[[*id]]`
    &where=`{"template":"30","parent":"[[++bp.filters_businessId]]"}`

    &TV_tvPrefix=`TV`
    &includeTVs=`img,anyUrl,currency,topnine,international,categories,projectCountry,projectRegion,projectCity,stage,cost(int),patent`
]]

TODO

  • Метод поиска таблиц по префиксу в имени
  • Метод определения appId
  • Метод добавляющий в регистр запись о том что нужно сбросить кеш у определенного приложения (app_id + context_key)
  • Метод получения инфы из регистра о том что нужно сбросить кеш
  • Задание cron сброса кеша по указанному идентификатору приложения - cron_clearCocaineCache
  • Реакция на событие - добавление в регистр информации о необходимости сброса кеша сделать отмену сброса, т.е. выкидывать задание из кеша при некоторых условиях Например менеджер опубликовал проект, пользователь отредактировал и он снялся с публикации время между этими действиями не достигло момента обновления, т.е. обновлять нет нужды, но как поступать если у нас несколько заказов на сброс кеша одного и того же приложения: регистр выглядит как: bp_cocain -> project -> в очереди uid|time, а в payload ['project name' => uid] Тогда можно будет удалять из очереди не нужные данные зная uid, например это может быть номер проекта.
  • Добавить класс UsersFilter
  • UsersFilter - оживить where
  • UsersFilter - сджоинить с таблицей ресурсов, для проверка наличия ресурсов это можно сразу отображать, есть ресурс или нет
  • UsersFilter - сджоинить с таблицей оплаченных заказов
  • добавить кнопку в USERS для сброса кеша
  • выводить есть ли оплата и ресурсы в общей таблице
  • сброс кеша для бизнесов
  • ???не правильно работает setTotal при наличии условия where, он кажется его не запускает
  • ??? параметр пачек может сделать динамическим он не всегда нужен
  • ??? Trait или abstarct или array_merge(config_default, config)
  • Если документ сняли с публикации, когда он должен пропасть из кеша? Сразу или при общем сбросе?
  • Реакция на событие при сбросе кеша - отчистка мусора: удаление таблиц из БД
  • Реакция на событие при общем сбросе кеша
  • Добавить инфу в регистр о необходимости сброса кеша для app_id: projects
  • Добавить инфу в регистр о необходимости сброса кеша для app_id: users
  • Добавить блокировку долгих методов через файл lock например. См метод lockFile core/xpdo/cache/xpdocachemanager.class.php
  • Добавить блокировку во время очистки кеша ???
  • Улучшить проброс ошибок так чтобы получить имя метода и класса где она произошла (getTrace, getLine либо посмотреть как реализовано в cron)

Authors

License

This project is licensed under the MIT License - see the LICENSE.md file for details.

About

Велосипед вывода ресурсов на MODx с учетом сложной сортировки

License:MIT License


Languages

Language:PHP 100.0%