2012-06-19 122 views
1

我正在使用joomla 2.5中的组件,我需要通过我的代码动态创建用户组。如何在joomla 2.5中创建joomla用户组2.5

正如我所知在2.5 joomla是使用嵌套集维护层次结构,所以当我们插入任何新的条目时,它可能会影响整个表。

joomla是否提供可直接用于创建用户组的任何功能? 我们可以在其中指定父组,并在其下创建新组。

回答

3

我解决了它自己

对我来说,我需要插入子组刚下某一特定群体(在下面的代码中提到的$ PARENT_ID)

// get max right from all the child under parent id 
    $child_query = "SELECT max(`rgt`) FROM `#__usergroups` WHERE `id` = ".$parent_id; 
$db->setQuery($child_query); 
$max_rgt = $db->loadResult(); 


// calculate left and rgt for new entry 
$new_lft = $max_rgt; 
$new_rgt = $max_rgt + 1; 

// update lft and rgt of all entries having lft , rgt greater than max_rgt 
$upd1 = "UPDATE `#__usergroups` SET `lft` = `lft` + 2 WHERE `lft` > ".$max_rgt; 
$upd2 = "UPDATE `#__usergroups` SET `rgt` = `rgt` + 2 WHERE `rgt` >= ".$max_rgt; 


// insert new child 
$insert = "INSERT INTO `#__usergroups`(`parent_id`,`lft`,`rgt`,`title`) VALUES(".$matrix_parent.",".$new_lft.",".$new_rgt.",'".$title."')"; 
+0

帮了很多忙 - 谢谢 –

3

即使问题是一个慈祥的老人,并已被接受,我用这个代码在一个自定义组件

添加/更新/删除组,以获得com_users一个需求,需要的模型:

JModelLegacy::addIncludePath(JPATH_ADMINISTRATOR . 
       '/components/com_users/models/', 'UsersModel'); 

$groupModel = JModelLegacy::getInstance('Group', 'UsersModel'); 

之前的代码如下所示。

添加* /更新:

$groupData = array(
    'title' => <new/old name of group here>, 
    'parent_id' => <new/old id of parent group here>, 
    'id' => <group id here>); 

$groupModel->save($groupData); 

* 如果组比id新创建的应该是0。在保存后可以使用数据库查询访问新的ID,因为人知道这个组的名称/标题

删除:

$groupModel->delete($groupIds); 

整个上面的代码包含在一个save(), delete()方法我的组件的模型。 由于Joomla在单独的Map表中存储用户和组之间的连接,因此删除组时不会损坏用户数据。请注意,delete()方法将一个ID数组作为参数。

+0

你可以用'$ id = $ groupModel-> getState('group.id')获得组ID;'保存后 – G3z