Filtrer une liste selon le usergroup

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [Problème] Filtrer une liste selon le usergroup

    Bonjour,
    Je créé un composant dans lequel des listes sont affichées.
    Voici un point que je souhaiterai résoudre.

    Je souhaite filtrer une liste selon le USERGROUP et n'afficher que ce qui concerne le USER.

    Dans un site Joomla.
    J'ai une table :
    Cette table me sert à afficher une liste accessible par un lien de menu.

    ID TA CDP ...
    1 Dupont Martin ...
    2 Smith Martin ...
    3 Dupont Paul ...

    Dans le site, il existe deux groupes d’accès à Joomla
    • Le groupe TA
    • Le groupe CDP

    Je souhaiterai mettre en place un filtre sur la liste qui :
    • Quand c’est un TA qui affiche cette liste (en front) que ne soit affiché dans cette liste que les lignes ou ce TA apparaît dans la colonne TA. (Par exemple que Dupont ne voit que les lignes où il est TA)
    • Quand c’est un CDP qui affiche cette liste (en front) que ne soit affiché dans cette liste que les lignes ou ce CDP apparaît dans la colonne CDP. (Par exemple que Martin ne voit que les lignes où il est CDP)
    Comment puis-je faire cela ?

    Je peux fournir le PHP de la liste ainsi que le model de cette liste.

    Cordialement.

    Eric

  • #2
    Re : Filtrer une liste selon le usergroup

    Envoyé par Agrepe Voir le message
    Bonjour,
    Je créé un composant dans lequel des listes sont affichées.
    Voici un point que je souhaiterai résoudre.

    Je souhaite filtrer une liste selon le USERGROUP et n'afficher que ce qui concerne le USER.

    Dans un site Joomla.
    J'ai une table :
    Cette table me sert à afficher une liste accessible par un lien de menu.

    ID TA CDP ...
    1 Dupont Martin ...
    2 Smith Martin ...
    3 Dupont Paul ...

    Dans le site, il existe deux groupes d’accès à Joomla
    • Le groupe TA
    • Le groupe CDP

    Je souhaiterai mettre en place un filtre sur la liste qui :
    • Quand c’est un TA qui affiche cette liste (en front) que ne soit affiché dans cette liste que les lignes ou ce TA apparaît dans la colonne TA. (Par exemple que Dupont ne voit que les lignes où il est TA)
    • Quand c’est un CDP qui affiche cette liste (en front) que ne soit affiché dans cette liste que les lignes ou ce CDP apparaît dans la colonne CDP. (Par exemple que Martin ne voit que les lignes où il est CDP)
    Comment puis-je faire cela ?

    Je peux fournir le PHP de la liste ainsi que le model de cette liste.

    Cordialement.

    Eric
    Salut Eric,
    La table que tu as schématisée, c'est toi qui l'as créée ?
    Car si jamais tu te sers des "groupes natifs" de Joomla, cette table de correspondance USER/GROUP existe déjà: user_usergroup_map. C'est la table d'intersection (qui fait le lien quoi...) entre usergroups (les groupes) et users (les utilisateurs).
    Si tu n'es pas très familier avec les jointures ou les requêtes SQL fait signe, mais je crois que la philosophie du fofo est de donner des pistes, à toi de chercher un peu après
    ++ Boimb.

    Commentaire


    • #3
      Re : Filtrer une liste selon le usergroup

      Bonjour,

      Bien entendu, que l'objectif est de donner des pistes, je le conçois bien ainsi.

      Je me familiarise avec la structure MVC, je débute en développement, effectivement j'ai bien vu les différentes tables users, user_group_map et usergroups et ai compris leurs interactions?

      J'utilise la table user_group_map, j'y ai deux groupes (entre autres) TA et CDP, respectivement ID 11 et 10.

      Mes users appartiennent soit à TA soit à CDP.

      J'ai bien localisé le fichier dans Models pour ma liste, ce que je cherche c'est où y insérer:

      $query->select('*')
      ->from($db->quoteName('#__ y8a0u_crmform_projets))
      if(group==11)
      $query->where('TA=' . quote(user_name));
      if(group==10)
      $query->where('CDP=' . quote(user_name));

      Qui me permettra de faire ce dont j'ai besoin.

      Merci beaucoup.

      Eric

      Commentaire


      • #4
        Re : Filtrer une liste selon le usergroup

        Envoyé par Agrepe Voir le message
        Bonjour,

        Bien entendu, que l'objectif est de donner des pistes, je le conçois bien ainsi.

        Je me familiarise avec la structure MVC, je débute en développement, effectivement j'ai bien vu les différentes tables users, user_group_map et usergroups et ai compris leurs interactions?

        J'utilise la table user_group_map, j'y ai deux groupes (entre autres) TA et CDP, respectivement ID 11 et 10.

        Mes users appartiennent soit à TA soit à CDP.

        J'ai bien localisé le fichier dans Models pour ma liste, ce que je cherche c'est où y insérer:

        $query->select('*')
        ->from($db->quoteName('#__ y8a0u_crmform_projets))
        if(group==11)
        $query->where('TA=' . quote(user_name));
        if(group==10)
        $query->where('CDP=' . quote(user_name));

        Qui me permettra de faire ce dont j'ai besoin.

        Merci beaucoup.

        Eric
        T'inquiètes, je débute également avec le dev de composant sous Joomla!
        J'imagine que toi aussi, tu as regardé du côté de ce tuto : Développement d'un composant MVC

        Pour t'aider à comprendre tout ça, tu peux aussi regarder du côté des composants déjà existants de base dans Joomla comme "com_weblinks" qui est très simple mais qui contient déjà tout ce qu'il faut pour un composant simple. C'est un conseil que l'on m'avait donné (ici d'ailleurs je crois) et qui m'avait bien aidé.

        Pour en revenir à ta problématique...
        Vu que tu veux récupérer une liste d'objets et non un objet seul, ton modèle, ou plutôt ta classe, devrait hériter de JModelList . Si tu regardes de près cette classe, elle contient une méthode qui s'appelle getListQuery, c'est là que tu pourras y glisser ta requête (en overridant hein, faut pas modifier la classe mère )

        Je vois que tu as glissé des "if" dans la construction de ta requête afin de gérer les différents groupes.
        Ca doit marcher, mais je ne suis pas certain que ce soit le plus "propre". En effet, si demain tu changes les groupes, t'en ajoutes ou je ne sais quoi, tu auras de la maintenance à faire sur ton code sans quoi tout sera "cassé".
        L'idéal à mon sens, serait de gérer cela au sein de ta requête.
        Tu peux facilement récupérer l'ID de l'utilisateur connecté (check ici ) et via la Table user_group_map tu auras la correspondance avec l'ID du groupe auquel il appartient.

        D'autres idées ici
        Bon courage.
        Boimb.

        Commentaire

        Annonce

        Réduire
        Aucune annonce pour le moment.

        Partenaire de l'association

        Réduire

        Hébergeur Web PlanetHoster
        Travaille ...
        X