После регистрации поместить пользователя в группу в зависимости от пола.

InstantCMS 2.X

Хук

#1 17 августа 2021 в 18:08

Привет всем. [Попробовал сделать хук который после регистрации помещает пользователя в группу мужчины или женщины. Но что-то пошло не так…. Хук в событиях user_registered зарегистрирован. Где ошибка не понимаю:-(

  1. <?php
  2. class onAuthUserRegistered extends cmsAction {
  3. public function run() {
  4. /// юзер
  5. $user_id = $this->cms_user->id;
  6. $users_model = cmsCore::getModel('users');
  7. /// профиль
  8. $profile = $users_model->getUser($user_id);
  9. /// группы
  10. $groups = $users_model->getGroups();
  11. /// пол в профиле! обязательно создать группы: man и woman
  12. $gender = ($profile['gender'] == '1') ? 'man' : 'woman';
  13. foreach ($groups as $k => $v) {
  14. if ($v['name'] == $gender) {
  15. $group = $v['id'];
  16. }
  17. }
  18. /// Добавляем нужную группу
  19. $profile['groups'][] = $group;
  20. /// Удаляем повторения в массиве
  21. $profile['groups'] = array_unique($profile['groups']);
  22. $users_model->updateUser($user_id, array(
  23. 'groups' => $profile['groups'],
  24. 'date_group' => null
  25. ));
  26. return true;
  27. }
  28. }

 

Добавлено спустя 1 минуту

И кстати, может кто подскажет каким образом лучше тестировать такие хуки? Первую часть кода тестировал создав компонент тест… просто каждый раз регистрироваться что бы поймать ошибку сил нет…

Добавлено спустя 19 минут

Через компонент тест помещает в группу, а вот после регистрации нет. Может я что с названиями напутал?

#2 17 августа 2021 в 18:18

Думаю можно сделать проще, на уровне шаблона.

  1. Админка — разрешаем выбор группы при регистрации
  2. Шаблон css — прячем блок выбора группы
  3. Шаблон js — вешаем событие на изменение инпута пола, т.е. при смене одного селектора будет автоматом меняться селектор в скрытом блоке.

 

#3 17 августа 2021 в 21:29

Мне не надо разрешать выбор группы. Там глупые люди, объяснять каждому что и как и зачем так надо это проще утопиться. Здесь вопрос разграничения прав, поэтому группы нужны! Кстати, сейчас напишу в разработку по поводу этого…

#4 18 августа 2021 в 00:53

Мне не надо разрешать выбор группы. Там глупые люди, объяснять каждому что и как и зачем так надо это проще утопиться. Здесь вопрос разграничения прав, поэтому группы нужны! Кстати, сейчас напишу в разработку по поводу этого…

Рачей

Я просто написал один из способов. И да, я уточнил, что этот блок должен быть скрыт от пользователя при регистрации средствами css, т.е. фактически его никто не видит и сам не выбирает группу. Смена группы при регистрации будет происходить автоматом никак не показывая это пользователю. 

#5 18 августа 2021 в 01:14

Это не тот способ что мне нужен.

#6 18 августа 2021 в 14:17

Через компонент тест помещает в группу, а вот после регистрации нет. Может я что с названиями напутал?

Рачей

А где находится файл(укажите путь к нему) с кодом который вы написали?

#7 19 августа 2021 в 20:43

Так он лежит в папке hooks авторизации и регистрации

system/controllers/auth/hooks/user_registered.php

#8 22 августа 2021 в 21:07

Блин, ребятки, неужели никто не может оказать помощь в таком сложном вопросе?

#9 23 августа 2021 в 14:39

Этот хук принимает массив $user и вернуть должен массив $user

А почему не помещается в группу не знаю, должна быть какая то ошибка, может у вас показ ошибок выключен?

#10 23 августа 2021 в 14:50

Да включён показ, там ничегоне происходит. Если этот код запустить из любого места, все отработает. Я создал компонент. Test и из индекса запускаю, помещает в группу, а как хук после активации кода из e-mail не работает.

#11 23 августа 2021 в 15:52

 Рачей, вы поправили, что вам  My-InstantCMS.Ru, написал?

#12 23 августа 2021 в 17:31

Да включён показ, там ничегоне происходит. Если этот код запустить из любого места, все отработает. Я создал компонент. Test и из индекса запускаю, помещает в группу, а как хук после активации кода из e-mail не работает.

Рачей

Если этот файл не запускается, как будто его не существует.

Значит в админке — компоненты — управление событием — выключен или отсутствует хук user_registred от компонента Авторизация

 

Если всё таки хук есть и активен, я бы посоветовал в начала кода добавить dump(1234); сохранить и проверить регистрироваться, после регистрации должны получить в белом экране слово 1234

Если такого нет, что то не так с сайтом

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