ajouter un utilisateur avec un script php externe à Joomla

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

  • ajouter un utilisateur avec un script php externe à Joomla

    Bonsoir à tous,
    Je désire ajouter un utilisateur ("registered").
    Au départ je pensais simplement ajouter un enregistrement dans la tables "users" et un dans la table "user_usergroup_map".
    Mais il me parait plus sur et plus élégant d'utiliser les api Joomla, malheureusement je suis complètement débutant en ce domaine.
    Dans d'autres discussions j'ai trouvé :
    <?php
    define('_JEXEC', 1);
    define('JPATH_BASE', '.');
    require_once JPATH_BASE . '/includes/defines.php';
    require_once JPATH_BASE . '/includes/framework.php';
    require_once JPATH_BASE . '/libraries/joomla/factory.php';

    $mainframe = JFactory::getApplication('site');
    $mainframe->initialise();

    $user = JFactory::getUser();
    $user->name = "tata";
    $user->username = "tata";
    $user->email = "";
    $user->password = md5("tata");
    $user->groups = array(2);
    $user->save();
    ?>

    Rien ne s'ajoute
    Je ne vois pas ou sont mes erreurs...
    D'avance merci pour votre aide.
    Marc

  • #2
    Re : ajouter un utilisateur avec un script php externe à Joomla

    Hello.

    Tu dois avoir une erreur sur le save.
    Regarde si cela ne vient pas de ton array champ 'groups' en récupérant l'erreur dans ton script.
    Je pense que cette partie du framework n'a pas encore été réécrite et qu'il faut encore utiliser le geterror même s'il est marqué 'deprecated'.
    (Pour cela regarde dans com_users par exemple).
    Si tu ne le fait pas tu ne verras rien.
    C'est à toi de gérer l'affichage ou pas de l'erreur.

    Pour l'affectation aux groupes j'utilise toujours juserhelper::setusergroups mais il faut connaître l'identité du user concerné bien sûr.

    Dans tous les cas le plus simple quand tu bloques dans une telle situation est d'utiliser un debugger et de suivre l'exécution du code dans le framework.

    Pour ma part j'aurai plutôt pensé à utiliser la classe Jtable que Juser pour cette opération.
    Dernière édition par roland_d_alsace à 30/04/2017, 22h05 Raison: Re
    A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
    Rejoignez le Joomla Users Groupe Alsace...
    roland_d_alsace va-t-il devenir roland_du_grand_est ?

    Commentaire


    • #3
      Re : ajouter un utilisateur avec un script php externe à Joomla

      Bonjour Roland,

      Merci beaucoup pour la réponse qui m'a bien aidé.

      En récupérant l'erreur, je me suis rendu compte que le mail que j'utilisais pour mes tests était déjà utilisé !!!
      Donc mon code fonctionne !

      Par contre au niveau de la récupération d'erreur, voici ce que j'utilise :
      try {
      $user->save();
      }
      catch (Exception $e) {
      $resulttxt = $e->getMessage();
      }
      $resulttxt = (!($resulttxt==null)) ? $resulttxt : $user->getError();

      Et c'est bien le getError() qui fonctionne.

      En ce qui concerne ta phrase : "Dans tous les cas le plus simple quand tu bloques dans une telle situation est d'utiliser un debugger et de suivre l'exécution du code dans le framework.", peux-tu m'en dire un peu plus ?

      Encore merci !
      Marc

      Commentaire


      • #4
        Re : ajouter un utilisateur avec un script php externe à Joomla

        Bonjour,

        Je m'immisce....

        Pour debogguer le code php, on peut utiliser:
        - soit jDump https://github.com/mathiasverraes/jdump qui permet de voir les varialbes, la pile d'appel,...
        - soit passer par Eclipse https://eclipse.org/pdt/, mais cela requiert d'avoir monter un environnement en local (personnellement j'utilise uwamp http://www.uwamp.com/fr/ car je suis sous windows 10). Avec Eclipse, on peut tracer ligne à ligne l'exécution du code php.

        Pascal
        If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

        Commentaire


        • #5
          Re : ajouter un utilisateur avec un script php externe à Joomla

          Bonjour,

          Pascal, merci pour les conseils, je vais tester cela...

          Par contre j'ai un peu de mal avec la classe jTable que je teste par ailleurs.
          J'ai ajouté une table "test" dans la db Joomla.
          Je désire y ajouter des enregistrement depuis l'extérieur de Joomla.
          Pour l'instant j'utilise très classiquement mysql_query mais de la même manière que je l'ai remplacé par l'utilisation de la classe juser pour la table users je voudrais le remplacer par jtable pour ma table test.

          Si quelqu'un a un p'tit exemple ce serait génial !!!
          D'avance merci.

          Marc.

          Commentaire


          • #6
            Re : ajouter un utilisateur avec un script php externe à Joomla

            Envoyé par merou63 Voir le message
            ....
            En ce qui concerne ta phrase : "Dans tous les cas le plus simple quand tu bloques dans une telle situation est d'utiliser un debugger et de suivre l'exécution du code dans le framework.", peux-tu m'en dire un peu plus ?

            Encore merci !
            Marc
            Il te faut effectivement un outil de développement qui fonctionne avec x-debug.

            Eclipse ou Netbeans par exemple.

            Eclipse est un peu plus gourmand en resources, mais la dernière version "néon" fonctionne assez bien sous Windows.
            Il faut installer un environnement Java au préalable.

            J'avais abandonné Eclipse quelques années au profit de Netbeans, mais j'y suis revenu car cette dernière version marche pas mal et a plus de fonctionnalités que Netbeans.
            De surcroit le framework de Joomla s'y intègre bien car les conventions d'écriture sont respectées (par exemple : info bulle d'affichage des descriptions des méthodes, recherche et ouverture automatique du code des méthodes de classe, etc..).

            Bref ceci te fait gagner énormément de temps et t’évites de rechercher dans la documentation de Joomla (surtout qu'elle est rarement complète et détaillée -ce n'est pas un reproche, car à ce prix là on serait mal venu d'en faire -).

            Idem pour le debugger de ces environnements : point d’arrêt dans le code, exécution pas à pas, analyse et modification du contenu des variables php, etc...
            Les debuggeurs nécessitent une installation de Xamp/Wamp avec x-debug, ce qui est le cas maintenant dans les versions récentes.
            Et tout ceci gratuitement.

            Pour info de tels outils pour développer sous Windows coutent + de 1K€ alors ce serait bête de s'en priver.

            A l'époque j'avais fait un petit tuto pour l'install..., mais tu en trouveras d'autres sur la toile.
            Dernière édition par roland_d_alsace à 03/05/2017, 14h02
            A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
            Rejoignez le Joomla Users Groupe Alsace...
            roland_d_alsace va-t-il devenir roland_du_grand_est ?

            Commentaire


            • #7
              Re : ajouter un utilisateur avec un script php externe à Joomla

              Envoyé par merou63 Voir le message
              ...
              Je désire y ajouter des enregistrement depuis l'extérieur de Joomla.
              Donc avec le framework, mais sans utiliser Joomla CMS, c'est bien cela ?

              Un exemple d'utilisation du framework seul, facile à comprendre, c'est le fameux correctif json-db-check qui vérifiait les rubriques json de la db de Joomla.

              Bon dev.
              Dernière édition par roland_d_alsace à 03/05/2017, 13h57
              A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
              Rejoignez le Joomla Users Groupe Alsace...
              roland_d_alsace va-t-il devenir roland_du_grand_est ?

              Commentaire


              • #8
                Re : ajouter un utilisateur avec un script php externe à Joomla

                En fait, je voudrais continuer mon code après le "$user->save();" avec qqc comme
                $table = new jTable;
                etc...
                Quand j'ai instancié la classe jTable (si ma ligne si dessus est correcte), comment spécifier à quelle table je m'adresse ?
                Puis j'aurais utilisé la méthode "save".
                Mais il y a peut-être tout autre chose à faire...
                Je suis désolé si mes questions sont basiques mais je suis vraiment débutant...

                D'avance merci pour l'aide,
                Marc.

                Commentaire


                • #9
                  Re : ajouter un utilisateur avec un script php externe à Joomla

                  Il faut déjà dans administrator/components/com_moncomponsant/tables/tests.php créer ta classe :
                  Code PHP:
                  class MonprefixeTableTests extends JTable
                  {
                      
                      
                  /**
                       * Constructor
                       *
                       * @param object Database connector object
                       *
                       * @note    Overload JTable::__construct
                       */
                      
                  public function __construct() 
                      {
                          
                  $db JFactory::getDbo();
                          
                  parent::__construct('#__tests''id'$db);
                      }

                  Il faut que tu ais un identificateur unique (ici 'id') dans tes champs de la table #__tests.

                  Ensuite dans ton code tu dois instancier ta classe :

                  Code PHP:
                  $tests JTable::getInstance('Tests''MonprefixeTable'); 
                  Ensuite tu peux utiliser les méthodes de la classe JTable sur ton instance de classe $tests.

                  En général on redéfini ou on complète quelques méthode de Jtable comme check ou store pour l'adapter aux spécificités de la table en question (contrôle de champs, complétion, calcul alias, date et user création, maj, ou autres....).

                  Pour avoir + d'idées regarde dans administrator/components/com_banners/tables/banner.php par exemple.

                  Pour info : la méthode save effectue un bind, un check et un store.
                  Dernière édition par roland_d_alsace à 03/05/2017, 15h17
                  A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
                  Rejoignez le Joomla Users Groupe Alsace...
                  roland_d_alsace va-t-il devenir roland_du_grand_est ?

                  Commentaire


                  • #10
                    Re : ajouter un utilisateur avec un script php externe à Joomla

                    En fait, je ne désire pas créer un composant Joomla.
                    Je désire juste un petit script php qui :
                    - est appelé directement de l'extérieur
                    - ajoute un user dans la tables users de Joomla
                    - ajoute un enregistrement dans une autre table (personnelle) dans la DB Joomla
                    C'est maintenant chose faite et c'est grâce à vos réponses : merci !!!
                    L'ajout dans users a été réalisé avec Juser et finalement, comme je n'ai toujours pas compris JTable , j'ai ajouté l’enregistrement dans mon autre table avec Jdatabase.
                    Voici mon code :
                    $db = JFactory::getDbo();
                    $query = $db->getQuery(true);
                    $columns = array('field1', 'field2', 'field3');
                    $values = array($db->quote($aaa), $db->quote($bbb), $db->quote($ccc));
                    $query
                    ->insert($db->quoteName('#__matable'))
                    ->columns($db->quoteName($columns))
                    ->values(implode(',', $values));
                    $db->setQuery($query);
                    $db->execute();


                    Je vais tout de même essayer de comprendre Jtable...

                    Encore merci et bonne soirée à tous,
                    Marc.

                    Commentaire

                    Annonce

                    Réduire
                    Aucune annonce pour le moment.

                    Partenaire de l'association

                    Réduire

                    Hébergeur Web PlanetHoster
                    Travaille ...
                    X