2012-06-19 124 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