Новости Joomla

Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1

Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1

👩‍💻 Joomla 6 нуждается в вашей помощи с тестированием.Вышел недавно релиз Joomla 6 alpha1. Это релиз, в который включены уже проверенные изменения, но ещё очень многие исправления и улучшения ждут своей очереди. Joomla следит за качеством и безопасностью своего кода и каждое изменение должно быть успешно протестировано как минимум ещё двумя участниками сообщества. Разработка Joomla ведётся на платформе GitHub.Филипп Уолтон (Philip Walton) - один из разработчиков, кто активно вносит свой вклад в ядро Joomla. Он уже несколько месяцев посвящает свои послеполуденные часы пятницы работе с Joomla и предлагает присоединиться к нему. 📆 Пятница, 30 мая 2025, с 15:00 до 17:00 по UTC (Лондон) - с 18:00 до 20:00 по Москве.В чате Google Meet Филипп готов помочь с тестированием тем, кто будет делать это в первый раз. А так же он подготовил список лёгких Pull Request, которые можно протестировать довольно быстро. Чем больше тестов будет проведено сейчас, тем меньше ошибок вылезет потом. На данный момент 148 (уже 147 на момент написания заметки) PR на GitHub Joomla ждут тестирования.👩‍💻 Open to all. All together.Также вам поможет сделать первые шаги это видео.GitHub JoomlaДа, это вечер пятницы. Но тестирование занимает порой минут 15, а доброе дело сделано. Просто убедитесь, что разработчик чего-то не пропустил и всё работает как ожидается.#joomla #joomla6 #community

0 Пользователей и 1 Гость просматривают эту тему.
  • 12 Ответов
  • 3104 Просмотров
*

Avalon

  • Осваиваюсь на форуме
  • 34
  • 8 / 0
Баг в ajax умном поиске
« : 27.11.2020, 23:52:06 »
в версии Joomla 3.9.22 работали AJAX подсказки умного поиска, но после обновления на Joomla 3.9.23 перестало AJAX работать.

проблема в файле /public_html/components/com_finder/models/suggestions.php из обновления Joomla 3.9.23
если заменить версию файла suggestions.php из Joomla 3.9.22 вместо 3.9.23 то все работает!

В файле Joomla 3.9.23 /public_html/components/com_finder/models/suggestions.php
внесли изменения в запрос AJAX умного поиска, и AJAX запрос вида
/component/finder/?task=suggestions.suggest&format=json&tmpl=component&q=авто
возвращает пустое значение { "suggestions": [] }

Создание нового индекса поиска не исправляет проблему, пока заменил файл из версии 3.9.22
*

b2z

  • Глобальный модератор
  • 7284
  • 778 / 0
  • Разраблю понемногу
Re: Баг в ajax умном поиске
« Ответ #1 : 28.11.2020, 00:09:09 »
В 3.9.23 исправляли уязвимость:

Низкий приоритет - Ядро - Компонент com_finder игнорирует уровни доступа в списках автоподстановки

Возможно не хватает прав пользователя на что-то.
*

b2z

  • Глобальный модератор
  • 7284
  • 778 / 0
  • Разраблю понемногу
Re: Баг в ajax умном поиске
« Ответ #2 : 28.11.2020, 00:12:05 »
https://github.com/joomla/joomla-cms/commit/435d780d9a87504267256033c5f6fb984f713ff9#diff-14a2966722be708322f2d1831afe62532a612bb533292ada5910192e1b3dc065


Вот правка файла. Я сильно не вникал, но видно, что в запрос добавили проверку уровней доступа пользователей.
*

Avalon

  • Осваиваюсь на форуме
  • 34
  • 8 / 0
Re: Баг в ajax умном поиске
« Ответ #3 : 28.11.2020, 09:21:14 »
В 3.9.23 исправляли уязвимость:
Низкий приоритет - Ядро - Компонент com_finder игнорирует уровни доступа в списках автоподстановки.
Возможно не хватает прав пользователя на что-то.
Если они добавили проверку прав, то надо было им указать: какие права нужны и где!  *ОХ-Х-Х*
Права на что-то... где-то... не устраивает. Работало, после обновления перестало работать.
Пока заменил файлом suggestions.php из версии joomla 3.9.22 всё работает.
Цитировать
игнорирует уровни доступа в списках автоподстановки
Как Guru Joomla! подскажите, где находятся эти "права списков авподстановки" и что в них менять? что игнорирует и где непонятно, создаю и даю все права доступа модулю "умный поиск" не работает!  *POPCORN*
« Последнее редактирование: 28.11.2020, 09:37:09 от Avalon »
*

Avalon

  • Осваиваюсь на форуме
  • 34
  • 8 / 0
Re: Баг в ajax умном поиске
« Ответ #4 : 28.11.2020, 23:09:29 »
проверил на новой установке Joomla 3.9.23 умный поиск с AJAX работает только английскими словами  *ОХ-Х-Х*
« Последнее редактирование: 29.11.2020, 12:22:08 от Avalon »
*

Avalon

  • Осваиваюсь на форуме
  • 34
  • 8 / 0
Re: Баг в ajax умном поиске
« Ответ #5 : 29.11.2020, 03:25:18 »
Вот правка файла. Я сильно не вникал, но видно, что в запрос добавили проверку уровней доступа пользователей.

