Identifiant community builder dans records breezing forms

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

  • [RÉGLÉ] Identifiant community builder dans records breezing forms

    Bonjour,

    Je gère les inscriptions à mon site avec Community Builder.
    J'utilise Breezing forms pour les autres formulaires (hors inscription). Pour compléter ces formulaires, j'impose à l'utilisateur de se connecter au préalable (en le renvoyant module de connexion CB lorsqu'il n'est pas connecté). L'information de son identifiant est donc connue au moment de la soumission du formulaire. Néanmoins, elle ne remonte pas dans les records Breezing forms (je ne dispose que de l'information de son adresse IP) et je ne peux donc pas associer un utilisateur aux informations qu'il me fait parvenir via formulaire.
    Etant novice en code php, quelqu'un peut-il m'indiquer de manière détaillée comment procéder pour remonter l'information de l'identifiant dans les records (en la récupérant dans un champ caché du formulaire par exemple, ou tout autre solution adéquate...).

    Merci par avance,

  • #2
    Re : Identifiant community builder dans records breezing forms

    Un sujet en traitant en profondeur http://forum.joomla.fr/showthread.ph...-BreezingForms
    Pas de demande de support par MP.
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

    Commentaire


    • #3
      Re : Identifiant community builder dans records breezing forms

      Salut

      Pour recuperer le username lie a la connexion de l'utilisateur, tu devras utiliser ceci.

      Code PHP:
      $identifiant_joomla JFactory::getUser()->get('username',0); 
      que tu peux deriver par
      Code PHP:
       $name_joomla JFactory::getUser()->get('name',0);

      $mail JFactory::getUser()->get('email',0); 
      Impossible de t'aider davantage sans plus de precision sur la construction de ta bdd

      ++
      Wis
      Dernière édition par Wismer à 14/09/2011, 20h27

      Commentaire


      • #4
        Re : Identifiant community builder dans records breezing forms

        Bonjour,

        En combinant les informations données par Jisse et Wismer, j'ai fait quelques pas supplémentaires mais ne suis pas encore parvenu à la solution.
        J'ai intégré le code php de l'API community builder en tant que pièce avant formulaire dans mon formulaire breezingforms (comme indiqué par Bhodi dans l'échange avec Jisse).
        J'ai intégré le code donné par Wismer à la suite. Ce qui donne :

        // Début Importation API Community Builder
        global $_CB_framework, $mainframe;
        if ( defined( 'JPATH_ADMINISTRATOR' ) ) {
        if ( ! file_exists( JPATH_ADMINISTRATOR . '/components/com_comprofiler/plugin.foundation.php' ) ) {
        echo 'CB not installed!';
        return;
        }
        include_once( JPATH_ADMINISTRATOR . '/components/com_comprofiler/plugin.foundation.php' );
        } else {
        if ( ! file_exists( $mainframe->getCfg( 'absolute_path' ) . '/administrator/components/com_comprofiler/plugin.foundation.php' ) ) {
        echo 'CB not installed!';
        return;
        }
        include_once( $mainframe->getCfg( 'absolute_path' ) . '/administrator/components/com_comprofiler/plugin.foundation.php' );
        }
        cbimport( 'cb.database' ); // Fonctions de base de données
        cbimport( 'language.front' ); // Langue pour CB
        cbimport( 'cb.html' ); // Classes et fonctions de rendu HTML
        cbimport( 'cb.plugins' ); // Fonctions d'accès aux plugins CB
        // Fin Importation API Community Builder

        // Début de la fonction de recuperation du username
        $identifiant_joomla = JFactory::getUser()->get('username',0);
        echo $identifiant_joomla;
        // Fin de la fonction de recuperation du username

        De cette façon, je parviens à afficher l'identifiant de l'utilisateur au début du formulaire.
        Par contre, cette information n'est pas reprise dans les records breezingforms après validation du formulaire.
        Pour ce faire, j'ai alors créé un champs supplémentaire dans le formulaire, que je tente d'initialiser, en première étape, avec une valeur fixe (toto), avant de passer à l'étape de la variable reprenant l'information de l'identifiant, mais sans succès !
        Voici le code que j'ai inséré en tant que pièce après le formulaire :

        <form id="form18" name="ff_form18" method="post" action="">
        <input name="ff_nm_IDutilisateur[]" type="text" id="ff_elem701" value="toto" />
        </form>

        Pouvez-vous me dire ce qui cloche dans ce code ? Mon nouveau champ (ff_nm_IDutilisateur) reste désespérément vide !

        Merci d'avance pour votre aide,

        Ulyssimo

        Commentaire


        • #5
          Re : Identifiant community builder dans records breezing forms

          Bonjour,
          Dans ton coe, puisque je présume que sur ton site tu n'as ni joomla! 1.0 ni l'ancètre Mambo..
          tu peux simplfier
          Code PHP:
          if ( ! file_existsJPATH_ADMINISTRATOR '/components/com_comprofiler/plugin.foundation.php' ) ) { 
              echo 
          'CB not installed!'
              return; 
          }
          include_once( 
          JPATH_ADMINISTRATOR '/components/com_comprofiler/plugin.foundation.php' ); 
          Dès l'initialisation de ton formumaire (et non après validation) inclus le champ de ton formuliare correspondant à ton $identifiant_joomla dans un champ quelconque de ton forumuiare (sous forme d'un champ de type caché).

          ça devrait d'office résoudre le problème
          Pas de demande de support par MP.
          S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

          Commentaire


          • #6
            Re : Identifiant community builder dans records breezing forms

            Salut
            Je ne pense pas qu'il soit necessaire de rajouter un champ. Il suffit de recreer la variable lorsque dans la partie "Submit" du formulaire.

            En resume, il faut mettre 2 fois la ligne identifiant, dans le begin et dans le submit.

            ++
            Wis

            Commentaire


            • #7
              Re : Identifiant community builder dans records breezing forms

              Les 2 solutions sont possibles. Le rajout d'un champ user_id dans le formulaire possède l'avantage, si on conserve l'historique des envois de formulaires dans une table, de conserver aussi l'id de l'expéditeur.
              Pas de demande de support par MP.
              S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

              Commentaire


              • #8
                Re : Identifiant community builder dans records breezing forms

                Bonjour,

                Merci pour vos inputs.
                J'ai tenté l'option du champ caché (hidden field de mon formulaire) en renseignant le code suivant dans le champ "value" :

                <?php return $identifiant_joomla = JFactory::getUser()->get('username',0); ?>

                Le champ caché est bien repris dans le record créé à l'issue de la validation du formulaire, mais avec le contenu suivant : get('username',0); ?>

                Il semble donc qu'une partie du code soit interprété, puisque seule la fin du code est reprise en tant que valeur pour le champ. Néanmoins, je ne reçois pas encore la valeur de l'identifiant de l'utilisateur connecté.

                Savez-vous ce qu'il manque dans la syntaxe du code pour que ça marche.

                Merci par avance,

                Ulyssimo

                Commentaire


                • #9
                  Re : Identifiant community builder dans records breezing forms

                  Bonjour,
                  J'ai tenté l'option du champ caché (hidden field de mon formulaire) en renseignant le code suivant dans le champ "value" :

                  <?php return $identifiant_joomla = JFactory::getUser()->get('username',0); ?>
                  C'est là que se trouve l'erreur.

                  Tu devrais créer dans une piece, une fonction ff_getUsername par exemple, et utiliser cette fonction pour ton champ. Les champs eux-mêmes n'apprécient pas vraiment l'inclusion de code PHP directement.
                  Pas de demande de support par MP.
                  S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

                  Commentaire


                  • #10
                    Re : Identifiant community builder dans records breezing forms

                    si tu choisi l'option champ cache

                    Utilise les fonctions. Dans ton begin submit, tu mets

                    $identifiant_joomla = JFactory::getUser()->get('username',0);
                    puis
                    ff_setValue('namechampcachequejeconnaispas',$ident ifiant_joomla);
                    Voila ton champ hidden est marque et pas la peine de sur-creer des lignes php

                    ++
                    Wis

                    Commentaire


                    • #11
                      Re : Identifiant community builder dans records breezing forms

                      J'ai rentré le code suivant dans le begin submit de mon formulaire. IDutilisateur étant le titre et le nom de mon champ caché.

                      $identifiant_joomla = JFactory::getUser()->get('username',0);
                      ff_setValue('IDutilisateur',$identifiant_joomla);


                      Quand je soumets le formulaire, la soumission n'aboutit pas et je reste bloqué sur une page blanche.

                      Ci-dessous le code de la fonction standard "ff_setValueX" de Breezingfomrs qu'on retrouve dans le menu gestion des pièces :
                      function ff_setValue($name, $value)
                      {
                      global $ff_processor;
                      for ($r = 0; $r < $ff_processor->rowcount; $r++) {
                      $row =& $ff_processor->rows[$r];
                      if ($row->name==$name)
                      $row->data1 = $value;
                      unset($row);
                      } // for
                      } // ff_setValue


                      Savez-vous d'où vient le problème.

                      Merci par avance pour votre aide.

                      Ulyssimo

                      Commentaire


                      • #12
                        Re : Identifiant community builder dans records breezing forms

                        je connais la fonction ff_setValue.

                        Par hasard, tu as bien mis la phrase magique au debut?

                        Code PHP:
                        $this->execPieceByName('ff_InitLib');
                        $identifiant_joomla JFactory::getUser()->get('username',0);
                        ff_setValue('IDutilisateur',$identifiant_joomla); 

                        Commentaire


                        • #13
                          Re : Identifiant community builder dans records breezing forms

                          Merci pour la phrase magique, qui évite en effet d'aboutir sur une page blanche.
                          Par contre, je n'obtiens pas encore le résultat voulu.

                          Voici exactement le code renseigné en paramètres du formulaire à ce stade :

                          - pièces de formulaire/avant le formulaire : appel de l'API CB avec code simplifié donné par Jisse :

                          if ( ! file_exists( JPATH_ADMINISTRATOR . '/components/com_comprofiler/plugin.foundation.php' ) ) {
                          echo 'CB not installed!';
                          return;
                          }
                          include_once( JPATH_ADMINISTRATOR . '/components/com_comprofiler/plugin.foundation.php' );

                          - soumettre des pièces/début de soumission (la première partie du code -if- permet de rediriger l'utilisateur non connecté vers la page d'identification, et la seconde partie -else- devrait permettre d'alimenter le champ caché avec l'identifiant de l'utilisateur connecté) :

                          if( JFactory::getUser()->get('id',0) <= 0 )
                          {
                          header("Location: index.php?option=com_comprofiler&task=login");
                          exit;
                          }
                          else
                          {
                          $this->execPieceByName('ff_InitLib');
                          $identifiant_joomla = JFactory::getUser()->get('username',0);
                          ff_setValue('IDutilisateur', "$identifiant_joomla");
                          }

                          Et pour le champ caché 'IDutilisateur', je l'ai créé simplement en renseignant son titre et son nom dans les premiers champs "name" et "title" disponibles dans le sous-onglet "champs cachés" de l'onglet "Formulaires" (création de mon formulaire faite par la méthode Easy mode).

                          Voyez-vous une erreur ou un élément manquant qui empêcherait la remontée de l'identifiant dans le champ caché 'IDutilisateur'.

                          Merci encore pour vos lumières...

                          Ulyssimo

                          Commentaire


                          • #14
                            Re : Identifiant community builder dans records breezing forms

                            effectivement, je vois une grosse limitation qui empeche de tout remonter correctement==> le mode easymode!!! Trop facile, donc bcp trop de bride.

                            Peux tu refaires ton formulaire en utilisant le mode "Classique".

                            Perso, je ne connais absolument pas le easymode, il me bride bcp trop. Les fonctions ne fonctionnent pas sur ce type.

                            Commentaire


                            • #15
                              Re : Identifiant community builder dans records breezing forms

                              Un grand merci Wismer ! L'identifiant remonte enfin.

                              En définitive :

                              - j'ai recréé mon formulaire en Classic Mode comme tu me l'as indiqué
                              - je n'ai conservé en début de soumission que la partie de code permettant une redirection vers la page d'identification dans le cas où l'utilisateur n'est pas connecté
                              - j'ai renseigné le code suivant dans la zone "valeur" de mon champ caché :

                              <?php return $identifiant_joomla = JFactory::getUser()->get('username',0); ?>

                              Et ça marche !

                              A bientôt sur le forum et encore merci. Je clos ce sujet.

                              Commentaire

                              Annonce

                              Réduire
                              Aucune annonce pour le moment.

                              Partenaire de l'association

                              Réduire

                              Hébergeur Web PlanetHoster
                              Travaille ...
                              X