Creation d'utilisateurs Joomla dans un script (seul le premier marche...)

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

  • Creation d'utilisateurs Joomla dans un script (seul le premier marche...)

    Bonjour,

    Je suis en train de faire un plugin pour importer des données dans un composant (EzRealty) et je dois créer des utilisateurs Joomla (s'ils n'existent pas). Mon script doit donc pouvoir créer plusieurs comptes joomla.
    Une des solutions serait de prendre une image de la base de données (en faisant un export) de créer un utilisateur de prendre une autre image de la base et de comparer pour voir ce qu'il faut modifier dans les tables. Mais comme j'avais déjà tenté cette manip et que je n'arrivais pas à me connecter avec les utilisateurs ainsi créés, j'ai cherché une autre solution et j'ai trouvé : http://stackoverflow.com/questions/1...ithin-a-script

    J'ai donc une fonction :
    Code PHP:
        function register_user ($firstname$lastname$email$password)

        { 

    echo 
    "<br>register : ".$firstname." ".$lastname;

    //         $firstname = $email; // generate $firstname

    //         $lastname = ''; // generate $lastname

             
    $username $email// username is the same as email





             /*

             I handle this code as if it is a snippet of a method or function!!

        

             First set up some variables/objects     */

        

             // get the ACL

             
    $acl =& JFactory::getACL();



             
    /* get the com_user params */



             
    jimport('joomla.application.component.helper'); // include libraries/application/component/helper.php

             
    $usersParams = &JComponentHelper::getParams'com_users' ); // load the Params



             // "generate" a new JUser Object

             
    $user JFactory::getUser(0); // it's important to set the "0" otherwise your admin user information will be loaded



             
    $data = array(); // array for all user settings



             // get the default usertype

             
    $usertype $usersParams->get'new_usertype' );

             if (!
    $usertype

            {

                 
    $usertype 'Registered';

             }



             
    // set up the "main" user information

        

             //original logic of name creation

             
    $data['name'] = $firstname.' '.$lastname// add first- and lastname

             //$data['name'] = $firstname.$lastname; // add first- and lastname

            

             
    $data['username'] = $username// add username

             
    $data['email'] = $email// add email

             
    $data['gid'] = $acl->get_group_id''$usertype'ARO' );  // generate the gid from the usertype

        

             /* no need to add the usertype, it will be generated automaticaly from the gid */

        

             
    $data['password'] = $password// set the password

             
    $data['password2'] = $password// confirm the password

             
    $data['sendEmail'] = 1// should the user receive system mails?

        

             /* Now we can decide, if the user will need an activation */

        

             
    $useractivation $usersParams->get'useractivation' ); // in this example, we load the config-setting

             
    if ($useractivation == 1

            { 
    // yeah we want an activation

        

                 
    jimport('joomla.user.helper'); // include libraries/user/helper.php

                 
    $data['block'] = 1// block the User

                 
    $data['activation'] =JUtility::getHashJUserHelper::genRandomPassword() ); // set activation hash (don't forget to send an activation email)

        

             
    }

             else 

            { 
    // no we need no activation

        

                 
    $data['block'] = 1// don't block the user

        

             
    }

    echo 
    "<br>user->bind : data :<pre>";
    print_r($data);
    echo 
    "</pre>";
         if (!
    $user->bind($data)) 

            { 
    // now bind the data to the JUser Object, if it not works....

    echo "<br>user->bind error";

                 
    JError::raiseWarning(''JText::_$user->getError())); // ...raise an Warning

                 
    return false// if you're in a method/function return false

        

             
    }



             if (!
    $user->save()) 

            { 
    // if the user is NOT saved...

    echo "<br>user->save error";



                 
    JError::raiseWarning(''JText::_$user->getError())); // ...raise an Warning

                 
    return false// if you're in a method/function return false



             
    }

    echo 
    "<br>user creation OK";



             return 
    $user// else return the new JUser object



         

    Que j'appelle ainsi :
    Code PHP:
                                    $new_user=$this->register_user($firstname$lastname$email$password); 
    L'utilisateur ainsi créé (une fois activé) peut être utilisé pour se connecter.
    Par contre, seul le premier compte est créé.
    Si je fais reload de la page, ça me créé le deuxième compte (trouvé dans le fichier).

    Quelqu'un aurait-il une idée pour que tous les comptes qui doivent être créés puissent l'être en une seule exécution du plugin ?

    Merci d'avance.
    Amicalement,
    Jpaul

    http://www.jp-olivier.net/r

  • #2
    Re : Creation d'utilisateurs Joomla dans un script (seul le premier marche...)

    C'est peut-être moi mais je ne vois pas de foreach dans ta source.
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
    Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

    Commentaire


    • #3
      Re : Creation d'utilisateurs Joomla dans un script (seul le premier marche...)

      Bnjour,
      dit autrement, ce n'est pas dans la boucle (?) qui appelle cette fonction que se trouve l'erreur ?
      Schtroumpfe toi le Schtroumpf t'aidera.
      Je ne schtroumpfe pas aux demandes de schtroumpf par MP.

      Commentaire


      • #4
        Re : Creation d'utilisateurs Joomla dans un script (seul le premier marche...)

        Non effectivement, je n'ai pas mis le code de la boucle mais je sais que je passe par les appels, sauf si ma mémoire me jour des tours car je ne peux pas refaire le test : j'arrive même à récupérer les utilisateurs qui me sont retournés par la fonction : je les ai affichés avec un print_r($new_user).
        Il semble que je n'ai pas d'erreur mais seul le premier utilisateur (non encore créé est créé).
        C'est vrai que ça ressemble à une erreur grosse comme moi mais comme je ne voyais rien, j'ai fait ce post au cas où quelqu'un serait tombé sur le même problème que moi.

        Je reprendrai mes recherches ce soir et vous tiendrai au courant.

        En tous cas merci pour les réponses.
        Amicalement,
        Jpaul

        http://www.jp-olivier.net/r

        Commentaire


        • #5
          Re : Creation d'utilisateurs Joomla dans un script (seul le premier marche...)

          Re,
          > permute tes entrées pour voir si c'est la position (premier) ou le contenu (problème de codification ou de droits) qui joue
          > essaye en forçant l'id à 0 des fois qu'il y ait de la rémanance dans le bazard $data['id'] = 0;
          Schtroumpfe toi le Schtroumpf t'aidera.
          Je ne schtroumpfe pas aux demandes de schtroumpf par MP.

          Commentaire


          • #6
            Re : Creation d'utilisateurs Joomla dans un script (seul le premier marche...)

            Chapeau bas Grand Schtroumpf...
            Envoyé par Grand Schtroumpf Voir le message
            Re,
            > essaye en forçant l'id à 0 des fois qu'il y ait de la rémanance dans le bazard $data['id'] = 0;
            C'était bien ça. J'aurais probablement fini par trouver mais après combien d'hypothèses ?
            Tu m'as fait gagner du temps, merci beaucoup.
            Amicalement,
            Jpaul

            http://www.jp-olivier.net/r

            Commentaire


            • #7
              Re : Creation d'utilisateurs Joomla dans un script (seul le premier marche...)

              Effectivement, belle perspicacité de GS. C'est pas pour rien qu'il est le meilleur.

              Je te suggère plutôt de faire un $user->reset(); c'est plus mieux

              JTable::reset()
              Christophe (cavo789)
              Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
              Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

              Commentaire

              Annonce

              Réduire
              Aucune annonce pour le moment.

              Partenaire de l'association

              Réduire

              Hébergeur Web PlanetHoster
              Travaille ...
              X