AJAX умного поиска работает только на Английских словах, на русских не работает. Это не связано с правами доступа.
Не смог найти в чём причина бага. На новой установке работает только с английскими словами, на русских не работает.
У Вас нет такого бага, можете у себя проверить?
« Последнее редактирование: 29.11.2020, 13:10:47 от Avalon »
*

Avalon

  • Осваиваюсь на форуме
  • 34
  • 8 / 0
Re: Баг в ajax умном поиске
« Ответ #6 : 29.11.2020, 12:42:45 »
Итак нашел причину покопавшись дебаггером, почему не работает AJAX умного поиска с Русскими словами, а только с Английскими
Интересно то, что русские слова на букву Е работают, а остальные нет!

В файле Joomla 3.9.23 /public_html/components/com_finder/models/suggestions.php
создаётся суффикс таблицы базы "#__finder_links_terms+СУФФИКС", в таблице базы в которой надо искать нужное Русское слово
Код
// Determine the relevant mapping table suffix by inverting the logic from drivers
$mappingTableSuffix = substr(md5(substr($this->getState('input'), 0, 1)), 0, 1);
...

// Join mapping table for term <-> link relation
$mappingTable = $db->quoteName('#__finder_links_terms' . $mappingTableSuffix);

затем создаётся запрос вида
Код
SELECT DISTINCT(t.term)
FROM j_finder_terms AS t
INNER JOIN j_finder_links_terms8 AS tm ON tm.term_id = t.term_id
INNER JOIN j_finder_links AS l ON (tm.link_id = l.link_id)
WHERE t.term_id IN (7765,8329,8331,8328,8576,8324,8320,8330,8327,8326,8319,8322,8575,8323,8321,8325)
AND l.access IN (1,1,2,3,6)
AND l.state = 1
AND l.published = 1
ORDER BY t.links DESC, t.weight DESC
где:
8 - суффикс таблицы базы, в которой надо искать слово (j_finder_links_terms8)
-------------------------------------
Но в этой таблице нет этих слов! Слова находятся в соседней таблице с суффиксом c (j_finder_links_termsc) поэтому SQL запрос выдаёт пустое значение и AJAX поиск пустой!
Проблема связана с неправильным формированием суффикса таблицы где лежат русские слова! Если перенести нужные значение русских слов в таблицу с суффиксом 8, то AJAX запрос умного поиска начинает работать с русским словами!
Русские слова на букву Е помещаются изначально в нужную таблицу- поэтому корректно работает только с буквой Е
Как правильно сформировать суффикс не знаю. Пока откатил на файл версии Joomla 3.9.22 с ним работает, так как SQL запрос проще.
« Последнее редактирование: 30.11.2020, 13:18:55 от Avalon »
*

Avalon

  • Осваиваюсь на форуме
  • 34
  • 8 / 0
Re: Баг в ajax умном поиске
« Ответ #7 : 29.11.2020, 12:56:30 »
del
*

sivers

  • Живу я здесь
  • 2577
  • 357 / 0
Re: Баг в ajax умном поиске
« Ответ #8 : 29.11.2020, 16:01:24 »
Как правильно сформировать суффикс не знаю.
А в старой версии он как-то не так формируется? Попробуйте заменить функцию substr на mb_substr в этой строке:
Код
$mappingTableSuffix = substr(md5(substr($this->getState('input'), 0, 1)), 0, 1);
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

Avalon

  • Осваиваюсь на форуме
  • 34
  • 8 / 0
Re: Баг в ajax умном поиске
« Ответ #9 : 29.11.2020, 21:46:31 »
А в старой версии он как-то не так формируется? Попробуйте заменить функцию substr на mb_substr в этой строке:
Код
$mappingTableSuffix = substr(md5(substr($this->getState('input'), 0, 1)), 0, 1);

Спасибо, Ваш способ решает проблему с заменой substr на mb_substr но нашёл другой способ из другого файла joomla

В старой вообще не формировался, а в соседнем файле components\com_finder\models\search.php формируется через функцию utf8_substr в функции StringHelper::substr

Решение как в файле search.php
В файле components\com_finder\models\suggestions.php меняем на
Код
// подключаем в начале файла класс сразу после defined('_JEXEC') or die;
use Joomla\String\StringHelper;

//заменяем багованый файл на исправный
//$mappingTableSuffix = substr(md5(substr($this->getState('input'), 0, 1)), 0, 1);
$mappingTableSuffix = StringHelper::substr(md5(StringHelper::substr($this->getState('input'), 0, 1)), 0, 1);
После исправления AJAX умного поиска кириллицы работает исправно!
« Последнее редактирование: 03.12.2020, 18:22:17 от Avalon »
*

Avalon

  • Осваиваюсь на форуме
  • 34
  • 8 / 0
Re: Баг в ajax умном поиске
« Ответ #10 : 29.11.2020, 22:46:03 »
создал pull request на github с исправлением этой ошибки
Ошибка
https://github.com/joomla/joomla-cms/issues/31532

Изменения pull request
https://github.com/joomla/joomla-cms/pull/31533/files
*

Avalon

  • Осваиваюсь на форуме
  • 34
  • 8 / 0
Re: Баг в ajax умном поиске
« Ответ #11 : 30.11.2020, 13:00:31 »
Исправление проверили и приняли к версии joomla! 3.9.24
https://github.com/joomla/joomla-cms/pull/31533
« Последнее редактирование: 30.11.2020, 13:13:03 от Avalon »
*

b2z

  • Глобальный модератор
  • 7284
  • 778 / 0
  • Разраблю понемногу
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться