Ошибка в запросе БД на странице списка пользователей "Рейтинг"

ЕСТЬ РЕШЕНИЕ InstantCMS 2.X
#1 21 марта 2025 в 16:51

После обновления 2.17.2 на странице users/rating
вот такая ошибка

  1. Ошибка в запросе БД:
  2. У вас ошибка в запросе. Изучите документацию по используемой версии MySQL на предмет корректного синтаксиса около 'asc LIMIT 0, 20' на строке 5
  3.  
  4. SELECT i.*, IF(online.date_created IS NOT NULL AND TIMESTAMPDIFF(SECOND, online.date_created, NOW()) <= 180, 1, 0) as `is_online`
  5. FROM cms_users i
  6. LEFT JOIN cms_sessions_online as online ON online.user_id = i.id
  7. WHERE (i.is_locked IS NULL) AND (i.is_deleted IS NULL)
  8. ORDER BY i.karma desc, rating desc asc
  9. LIMIT 0, 20
  10.  
  11. Последние вызовы:
  12.  
  13. cmsModel->get() @ /system/controllers/users/model.php : 88
  14. modelUsers->getUsers() @ /system/controllers/users/frontend.php : 331
  15. users->renderProfilesList() @ /system/core/action.php : 60
  16. cmsAction->__call() @ /system/controllers/users/actions/index.php : 42
  17. actionUsersIndex->run() @ /system/core/controller.php : 607
  18. cmsController->runExternalAction() @ /system/core/controller.php : 476
  19. cmsController->executeAction() @ /system/core/frontend.php : 18
  20. cmsFrontend->executeAction() @ /system/core/controller.php : 452
  21. cmsController->runAction() @ /system/core/core.php : 995
  22. cmsCore->runController() @ /system/core/core.php : 196
  23. cmsCore->runHttp() @ /index.php : 28
  24.  
#2 21 марта 2025 в 17:09

DRUID, есть такая проблема. Откройте файл /system/core/model.php и метод orderBy замените на:

  1. public function orderBy($field, $direction = '', $is_force_index_by_field = false) {
  2.  
  3. // в названии поля не может быть функции
  4. if (strpos($field, '(') !== false) {
  5. return $this;
  6. }
  7.  
  8. if ($direction) {
  9. $direction = strtolower($direction) === 'desc' ? 'desc' : 'asc';
  10. }
  11.  
  12. if (strpos($field, '.') === false) {
  13. $field = 'i.' . $field;
  14. }
  15.  
  16. return $this->orderByRaw($field . ' ' . $direction);
  17. }

Установочный архив и пакет обновления перезалил с этой правкой.

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.

Похожее в блогах

Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.