Исключить выбранные ресурсы mFilter2

Добрый день!

Прошу помощь в настройке mFilter2. Задача, наоборот исключить ресурсы которые выбраны в фильтре и показать все, которые не попадают в запрос.

Например, имеются 3 товара, у каждого (в поле msoption) задана дата или несколько дат:

Товар 1 — [15.10.2024, 25.10.2024]
Товар 2 — [25.10.2024 ]
Товар 3 — [31.10.2024]

Пользователь в запросе, указывает начальную и конечную дату (например msoption|date_close=25.10.2024,30.10.2024), соответственно из выборки должны исключиться Товар 1 и Товар 2, т.к. содержат число 25.10.2024.

Расширяем класс фильтрации

public function filterAvailability(array $requested, array $values, array $ids, $format = 'd.m.Y') {
 $matched = array();

   $min = min($requested);
   $max = max($requested);
      foreach ($values as $number => $resources) {

      if ($number < $min || $number > $max) { 
            foreach ($resources as $id) {
              $matched[] = $id;
                 }
      }
    }
    return $matched;
	}

Работает. Фильтр исключает Товар 2, но не исключает Товар 1 (где указано больше одной даты).

Напишите пожалуйста, если есть решение, как сделать инверсию фильтрации. Готов задонатить за решение. Уже 3 дня, никак… Спасибо!
Roman
14 октября 2024, 14:40
modx.pro
45
0

Комментарии: 1

Артур Шевченко
8 часов назад
0
но не исключает Товар 1 (где указано больше одной даты)
Посмотри тут
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1