2012-06-19 6 views
1

나는 joomla 2.5에서 내 구성 요소를 만들고 있는데, 내 코드를 통해 동적으로 사용자 그룹을 만들어야한다.joomla 사용자 그룹을 만드는 방법 joomla 2.5

내가 아는 것처럼 joomla는 계층 적 구조를 유지하기 위해 중첩 된 세트를 사용하므로 새로운 항목을 삽입 할 때 전체 테이블에 영향을 줄 수 있습니다.

joomla는 사용자 그룹을 만드는 데 직접 사용할 수있는 기능을 제공합니까? 부모 그룹과 새 그룹을 지정할 수있는 항목이 그 아래에 만들어집니다.

답변

3

나는 내가 그냥 질문입니다

// 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

하더라도 (아래 코드에서 $ PARENT_ID 언급) 특정 그룹 아래에 하위 그룹을 삽입 할 필요가 내 경우에는 자신에게

그것을 해결

: 오래되고 이미 인정의 종류, 나는에 com_users 한 요구에 필요한 모델을 얻기 위해 사용자 지정 구성 요소

에서 그룹을// 업데이트를 추가, 삭제하려면이 코드를 사용 아래 코드가 작동하려면

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

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

을 입력하십시오.

추가 */업데이트 : 그룹 새롭게 id보다 생성

$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); 

* 경우 0해야한다. 전체 코드는 위의 하나의 save(), delete() 방법에 포함되어

$groupModel->delete($groupIds); 

하나는

삭제 그룹의 이름/제목을 알고 있기 때문에 저장 한 후에 하나는 데이터베이스 쿼리와 함께 새로운 ID를 액세스 할 수 있습니다 내 구성 요소 모델의 Joomla는 사용자와 그룹 간의 연결을 별도의 맵 테이블에 저장하기 때문에 그룹을 삭제할 때 사용자 데이터가 손상되지 않습니다. delete() 메서드는 ID 배열을 인수로 취합니다.

+0

당신은'$ id = $ groupModel-> getState ('group.id');를 사용하여 그룹 id를 얻을 수 있습니다. – G3z