Développement de Moodle

Plugin pour information utilisateur basique

 
Avatar olivier dechepy
Plugin pour information utilisateur basique
 

Bonjour, 

Je souhaite pouvoir accéder à l'id (et éventuellement le nom et prénom) de l'utilisateur connecté quelque soit la page à laquelle il accède. A priori, (j'ai demandé sur le forum mais étonnament ce n'est pas le cas), il n'existe pas de cookie, valeur de localStorage globale pour y accéder.

Ne souhaitant pas dans un premier temps développer un plugin juste pour récupérer cette information dans ce cadre (sur toutes les pages), on m'a suggére le plugin Generico, qui aurait pu convenir... si le bloc html Additionnel (Tableau de bord >  Administration du site> Présentation > HTML additionnel) était utilisable avec Generico, ce qui n'est pas le cas (il semble qu'il fonctionne avec des filtres qui ne sont pas pris en compte dans ces blocs spécifiques).

Donc je me replie sur la solution plugin, mais étant novice en plugin Moodle, je souhaiterais savoir  :

pour mon besoin, juste récupérer dans une balise par exemple <span id="userdata" data-userid="x" data-user="nom prenom"></span>

  • dans mon cas quel type de plugin utiliser (j'imagine la balise dans la topbar ou le footer) ?
  • mais dans ce cas, comment faire pour qu'il soit toujours présent (donc à un endroit non désactivable) pour un utilisateur connecté  (sans avoir besoin de l'ajouter manuellement évidemment) ?


merci d'avance

 
Moyenne des évaluations  -
Avatar Nicolas Martignoni
Re: Plugin pour information utilisateur basique
DéveloppeursDéveloppeurs de pluginsDocumentation writersMoodleurs particulièrement utilesTesteursTraducteurs

Bonjour,

Je ne réponds pas, mais...

Plutôt que nous dire comment vous voulez faire quelque chose, il serait profitable de nous dire ce que vous voulez obtenir. Car il y a peut-être dans Moodle une autre façon pour y arriver que la solution à laquelle vous pensez.

 
Moyenne des évaluations Utile (2)
Avatar olivier dechepy
Re: Plugin pour information utilisateur basique
 

Je ne comprends pas le sens de votre remarque. 


J'ai je pense clairement indiqué ce que je veux obtenir : récupérer dans une balise par exemple <span id="userdata" data-userid="x" data-user="nom prenom"></span>,  qui soit accessible depuis TOUTE page de Moodle pour un utilisateur connecté ou simplement générer un cookie avec ces informations.

Dans ma question, c'est la seule information dont j'ai besoin, je n'ai pas besoin de modifier des donnée, d'afficher quoi que ce soit, juste pouvoir passer au html (ou au js) l'id et le nom/prénom de l'utilisateur depuis le php ($USER). 


Puisque $USER n'est pas exposé (via cookie ou autre) coté client, ma demande est donc quelle est la méthode la plus simple pour récupérer ces informations utilisateur (et donc ne pas utiliser un plugin existant qui me les fournirait mais qui fait aussi le café)


 
Moyenne des évaluations  -
Avatar Nicolas Martignoni
Re: Plugin pour information utilisateur basique
DéveloppeursDéveloppeurs de pluginsDocumentation writersMoodleurs particulièrement utilesTesteursTraducteurs

Le sens de ma remarque : vous voulez récupérer ceci pour en faire quoi ? Ou encore : que voulez-vous obtenir in fine ? Ou encore : qu'est-ce que l'utilisateur verra au bout de votre processus ?

Comme ça on pourrait peut-être vous aiguiller vers un solution adéquate.

 
Moyenne des évaluations Utile (2)
Avatar olivier dechepy
Re: Plugin pour information utilisateur basique
 

Je suis désolé, mais j'avais bien compris ce que vous vouliez dire, mais je ne comprends pas le pourquoi de votre question. il s'agit d'une question technique précise, qui n'a rien à voir avec la finalité de l'utilisation de cet affichage : Je peux afficher cette information juste parce que j'ai envie d'apprendre à faire une chose simple (afficher ces informations) avant de faire des choses plus compliquées, parce que c'est une première étape d'un projet, ... bref, en quoi savoir pourquoi ou pour quoi j'en ai besoin n'a je pense aucun rapport avec ma question qui, je pense, est dans le bon forum (développement) et répond au règles du forum.


Comment exposer (côté client) l'id de l'utilisateur connecté ($USER) quelle que soit la page sur laquelle il est connecté ?

Pour vous rassurer sur la dernière partie de votre réponse : je vais creuser toutes les solutions ou pistes que quiconque pourra me donner, ça sera à moi de déterminer si elles sont trop complexes pour le besoin ou pas.


Cordialement

 
Moyenne des évaluations  -
C'est moi :-)
Re: Plugin pour information utilisateur basique
Documentation writersMoodleurs particulièrement utilesTesteursTraducteurs

Bonjour Olivier,

Tu peux éventuellement regarder le bloc Login/User info ; en le forçant à s'afficher sur toutes les pages, cela devrait répondre à l'expression initiale de ton besoin.

Mais comme le disait Nicolas, il est à mon sens très important de savoir ce que tu souhaites obtenir réellement au final !

Sans cela, il n'y a guère de motivation à essayer de répondre à une problématique, sans voir l'intérêt qu'il pourrait y avoir derrière...

Séverin

 
Moyenne des évaluations  -
Avatar Mathieu Domingo
Re: Plugin pour information utilisateur basique
 

Salut,

Je ferais un plugin local qui modifie le header.

Lien vers la doc : https://docs.moodle.org/dev/Local_plugins

Et concretement ce qu'il faut faire si la doc n'est pas assez claire :

Dans le dossier moodle/local, créer un dossier ayant pour nom le nom de ton plugin (je vais utiliser "adduserinfo").

Il faut un fichier version.php :

<?php
defined('MOODLE_INTERNAL') || die;

$plugin->version  = 2018120500;
$plugin->requires = 2017120500;  //mettre la bonne version j'ai enlevé un an a la date d'aujourdhui..
$plugin->component = 'local_adduserinfo';        // Il y a un formalisme précis "type de plugin _ nomduplugin"
$plugin->maturity = MATURITY_STABLE;
$plugin->release  = '0.1';

Ensuite il faut un fichier lib.php :

<?php
function local_adduserinfo_render_navbar_output()  //debut nom du plugin et ensuite le renderer que l'on veut surcharger.
{
    global $USER;
    return '<span id="userdata" data-userid="'.$USER->id.'" data-userfirstname="'.$USER->firstname.'" data-userlastname="'.$USER->lastname.'"></span>';
}

Il faut ensuite crée un dossier "lang", puis créer dedans un dossier "fr" et un dossier "en", puis crée dans fr et dans en un fichier local_adduserinfo.php qui contient :

<?php
$string['pluginname'] = 'Add user info';

Bon courage,

Mathieu

 
Moyenne des évaluations Utile (1)