Retrouver cours suivis par un étudiant

Retrouver cours suivis par un étudiant

par Arnaud MARCELLIN,
Nombre de réponses : 20
Bonjour.

Je débute sous Moodle, j'ai parcouru diverses documentations de développements sans trouver mon bonheur. Je commence à coder un module qui s'appuiera sur la base de données de Moodle.

L'idée est de fournir des informations de la base de données en xml, puis plus tard de compléter la base de données avec différentes informations.

Je cherche (pour l'instant) à déterminer les cours auxquels un étudiant est inscrit. En parcourant les tables SQL, j'ai remarqué une combinaison plausible entre course, course_display et users.

SELECT c.id,c.fullName FROM mdl_user u,mdl_course c, mdl_course_display cd WHERE u.username = 'test' AND u.id = cd.userid and cd.course = c.id

Malheureusement ça ne me renvoie pas les informations désirées. Par exemple si un utilisateur se retire d'un cours, il reste marqué dans la table course_display. Merci de m'indiquer comment déterminer les cours auxquels un étudiant est abonné.

Cordialement
Moyenne des évaluations  -
En réponse à Arnaud MARCELLIN

Re: Retrouver cours suivis par un étudiant

par Éric Bugnet,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Traducteurs
Salut,

Si ton développement est sous Moodle, n'hésite surtout pas à utiliser l'API de Moodle qui est plutôt pratique quand tu as saisi les quelques trucs, énorme avantage : la portabilité de ton développement, et la pérénité de ton code.

Pour avoir les cours quxquels un étudiant est inscrit, tu as une fonction dans l'API : get_my_courses($USER->id)

Plus d'info sur le moodle Docs, et pour farfouiller le code : le phpxref, et enfin, sache que les API sont définies dans le repertoire lib, avec comme fichiers très intéressants à parcourir : moodle.php, weblib.php, datalib.php, dmllib.php...

Éric
En réponse à Éric Bugnet

Re: Retrouver cours suivis par un étudiant

par Arnaud MARCELLIN,
J'ai commencé à me baser sur les DML fonctions, vu qu'il était recommandé de les utiliser. Par contre dans la doc il n'y pas de traces parlant de cette fonction, il va me falloir explorer un peu de code apparemment. je m'y attèle de suite. Encore merci pour ces précisions sourire
En réponse à Arnaud MARCELLIN

Re: Retrouver cours suivis par un étudiant

par Séverin Terrier,
Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs
Bonjour,

je pense que tu devrais nous expliquer les finalités attendues de ton module à développer.

Parce que certaines personnes pourront peut-être t'indiquer d'autres façons de procéder, ou des développements déjà existant...

Cordialement,
Séverin
En réponse à Séverin Terrier

Re: Retrouver cours suivis par un étudiant

par Arnaud MARCELLIN,
La finalité est de pouvoir, sur un livre électronique, télécharger du contenu venant de moodle, l'exploiter (consulter les cours, poster sur le forum, répondre aux quizz...), et cela de manière asynchrone (tout est traité en local, et non avec moodle), pour enfin notifier à moodle les changements apportés. le but est d'avoir un outil de travail nomade pouvant se passer de connexion internet. Pour cela notre groupe envisage la communication des éléments disponibles à l'utilisateur par contenu xml, et pour remplir ce xml, il va me falloir utiliser les ressources de moodle sourire
En réponse à Arnaud MARCELLIN

Re: Retrouver cours suivis par un étudiant

par Valery Fremaux,

En effet un groupe de travail anglophone travaille aussi sur ce sujet (moodle client) pour pouvoir faire du moodle offline.

Regarder cette entrée : http://docs.moodle.org/en/Development:Offline_Moodle

En réponse à Valery Fremaux

Re: Retrouver cours suivis par un étudiant

par Arnaud MARCELLIN,
Humm, j'ai parcouru vite fait, certains éléments sont intéressants, notamment la prise en charge du cron. Par contre je ne vois trace de leur support client.
En réponse à Arnaud MARCELLIN

Re: Retrouver cours suivis par un étudiant

par Patrick Pollet,
[cite] La finalité est de pouvoir, sur un livre électronique, télécharger du contenu venant de moodle, l'exploiter (consulter les cours, poster sur le forum, répondre aux quizz...), et cela de manière asynchrone (tout est traité en local, et non avec moodle), pour enfin notifier à moodle les changements apportés. le but est d'avoir un outil de travail nomade pouvant se passer de connexion internet. Pour cela notre groupe envisage la communication des éléments disponibles à l'utilisateur par contenu xml, et pour remplir ce xml, il va me falloir utiliser les ressources de moodle
[/cite]

Le défaut de ton implémentation, si je puis me permettre, est qu'elle t'impose une couche supplémentaire écrite dans Moodle qui va émettre de l'XML "on demand" depuis tes lecteurs du livre élécronique, si ils sont "connectés".

Plutot que de reinventer la roue, tu devrais peut-être t'orienter vers les Web Services, qui sont en cours de developpement actifs, et qui permettront depuis n'importe quel client, n'importe quel langage d'injecter ou d'ejecter des données dans Moodle...

Voir pour l'état actuel du développement par exemple : http://tracker.moodle.org/browse/MDL-12886

Il existe déja un Web service en SOAP fonctionnel qui va converger très vite vers l'implementation officielle. http://moodle.org/mod/forum/discuss.php?d=100065

Bon courage avec l'API Moodle sourire

En réponse à Patrick Pollet

Re: Retrouver cours suivis par un étudiant

par Arnaud MARCELLIN,
L'idée est intéressante, mais je vais manquer de temps pour l'approfondir. jJe le note dans un coin pour une future évolution. Le projet mené sert avant tout d'expérimentations des capacités des systèmes pour dialoguer.

Mais dans web service, le client est un navigateur web si je ne m'abuse, ce qui peut poser quelques contraintes techniques (impossibilité de télécharger du contenu par exemple, obligation de passer via cURL). Ma plateforme cliente me pose des contraintes assez lourdes :/

merci pour le conseil en tout cas sourire
En réponse à Arnaud MARCELLIN

Re: Retrouver cours suivis par un étudiant

par Patrick Pollet,
Absolument pas sourire

Voici un client 100% php que tu peux déployer sur n'importe quel client , même à l'autre bout de la planète. Il te faut simplement la classe MoodleWS.php qui est générée par l'outil wsdl2php fourni ...

Tu trouveras sur le site "officiel" des exemples en php, python ou java.



En réponse à Patrick Pollet

Re: Retrouver cours suivis par un étudiant

par Éric Bugnet,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Traducteurs
Chalut...

Heu Patrick... Tu pourrais m'en dire un peu plus sur ton truc que j'y ai rien compris mais qui a l'air super bien STP ??? Avec des mots simples, dans la mesure du possible ???
Genre avec des illustrations par exemple ???

Hein ???

S'il te plait ???

Merci !
Éric
En réponse à Éric Bugnet

Re: Retrouver cours suivis par un étudiant

par Patrick Pollet,
Chalut Eric,

La je suis un peu la tête dans le seau pour t'expliquer les Web Services... Je te propose 2 choses :

- voir les cours sur le MoodleMoot 2008 sur ce sujet. http://moodlemoot2008.vet-nantes.fr/moodle/course/view.php?id=56

Lecture recommandée : Mode d'emploi express http://moodlemoot2008.vet-nantes.fr/moodle/mod/resource/view.php?id=312

- te faire tous les dessins que tu veux en Septembre sur les nappes du Garet, un des meilleurs bouchons de Lyon (pas de troll sur ce sujet SVP) clin d’œil

A+

En réponse à Patrick Pollet

Re: Retrouver cours suivis par un étudiant

par Éric Bugnet,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Traducteurs
Haaa, ben merci, je vais commencer par ça... ça me fera déjà une bonne base !

QQchose me dit que qq1 d'autre risque de s'interesser au sujet s'il faut pour cela aller dans un bouchon clin d’œil

Éric
En réponse à Patrick Pollet

Re: Retrouver cours suivis par un étudiant

par Éric Bugnet,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Traducteurs
Re-Salut,

Je viens de voir la vidéo de ta conférence sur le site du moodle moot, et en effet, c'est bien plus clair maintenant, merci !

Éric
En réponse à Patrick Pollet

Re: Retrouver cours suivis par un étudiant

par Arnaud MARCELLIN,
Ok je vois. Mais (ouais, j'avais gardé un mais dans ma manche cool), par défaut je ne peux que lancer des applications compilées en C/C++ sur ma plateforme mobile. Il me semble que l'on peut "bidouiller" pour y mettre une machine java, mais ca devient lourd pour le système.
En réponse à Arnaud MARCELLIN

Re: Retrouver cours suivis par un étudiant

par Patrick Pollet,
Ah je vois...

Dans ce cas, au lieu de réécrire toutes les interrogations Moodle via son API interne qui est assez rugueuse, et de les envoyer dans ton XML à tes clients C++, tu pourrais écrire une simple couche qui tournerait sur ton Moodle.

Elle utiliserait comme client l'API Web Service (garante de pérennité) pour interroger Moodle et convertirait les tableaux reçus de cette API dans ton XML à destination de tes clients.

L'API Web Service est en cours de dev par les programmeurs du "core", donc tu peux être assuré que get_my_courses, get_resources ou get_ce_que_tu_veux fonctionneront ad vitam aeternam.

Lorsqu'elle sera finalisée, les autres developpeurs dont moi, écriront par dessus des serveurs parlant SOAP, XML_RPC, REST ou XML_CE_QUE_TU_VEUX, ou tout bétement CSV pour répondre à des clients parlant ce langage.

my 2 cents sourire
En réponse à Arnaud MARCELLIN

Re: Retrouver cours suivis par un étudiant

par Arnaud MARCELLIN,
Bon, j'ai compris l'histoire des fonctions à utiliser. Par contre j'apprécierai qu'on m'éclaircisse sur un point : le index initial inclut config.php. dans ce fichier, un fait un unset($CFG), puis on lui passe des paramètres, $CFG n'est pas censé pointer vers null ou un truc du genre ? Et où est déclarée la classe à partir de laquelle $CFG est instanciée. Ou bien une doc indiquant quelles propriétés et méthodes sont accessibles sur cet objet. et plus globalement sur les objets USER, COURSE... Merci sourire
En réponse à Arnaud MARCELLIN

Re: Retrouver cours suivis par un étudiant

par Valery Fremaux,

plusieurs réponses :

$CFG :

on fait un unset pour être sûr qu'il ne reste rien dans cette variable. On ajoute alors ensuite les clefs du config.php et toutes les clefs situées dans la table mdl_config.

Pour les variables $USER, $THEME, $SITE, $COURSE, le mieux est de les imprimer à l'écran en modifiant un view.php quelconque avec la fonction print_object(). J'ai pour ma part capturer cette sortie et enregistré les développés dans quelques fichiers référence quelque part. Il n'est pas sûr qu'ils soient parfaitement constants et qu'il n'y ait pas quelques variations dans les clefs suivant par là où l'on passe dans Moodle, mais dans un cours et une activité, on a pas mal de choses.

Les clefs de config sont à peu près compréhensibles une fois qu'on a un peu bourlingué dans l'architecture (et les écrans de config).

En réponse à Valery Fremaux

Re: Retrouver cours suivis par un étudiant

par Arnaud MARCELLIN,
il aurait été intéressant que les développeurs rédigent une doc à ce sujet :/

Dernière qjuestion : où trouver une version de xref.moodle.org pour la version 1.8 ??

J'essaie d'utiliser la fonction get_coursemodules_in_course, mais apparemment elle n'est disponible qu'avec la version 1.9, et je suis en 1.8... (en tout cas je ne la trouve point dans ma datalib.php)

Merci sourire


En réponse à Arnaud MARCELLIN

Re: Retrouver cours suivis par un étudiant

par Éric Bugnet,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Traducteurs
Salut,

Tu peux toi même générer ce type de site en utilisant phpxref : il analyse ton code et construit le site.
Avantage, si tu documentes toi aussi ton code, tes ajouts seront dans ce site...

Éric