Groupes d'utilisateurs personnalisés Joomla! + Community Builder

Plus d'informations
09 Avr 2009 17:46 #1 par lotfi_universal
bonjour,
La question a été autant de fois (pour community builder, kunena, joomla..)
on attendant que joomila nous fait une petite surprise avec NoixACL pour gèrer les composants. voici une méthode manuelle pour ajouter des groupes dans joomla! qui seront prisent en compte par community builder ( une fois dans community builder vous pouvez tout gèrer (y compris kunena)


Avant de commencer:

Il n'existe pas encore de fonctionnalité implémentée dans Joomla pour avoir des groupes d'utilisateurs personnalisés selon votre besoin. Vous êtes obligés de vous en tenir aux groupes par défaut, à moins d'utiliser JaCL (commercial), ce qui n'est pas toujours acceptable....

Si vous utilisez Community Builder, et que vous souhaitez avoir différents groupes d'utilisateurs possédant chacun des onglets (et des champs) propres à eux, il existe une solution.
Il est possible d'attribuer un onglet spécialement à un groupe d'utilisateurs; il suffit de répartir judicieusement les champs de profiles selon les onglets, pour pouvoir afficher ou ne pas afficher un onglet, dépendament du groupe auquel appartient l'utilisateur.

Cet article vous montre comment appliquer un hack manuel à Joomla 1.5.x pour permettre l'utilisation de groupes différents et personnalisés pour Community Builder.

Je préfère vous conseiller dès maintenant de faire des copies de sauvegarde de tous les fichiers que vous allez modifier, car c'est vraiment de la bidouille!

Les versions de Joomla et CB utilisées pour l'exemple sont Joomla! 1.5.x et Community Builder 1.2

Veuillez vous connecter ou vous enregistrer pour rejoindre la conversation.

Plus d'informations
09 Avr 2009 17:53 - 09 Avr 2009 17:55 #2 par lotfi_universal
Créer des groupes personnalisés dans Joomla

La première étape consiste à créer des groupes personnalisés dans Joomla. Pour le besoin de cette manipulation, disons que nous réalisons un site pour une communauté comprenant deux groupes d'utilisateurs : des employeurs et des personnes qui cherchent un emploi.

Le bidouillage commence en force ici : il faut modifier la base de données, puis exécuter un script pour la restructurer correctement. Je n'expliquerai ici pas trop comment fonctionne la table qui contient les groupes d'utilisateurs dans Joomla; je me bornerai à expliquer comment la modifier à notre guise.

Accédez à votre base de données (avec l'outil PHPmyAdmin ). Trouvez la table des groupes, qui s'apelle « jos_core_acl_aro_groups ». Par défaut, le préfixe de table est « jos », mais vérifiez cette information et remplacez le préfixe « jos » par le vôtre s'il est différent. Dans tous les exemples nous utiliserons « jos » comme préfixe; n'oubliez pas de le changer partout!




Donc dans PHPmyAdmin, j'accède à la table « jos_core_acl_aro_groups ». Cette table contient tous mes groupes d'utilisateurs. Nous allons donc insérer deux nouveaux groupes : un pour les employés et un pour les employeurs (ou ce qui vous conviendra). Ce qui est important, c'est de correctement spécifier comme parent_id le id du groupe d'utilisateurs parent. Dans notre cas, ce sera simplement Registered (id : 18). Donc nous insérons ces deux groupes, en spécifiant uniquement le parent_id.

Nos groupes sont insérés, mais incorrectement hiérarchisés car cette table utilise un système de hiérarchisation qui repose sur une borne gauche et droite (nombres), qui selon certains calculs permettent de spécifier quel groupe est imbriqué dans quel groupe. Pas de panique : on a un script pour regénérer les bonnes bornes pour nos deux nouveaux groupes.

Créez un fichier nommé rebuild.php, placez-le à la racine de votre site Joomla, en mettant ceci dedans :
Code:
<?php mysql_connect("localhost", "NOM_DUTILISATEUR_BD", "MOT_DE_PASSE_BD") or die("Could not connect: " . mysql_error()); mysql_select_db("NOM_DELA_BD"); // 0-> parent_id in Joomla this is the value of the parent_id field of the Root record // 1-> start the left tree at 1 rebuild_tree ( 0 , 1); function rebuild_tree($parent_id, $left) { // the right value of this node is the left value + 1 $right = $left+1; // get all children of this node $result = mysql_query('SELECT id FROM jos_core_acl_aro_groups '. 'WHERE parent_id="'.$parent_id.'";'); while ($row = mysql_fetch_array($result)) { // recursive execution of this function for each // child of this node // $right is the current right value, which is // incremented by the rebuild_tree function $right = rebuild_tree($row['id'], $right); } // we've got the left value, and now that we've processed // the children of this node we also know the right value mysql_query('UPDATE jos_core_acl_aro_groups SET lft='.$left.', rgt='. $right.' WHERE id="'.$parent_id.'";'); // return the right value of this node + 1 return $right+1; } ?>
Pièces jointes :
Dernière édition: 09 Avr 2009 17:55 par lotfi_universal.

Veuillez vous connecter ou vous enregistrer pour rejoindre la conversation.

Plus d'informations
09 Avr 2009 17:57 #3 par lotfi_universal
Pièces jointes :

Veuillez vous connecter ou vous enregistrer pour rejoindre la conversation.

Plus d'informations
09 Avr 2009 18:01 #4 par lotfi_universal
...en changeant bien sûr « NOM_DUTILISATEUR », « MOT_DE_PASSE_BD » et « NOM_DE_LA_BD » par le nom d'utilisateur, le mot de passe et le nom de la BD.

Lancez le script dans votre navigateur, en accédant la page rebuild.php. Normalement, vous ne devriez rien remarquer, le script n'écrit aucune confirmation (donc une page blanche). Allez vérifier de quoi ça a l'air dans la base de données si vous comprenez un peu le système de structure hiérarchique des groupes, sinon faites-vous confiance et passez à l'étape suivante.

Pièces jointes :

Veuillez vous connecter ou vous enregistrer pour rejoindre la conversation.

Plus d'informations
09 Avr 2009 18:03 #5 par lotfi_universal
Un indice : normalement vos deux nouveaux groupes devraient maintenant avoir une nouvelle valeur, autre que zéro, pour les colonnes « lft » et « rgt ». Sinon, je crois bien que vous avez dû mal spécifier les informations de connexion à la base de données, ou bien vous avez mal changé les noms des tables dans les requêtes.

Un autre bon moyen de vérifier si tout est en ordre serait de vous rendre dans la Gestion des utilisateurs (Administration Joomla), sélectionnez un utilisateur et vérifiez que vous pouvez lui attribuer les groupes personnalisés que vous venez de créer.
Pièces jointes :

Veuillez vous connecter ou vous enregistrer pour rejoindre la conversation.

Plus d'informations
09 Avr 2009 18:09 #6 par lotfi_universal
Comment distribuer les profils appartenant aux groupes d'utilisateurs correspondants?

Le principe est simple : Il est possible, dans Community Builder, d'attribuer un groupe d'utilisateurs à un onglet.

Pour continuer l'exemple, rendez-vous dans la page composant de Community Builder, cliquez sur Tab Management et créez deux nouveaux onglets :

« Historique d'entreprise » : Attribuez cet onglet au groupe « Employeur », et n'oubliez pas de le publier.

« Expériences d'emploi » : Attribuez cet onglet au groupe « Employé », et n'oubliez pas de le publier.

Chaque groupe d'utilisateur personnalisé possède maintenant un onglet juste pour lui. Comme les onglets ne s'afficheront pas s'ils ne contiennent pas de champs, allez maintenant dans Field Management, et créez pour chacun de ces deux nouveaux onglets un champs (du même nom que l'onglet, on va dire), en n'oubliant pas de les placer chacun d'eux dans l'onglet correspondant.

Il est maintenant temps de s'attaquer à une problématique plutôt désagréable. Nous avons certes créé les deux groupes personnalisés d'utilisateurs, mais il n'existe en réalité dans Joomla que 3 niveaux d'accès : « publique », « enregistré » et « spécial ». Ces niveaux s'embriquent, c'est à dire que l'utilisateur « spécial » possède aussi les droits de l'utilisateur « enregistré ». Ça nous cause un certain problème, car nous souhaitons, dans cet exemple, que chaque utilisateur ait ses propres onglets, sans aucun mélange!

Par exemple, l'employeur possède dans son profil un onglet pour décrire l'historique de son entreprise, mais l'employé n'a pas besoin de cet onglet! Forcément, l'un des deux groupes aura plus de droits que l'autre, il faut donc trouver un moyen de les rendre réellement indépendants l'un de l'autre.

Il existe une solution un peu « broche à foin » : il faut appliquer un hack aux fichiers de Community Builder pour que les onglets soient réellement bien répartis. C'est maintenant que la chirurgie à coeur ouvert commence, n'oubliez pas de faire une copie de sauvegarde du fichier avant toute modification! Les numéros de ligne de code sont donnés pour la version CB 1.2, si vous possédez une version antérieure, recherchez les mêmes lignes mais leur emplacement peut avoir changé. Il y aura trois remplacements à faire, notez que nous laissons l'ancienne ligne en commenté dans le fichier.

Veuillez vous connecter ou vous enregistrer pour rejoindre la conversation.

Modérateurs: lavstephtramber91failrOnScottuxdede17serge
Temps de génération de la page : 2.869 secondes
Propulsé par Kunena