Я использую пользовательских групп пользователей (ролей пользователей) в Joomla 1.5. Например под зарегистрированной группы пользователей я добавил несколько подгрупп:
myproject
customers
customer A admin
product manager
product manager admin
etc....
Я использую эти группы в моей расширения для установки разрешений.
Когда я добавляю групп в таблице jos_core_acl_aro_groups и установить отношения правильно групп в управление пользователями, не отображаются корректно (напр., группы администратор исчезают). Для отображения групп правильно, вы должны будете изменить код: администратор / компоненты / com_users / admin.users.php линии 285:
(Не уверен в том, что версия этого изменилось - но в J! 1.5.14 это изменение уже не администратор / компоненты / com_users / admin.users.php файл Это изменение должно быть сделано сейчас, чтобы администратор / компоненты / com_users / просмотров. / пользователя / view.html.php на линии 113.)
if ( $userGroupName == $myGroupName && $myGroupName == 'administrator' )
{
// администраторы не могут сменять друг друга
$lists['gid'] = '<input type="hidden" name="gid" value="'. $user->get('gid') .'" /><strong>'. JText::_( 'Administrator' ) .'</strong>';
}
else
{
$gtree = $acl->get_group_children_tree( null, 'USERS', false );
в
if ( $userGroupName == $myGroupName && $myGroupName == 'administrator' )
{
// администраторы не могут сменять друг друга
$lists['gid'] = '<input type="hidden" name="gid" value="'. $user->get('gid') .'" /><strong>'. JText::_( 'Administrator' ) .'</strong>';
}
else
{
$gtree = $acl->get_group_children_tree( null, 'USERS', true);
Если вы хотите добавить свои собственные группы самостоятельно сделать следующее:
Изменить jos_core_acl_aro_groups стол и добавить свои пользовательские группы (например, с помощью PhpMyAdmin). При добавлении новой группы убедитесь, что вы назначить правильное родителей добавил группу. Например: Joomla зарегистрированных группа ID 18, когда вы назначаете подгруппа ему убедиться, что parent_id 18. Dont назначить LFT и rght поля еще, но использовать код ниже, чтобы восстановить групп деревьев правильно:
<?php
// Изменение переменных ниже, чтобы соответствовать Вашему
/ / Конфигурации. Написать в принимающей локальный
/ / Если вы не знаете, что это должно быть
/ / Различное.
$user=USER ;
$password=PASSWORD ;
$db=DATABASE ;
$host=localhost ;
mysql_connect("$host", "$user", "$password") or
die("Could not connect: " . mysql_error());
mysql_select_db("$db");
// 0-> parent_id в Joomla это значение parent_id поле записи корневого
// 1-> начать дереве слева на 1
rebuild_tree ( 0 , 1);
function rebuild_tree($parent_id, $left) {
// правильное значение данного узла левое значение + 1
$right = $left+1;
//получить все дети данного узла
$result = mysql_query('SELECT id FROM jos_core_acl_aro_groups '.'WHERE parent_id="'.$parent_id.'";')
or die(mysql_error());
while ($row = mysql_fetch_array($result)) {
// рекурсивные выполнения этой функции для каждого
/ / Ребенок этого узла
// $right является текущее значение права, которое
/ / Увеличивается на rebuild_tree функции
$right = rebuild_tree($row['id'], $right);
}
// У нас есть левое значение, и теперь, когда мы обработаны
/ / Детей данного узла мы также знаем, правильное значение
mysql_query('UPDATE jos_core_acl_aro_groups SET lft='.$left.', rgt='.
$right.' WHERE id="'.$parent_id.'";');
// возвращение правильное значение этого узла + 1
return $right+1;
}
echo 'Complete! Go check your Joomla User Admin!'
?>
Если вы хотите использовать пользовательские группы, чтобы назначить на ваши статьи так что, например, только клиенты могут зрения конкретных статей необходимо добавить эти группы в jos_groups, просто присвоить ID + название группы которых имя должно быть равно группы имен вы добавили в таблицу jos_core_acl_aro_groups.
