2012-06-19 4 views
1

Je travaille sur mon composant dans joomla 2.5 et j'ai besoin de créer des groupes d'utilisateurs dynamiquement à travers mon code. Comme je le sais dans 2.5 joomla utilise des ensembles imbriqués pour maintenir la structure hiérarchique de sorte qu'il peut affecter la table entière lorsque nous insérons une nouvelle entrée.Comment créer un groupe d'utilisateurs joomla dans joomla 2.5

Est-ce que joomla fournit une fonction qui peut être directement utilisée pour créer un groupe d'utilisateurs? quelque chose dans lequel nous pouvons spécifier le groupe parent et le nouveau groupe sera créé en dessous.

Répondre

3

Je résolu moi-même

Dans mon cas, je dois insérer les groupes d'enfants un peu moins d'un groupe particulier (mentionné comme parent_id $ dans le code ci-dessous)

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

qui a beaucoup aidé - merci –

3

Même si la question est une sorte de vieux et déjà accepté, j'utiliser ce code pour ajouter/modifier/supprimer des groupes dans un composant personnalisé

afin d'obtenir le modèle requis de com_users il faut:

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

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

avant que le code ci-dessous ne fonctionne.

add */mise à jour:

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

* si le groupe est nouvellement créé que le id devrait être 0. Après l'économie, on peut accéder à la nouvelle id avec une requête de base de données car on connaît le nom/titre du groupe

supprimer:

$groupModel->delete($groupIds); 

Le code tout ci-dessus est inclus dans save(), delete() méthodes d'un du modèle de mon composant. Étant donné que Joomla stocke les connexions entre les utilisateurs et les groupes dans une table Map séparée, aucune donnée utilisateur ne sera corrompue lors de la suppression d'un groupe. Notez que la méthode delete() prend un tableau d'identifiants comme argument.

+0

vous pouvez obtenir l'ID du groupe avec '$ id = $ groupModel-> getState ('group.id');' juste après avoir enregistré – G3z