#php #sql #joomla
#php #sql #joomla
Вопрос:
Я пишу компонент Joomla 3.x и сейчас ищу возможность получить от пользователя (который назначен нескольким группам пользователей) «идентификатор» из группы пользователей с «наивысшим уровнем».
Пример: — пользователь является участником registered и manager и некоторых других групп.
На первом шаге я могу получить идентификатор из «всех» назначенных групп пользователей:
jimport( 'joomla.access.доступ'); $groups = JAccess::getGroupsByUser($user->id);
Но как я могу теперь получить «идентификатор» от группы пользователей с «самым высоким» уровнем? Я не могу найти метод для этого в основных файлах.
Редактировать: я добавил в свой компонент серверную часть, где можно определить множество специальных настроек для каждой группы пользователей. Но я понятия не имею, как я могу получить правильные настройки во внешнем интерфейсе, когда пользователь является участником нескольких групп. В этом случае мне не нужны никакие «разрешения» из таблицы ресурсов Joomla. Только «идентификатор» из «самой важной» группы. Полезно затем проверять идентификатор «родительского» из каждой группы? Или использовать getGroupPath($groupId)?
Комментарии:
1. На самом деле ACL работает не так… это больше о разрешениях, то есть о том, что пользователь может делать… Поскольку этот вопрос касается деталей конкретной реализации Joomla, я бы попробовал задать его на сайте Joomla Q amp; A StackExhange
2. Такого понятия, как самый высокий, не существует, если вы не требуете, чтобы существовала какая-то строго иерархическая структура. У кого-то может быть разрешение на удаление в категории x, но не разрешение на редактирование в категории y. Даже удаление и редактирование считаются ортогональными, что означает, что группе можно присвоить только удаление, а не редактирование.
3. Хм. Я добавил в свой компонент серверную часть, где можно определить множество специальных настроек для каждой группы пользователей. Но я понятия не имею, как я могу получить правильные настройки во внешнем интерфейсе, когда пользователь является участником нескольких групп. Хорошо, это кажется простым для групп по умолчанию, но не тогда, когда существуют некоторые другие (вновь созданные) группы.
4. В этом случае мне не нужны никакие разрешения из таблицы пользователей или ресурсов Joomla. Только идентификатор из «самой важной» группы. Полезно затем проверять идентификатор «родительского» из каждой группы? Или использовать getGroupPath($groupId)?
5. Посмотрите, как основные компоненты управляют этим, API довольно прост. api просто позволяет вам присвоить ему идентификатор пользователя и ресурс и сказать, может ли этот пользователь …. (редактировать, удалять, edit.state и так далее).
Ответ №1:
Поскольку $groups — это массив: $highestLevel = max($ groups); должно сработать!