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
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
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 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
[/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
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
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.
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
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)
A+
QQchose me dit que qq1 d'autre risque de s'interesser au sujet s'il faut pour cela aller dans un bouchon
Éric
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
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
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).
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
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