Проблема с предварительными подсчётами в mFilter2

Александр
297
1
Александр, здравствуйте! Не так давно вышла новая версия mSearh2, там затронуты изменения касаемо кэширования предварительных результатов в mFilter2 и если расширен класс и фильтруешь по своей таблице, возникают проблемы с подсчётами, до выхода новой версии это решалось добавление кода в файл custom.class.php:

//Правильные подсчёты в mFilter2
public function filterDefault(array $requested, array $values, array $ids) {
     return array_unique(parent::filterDefault($requested,$values,$ids));
}

но с выходом новой версии mSearh2 это уже не работает, код который был изменён и конкретно в нём проблема, находится в файле: msearch2.class.php начиная со строки 1257 по 1259 и 1308 по 1408, я скинул файл на яндекс диск, посмотрите
пожалуйста и второй файл где конкретно указаны куски кода которые были изменены в новой версии с сравнением со старым файлом: yadi.sk/d/htWmAXJ-XjXSyw?w=1 подскажите пожалуйста для правильной работы подсчётов в mFilter2, что нужно изменить в файле custom.class.php учитывая эти изменения?

Комментарии ()

  1. Александр Мальцев
    24 октября 2020, 17:28
    Здравствуйте! Напишите автору компонента об этой проблеме. Сейчас, как вариант, можете изменить код в «msearch2.class.php».
    На 1257 строчке поменяйте код на тот, который был до версии 1.14:
    //if (!isset($methods[$filter])) {
    if (!preg_match('/(.*?)' . preg_quote($this->config['filter_delimeter'], '/') . '(.*?)/', $filter)) {
    
    Четыре строчки, начиная с 1325, закомментируйте:
    /*$cache_key = sha1(json_encode($key));
    if ($res = $this->modx->cacheManager->get('msearch2/sugg_' . $cache_key)) {
      return $res;
    }*/
    
    1. Александр
      24 октября 2020, 18:05
      При таком варианте подсчёты работают. Огромное Вам спасибо! Обязательно сообщу Василию по этой проблеме.
    Войдите, пожайлуста, в аккаунт, чтобы оставить комментарий.