id группы автора

ну не догоняю я

#1 16 апреля 2018 в 17:39
Всем добра.

Задался целью получить в статье id группы пользователя. Ну никак не могу догнать как работать с моделями. Описывать все мои шаманские действия рука устанет.
То же самое в виджете.
Помогите плз.
#2 16 апреля 2018 в 19:09
iDrevniy,
Учитывайте, что в двойке у пользователя может быть несколько групп. И они хранятся в таблице cms_users в поле groups в виде yaml.

Задался целью получить в статье id группы пользователя.

iDrevniy
Вам какого пользователя группы нужны? Который автор статьи, или или самого пользователя, который статью читает?
#3 16 апреля 2018 в 22:29
Спасибо за замечание. Назначение нескольких групп не предполагается.

Нужно получить группу пользователей для автора записи.

Логика такова:
  1. if($group_id_автора_записи = 1) { ... }
Дело за малым, получить $group_id.
#4 16 апреля 2018 в 22:38
iDrevniy,
  1. $author_profile = cmsCore::getModel('users')->getUser($item['user_id']);
  2. if($author_profile['groups'][0] == 1) { ... }
#5 16 апреля 2018 в 23:09
if($author_profile['groups'][0] == 1) {… }
#6 16 апреля 2018 в 23:17
Alex,
Да.
#7 17 апреля 2018 в 00:16
Спасибо большое.

Я очень хочу разобраться, но пока получается еле-еле. Видимо не могу догнать логику. Когда я самостоятельно пытался провернуть это мероприятие я писал так
  1. $author = cmsCore::getModel('users')->getGroup($item['user_id']);
То есть я уже понимаю, что запись находится в контролере контент, а мне нужно обратиться в другой контроллер. Я понял, что искать надо в юзерс. Я даже model.php открыл и нашел там getGroup. Но почему? Я не знаю… Правильный запрос был в шаге от меня.

А вот со второй строчкой… Поправьте меня, если я не прав.
$author_profile — это массив, в который попали все данные пользователя автора ($item['user_id']). Если вывести этот массив через print_r, то мы увидим внутри массива еще массивы, в том числе массив [groups], из которого нужно достать первое значение, а поскольку нумерация с 0, то первое значение [0]. Ну и осталось сравнить. Правильно я понял?
#8 17 апреля 2018 в 00:32
iDrevniy,
Метод getGroup получает массив параметров группы по её id. То есть если отправить в метод единицу, он выдаст не группы админа, а параметры группы номер 1
Array ( [id] => 1 [name] => guests [title] => Гости [is_fixed] => 1 [is_public] => [is_filter] => )

Правильно я понял?

iDrevniy
Да.
#9 17 апреля 2018 в 13:43
Имхо, лучше сразу проверять наличие нужной группы в массиве [groups] (вдруг потом таки понадобится присутствие автора в нескольких группах).
  1.  
  2. if (in_array(6, $author['groups'])) {//6 - id нужной группы
  3. ...
  4. }
  5.  
Я, правда, знаток ещё тот))
Ris, просветите, пожалуйста!
#10 17 апреля 2018 в 14:07

Ris, просветите, пожалуйста!

Олег Васильевич я
Да, все верно.
Я предлагал iDrevniy учесть возможность многогрупия, но он сказал, что один человек — одна группа и точка.
#11 17 апреля 2018 в 14:20
Ris, спасибо!
Кстати, мысль по поводу: жаль, что нет какого-то разбиения групп к которым принадлежит пользователь (типа — главная и дополнительные).
Или где-то есть? look
#12 17 апреля 2018 в 14:27

Или где-то есть?

Олег Васильевич я
Кстати, интересная мысль разбить группы по рангу, как по мастям в картах.
Но пока скорее всего такого функционала нет. Но было бы интересно сделать, чтобы главной группой у юзера считалась группа с наибольшими правами.
Надо подумать в эту сторону…
#13 17 апреля 2018 в 14:44

чтобы главной группой у юзера считалась группа с наибольшими правами

Ris
Это вряд ли получится. В одном направлении может быть больше прав у одной группы, в другом — у другой. Как определить какие из прав важнее?
А вот какая-то опция типа "группа по умолчанию" не помешала б.
#14 17 апреля 2018 в 15:38

А вот какая-то опция типа "группа по умолчанию" не помешала б.

Олег Васильевич я
Так поле типа список в профиле пользователя.
#15 17 апреля 2018 в 16:20


Так поле типа список в профиле пользователя.

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