Вот по этой
ссылке нашел некую скудную информацию о том, как добавить новые группы пользователей в J1.5.
Решил создать группу "Partners", которая бы являлась дочерней от группы "Registered" и позволяла бы юзерам этой группы получать доступ к определенным пунктам меню.
1. Сделал SQL-запросSET @parent_name = 'Registered';
SET @new_name = 'Partners';
-- Select the parent node to insert after
SELECT @ins_id := id, @ins_lft := lft, @ins_rgt := rgt
FROM jos_core_acl_aro_groups
WHERE name = @parent_name;
SELECT @new_id := MAX(id) + 1 FROM jos_core_acl_aro_groups;
-- Make room for the new node
UPDATE jos_core_acl_aro_groups SET rgt=rgt+2 WHERE rgt>=@ins_rgt;
UPDATE jos_core_acl_aro_groups SET lft=lft+2 WHERE lft>@ins_rgt;
-- Insert the new node
INSERT INTO jos_core_acl_aro_groups (id,parent_id,name,lft,rgt,value)
VALUES (@new_id,@ins_id,@new_name,@ins_rgt,@ins_rgt+1,"Partners");
2. Чтобы все отображалось корректно, в файле /administrator/components/com_users/views/user/view.html.php в строке 106, а не 112, как указано в оригинале (у меня J 1.5.13) заменил вот это: if ( $userGroupName == $myGroupName && $myGroupName == 'administrator' )
{
// administrators can't change each other
$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' )
{
// administrators can't change each other
$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);
3. Еще один SQL-запрос для добавлении новой группы:INSERT INTO `jos_groups` (`id`,`name`) VALUES ('3','Partners')
4. И напоследок следующий код для jos_core_acl_aro_groups:<?php
mysql_connect("localhost", "xxxx", "xxxxx") or
die("Could not connect: " . mysql_error());
mysql_select_db("joomla15");
// 0-> parent_id in Joomla this is the value of the parent_id field of the Root record
// 1-> start the left tree at 1
rebuild_tree ( 0 , 1);
function rebuild_tree($parent_id, $left) {
// the right value of this node is the left value + 1
$right = $left+1;
// get all children of this node
$result = mysql_query('SELECT id FROM jos_core_acl_aro_groups '.
'WHERE parent_id="'.$parent_id.'";');
while ($row = mysql_fetch_array($result)) {
// recursive execution of this function for each
// child of this node
// $right is the current right value, which is
// incremented by the rebuild_tree function
$right = rebuild_tree($row['id'], $right);
}
// we've got the left value, and now that we've processed
// the children of this node we also know the right value
mysql_query('UPDATE jos_core_acl_aro_groups SET lft='.$left.', rgt='.
$right.' WHERE id="'.$parent_id.'";');
// return the right value of this node + 1
return $right+1;
}
?>
В итоге я получил в списке групп новую, с названием "Partners", а так же еще один уровень доступа "Partners" (наряду с со стандартными "Все", "Зарегистрированный", "Специальный")Но! Если залогиниться новым пользователем, добавленным в новую группу, то соответствующий пункт меню он не видит... Где собака порылась?