Отфильтровать пользователей по группам

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 2.X

Создаю виджет, который позволит выводить всех пользователей определенной группы из города текущего пользователя

#1 20 июля 2023 в 00:30

Приветствую!

Решение, возможно, на поверхности, но уже третий день не могу найти. Делаю виджет. Он должен вывести всех пользователей определенной группы их города текущего пользователя. Так вот отфильтровать по городу получилось без проблем. Но не данные групп пользователей хранятся в виде сериализированного массива, и я никак не могу подобрать правильное выражение, чтобы отфильтровать дополнительно пользователя по группе (id группы — 8). Вот сам код:

  1. class widgetUsersCityusers extends cmsWidget {
  2.  
  3. public function run () {
  4.  
  5. $model = cmsCore::getModel('users');
  6. $userCity = cmsUser::get('city');
  7.  
  8. $model->filterEqual('city', $userCity);
  9. // Здесь должен быть фильтр по группе с id = 8
  10.  
  11. $total = $model->getUsersCount();
  12. $users = $model->getUsers();
  13.  
  14. return array(
  15. 'total'=>$total,
  16. 'users'=>$users
  17. );
  18.  
  19. }
  20.  
  21. }

 Буду признателен за любую помощь

#2 20 июля 2023 в 06:53

Все связи с группами у пользователей хранятся в таблице users_groups_members. Вам надо ее приджойнить и добавить фильтрацию по group_id

Ну или просто воспользоваться одним из этих методов github.com/instantsoft/icms2/blob/master/system/controllers/users/model.php#L21

#3 20 июля 2023 в 09:57

Спасибо, всё оказалось просто. Нужен был метод filterGroup($group_id)

Этот код уже работает, как нужно:

  1. <?php
  2. class widgetUsersCityusers extends cmsWidget {
  3.  
  4. public function run () {
  5.  
  6. $model = cmsCore::getModel('users');
  7. $userCity = cmsUser::get('city');
  8.  
  9. $model->filterEqual('city', $userCity);
  10. // Фильтруем по группе с id 8
  11. $model->filterGroup(8);
  12.  
  13. $total = $model->getUsersCount();
  14. $users = $model->getUsers();
  15.  
  16. return array(
  17. 'total'=>$total,
  18. 'users'=>$users
  19. );
  20. }
  21. }
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.