[英]How to create joomla user group in joomla 2.5
我正在joomla 2.5中處理我的組件,我需要通過代碼動態創建用戶組。
正如我在2.5中所知道的,joomla使用嵌套集來維護層次結構,因此當我們插入任何新條目時,它可能會影響整個表。
joomla是否提供任何可直接用於創建用戶組的功能? 我們可以在其中指定父組,然后在其下創建新組。
我自己解決了
就我而言,我需要將子組插入特定組的下面(在下面的代碼中稱為$ 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."')";
即使問題是一種古老且已經被接受的問題,我也使用此代碼在自定義組件中添加/更新/刪除組
為了獲得所需的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 );
*
刪除:
$groupModel->delete( $groupIds );
上面的整個代碼包含在我的組件模型之一的save(), delete()
方法中。 由於Joomla將用戶和組之間的連接存儲在單獨的Map表中,因此刪除組時不會破壞任何用戶數據。 請注意, delete()
方法將id數組作為參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.