Moosh - Ajouter activité scorm avec fichier zip

Moosh - Ajouter activité scorm avec fichier zip

par Jean Hasdenteufel,
Nombre de réponses : 6

Bonjour,


Le souci:

À l'aide de Moosh, je n'arrive pas à lié une activité scorm au fichier zip uploadé.


Le contexte:

Je suis sur linux, et j'utilise un serveur lampp.


Mes tests:

  • Je créé manuellement un cours qui va me servir à stocker les activités que je vais créer avec Moosh. Admettons que l'identifiant de ce cours est le nombre 11, et qu'il y a une section dans ce cours ayant pour identifiant de section le chiffre 1.
  • Création d'activité avec Moosh:
    /opt/lampp/bin/php-7.2.6 /opt/lampp/htdocs/moosh/moosh.php -n -p /opt/lampp/htdocs/moodle/ activity-add --name="mooshScormTest" --section="1" --options='intro="activity name", --forcenewattempt=1'
            scorm 11
    J'ai péché cette commande ici: https://moodle.org/mod/forum/discuss.php?d=368091#p1495239 et dans ce post, on voit toute les options disponibles. Par exemple packagefile et packageurl, en voyant cela je me dit que je peut indiquer le chemin vers le fichier zip qui se trouve sur mon ordinateur de cette façon:
    packagefile="~/Téléchargements/sc1.zip"
    Mais ça ne fonctionne pas.
  • Je trouve qu'on peut uploader un fichier, donc j'essaye:
    sudo /opt/lampp/bin/php-7.2.6 /opt/lampp/htdocs/moosh/moosh.php -n -p /opt/lampp/htdocs/moodle/ file-upload ~/Téléchargements/sc1.zip
    Le fichier est bien "uploadé", en réalité il est copier coller dans le répertoire suivant: /usr/local/moodledata/filedir/ puis renommer avec un hash. Et j'ai vérifier cela en base de données dans la table mdl_files tout est bon.
  • Mais maintenant impossible de lier ce fichier zip à l'activité créée précédemment, j'ai fais pas mal de tests en base de données pour espérer forcer mon activité à utiliser mon fichier zip (dans l'espoir de comprendre quelques chose), ou bien passer l'identifiant "itemid", le "contenthash" ou le "pathnamehash"  du fichier dans l'option packagefile et packageurl, mais je n'ai pas trouvé.

Merci d'avance.
Moyenne des évaluations  -
En réponse à Jean Hasdenteufel

Re: Moosh - Ajouter activité scorm avec fichier zip

par Patrick Lemaire,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Salut Jean,

Je pense que tu gagnerais ton temps à poser directement la question à Tomasz. Il indique qu'il faut utiliser les autres options liées au plugin mais j'avoue que je ne vois pas comment extrapoler celle liée au fichier.

Mon hypothèse est qu'il faut uploader ce fichier comme tu l'as fait et ensuite indiquer à la commande l'id ou le chemin dudit fichier mais sous quelle forme / syntaxe ? J'avoue ne pas savoir comment procéder avec les maigres instructions.

Cette réponse permettrait d'envisager plein d'autres actions liées à l'attachement d'un fichier. J'imagine que la syntaxe sera toujours plus ou moins la même.

Tiens nous au courant !

À bientôt,
Patrick

Moyenne des évaluations Utile (1)
En réponse à Patrick Lemaire

Re: Moosh - Ajouter activité scorm avec fichier zip

par Jean Hasdenteufel,

Aller je vais tenter de joindre cet homme aux lunettes de soleil, je vous tiens au courant.

En réponse à Patrick Lemaire

Re: Moosh - Ajouter activité scorm avec fichier zip

par Jean Hasdenteufel,

Bon, personne ne m'a répondu sur le forum anglais ici: https://moodle.org/mod/forum/discuss.php?d=385627 Mais en attendant j'ai bien cherché dans le code de Moosh et Moodle, et j'ai trouvé le problème.


La solution est dans la syntaxe des options:

/opt/lampp/bin/php-7.2.6 /opt/lampp/htdocs/moosh/moosh.php -n -p /opt/lampp/htdocs/moodle/ --verbose activity-add --name="mooshScormTest" --section="1" --options='--packagefilepath=/home/*****/Téléchargements/sc1.zip intro=activity name --forcenewattempt=1' scorm 11


Et pour ceux que ça intéresse, mon cheminement, car dans cette histoire j'ai souffert xD, alors qu'au final tout était simple ^^.


Recherches:

  • Quand la commande activity-add de Moosh est utilisée pour créer une ressource scorm, elle va utiliser du code de Moodle ici: https://github.com/moodle/moodle/blob/14cdf51189f059373bbff381147687ae6ca64494/mod/scorm/tests/generator/lib.php#L38


    Et dedans on voit un gros tableau qui contient toutes les options lors d'une création d'activité, c'est aussi celles de Moosh dans la commande activity-add, et ces options ne gèrent pas le fichier zip. Mais plus bas on voit cela:

    if (empty($record['packagefilepath'])) {
         $record['packagefilepath'] = $CFG->dirroot.'/mod/scorm/tests/packages/singlescobasic.zip';
    }
    

    Et le fichier singlescobasic.zip je sais très bien ce que c'est, c'est ce foutu jeu de golf que Moodle met par défaut. Donc j'interprète que packagefilepath est une "option" un peu caché à mon goût.


Tests:

  • Donc je regarde dans la base de données un de mes fichiers zip qui fonctionne pour un autre package, je prends son hash, et je rajoute cette ligne de code (au dessus du précédent bout de code que je vous ai montré):

    $record['packagefilepath'] = '/usr/local/moodledata/filedir/b8/64/b8646913bf7b234370475a14814c6ca87bcec6c0';

    Et quand je relance la commande activity-add sans rien rajouter, le bon fichier zip est chargé.

  • J'ai essayé la commande activity-add en rajoutant l'option packagefilepath:
    /opt/lampp/bin/php-7.2.6 /opt/lampp/htdocs/moosh/moosh.php -n -p /opt/lampp/htdocs/moodle/ --verbose activity-add --name="mooshScormTest" --section="1" --options='packagefilepath=/usr/local/moodledata/filedir/b8/64/b8646913bf7b234370475a14814c6ca87bcec6c0, intro="activity name", --forcenewattempt=1' scorm 11
    

    Mais le tableau qui contient les options venant de Moosh a des erreurs, ma valeur est stocké dans une clée vide.


Nouvelles recherches:
  • Je fini par remonter la pile d'appel de fonctions une par une à la recherche d'un code qui modifierait mon tableau d'options. Au final je tombe dans le code de Moosh qui initialise ces options, ici: https://github.com/tmuras/moosh/blob/45c16e6a042b2d6d4b3c262fa84d0d061fea1927/Moosh/Command/Moodle26/Activity/ActivityAdd.php#L65
    Et à la ligne 66 on voit une expression régulière qui parse les options, et du coup je me rend enfin compte de la syntaxe à respecter dans les options, à savoir la suivante:
    /opt/lampp/bin/php-7.2.6 /opt/lampp/htdocs/moosh/moosh.php -n -p /opt/lampp/htdocs/moodle/ --verbose activity-add --name="mooshScormTest" --section="1" --options='--packagefilepath=/usr/local/moodledata/filedir/b8/64/b8646913bf7b234370475a14814c6ca87bcec6c0 intro=activity name --forcenewattempt=1' scorm 11
    Deux traits d'union devant le nom de l'option et pas de virgule entre les options.

Moralité ?
  • Mieux lire les posts du patron de Moosh: https://moodle.org/mod/forum/discuss.php?d=368091#p1495239
    Car il avait indiqué ceci:
    moosh activity-add -n scorm1 -o '--intro=my intro ABC --forcenewattempt=1' scorm 2
    
    Et même si c'était ambigu pour les espaces de la phrase my intro ABC c'était compréhensible. Par contre l'option packagefilepath ça c'était compliqué à trouver, et à cause de ça j'en ai perdu mon latin pour écrire les options.
Moyenne des évaluations Utile (5)
En réponse à Jean Hasdenteufel

Re: Moosh - Ajouter activité scorm avec fichier zip

par Jean Hasdenteufel,

On peut donc tout faire en une seule commande, et on peut utiliser des fichiers qui ne sont pas uploadé dans Moodle, par exemple:


/opt/lampp/bin/php-7.2.6 /opt/lampp/htdocs/moosh/moosh.php -n -p /opt/lampp/htdocs/moodle/ --verbose activity-add --name="mooshScormTest" --section="1" --options='--packagefilepath=/home/*****/Téléchargements/sc1.zip intro=activity name --forcenewattempt=1' scorm 11

D'ailleurs c'est je pense le comportement normal, car je crois que le fichier qu'on passe en options est en suite uploadé.

Moyenne des évaluations Utile (1)
En réponse à Jean Hasdenteufel

Re: Moosh - Ajouter activité scorm avec fichier zip

par Patrick Lemaire,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Merci beaucoup Jean pour ces investigations et leur restitution détaillée !

Je pense que cela pourra aider plus d'un Moodleur par ici clin d’œil Une contribution très utile !

À bientôt,
Patrick

En réponse à Jean Hasdenteufel

Re: Moosh - Ajouter activité scorm avec fichier zip

par Jean Hasdenteufel,

Merci pour le retour :)


Et j'en profite pour corriger une petite erreur dans les commandes que j'indique comme bonnes au dessus. J'ai oublié les deux traits d'unions avant l'option intro.

/opt/lampp/bin/php-7.2.6 /opt/lampp/htdocs/moosh/moosh.php -n -p /opt/lampp/htdocs/moodle/ --verbose activity-add --name="mooshScormTest" --section="1" --options='--packagefilepath=/home/*****/Téléchargements/sc1.zip --intro=activity name --forcenewattempt=1' scorm 11