19.1. Télévers des fichiers dans un compte utilisateur

mahara_upload_file

Vous pouvez placer des fichiers dans les comptes des individus via des services web. Cela peut être bénéfique si vous voulez transférer des certificats ou d’autres fichiers d’un autre système directement dans Mahara une fois qu’un apprenant a consenti à ce que vous puissiez le faire.

Le flux de transfert de l’information pris en charge par cet appel de services web est le suivant :

  1. Configurer un jeton de services web, en utilisant la fonction “mahara_upload_file”.

  2. Un apprenant clique sur un bouton dans une application tierce avec laquelle il confirme qu’un fichier peut être placé sur son compte à un moment donné dans le futur, par exemple lorsqu’il obtient son diplôme. Ce bouton est spécialement conçu pour connecter l’apprenant à Mahara (et créer un compte s’il n’en a pas déjà un) et le conduire à la zone Fichiers où il voit une alerte indiquant qu’il recevra une notification lorsque le fichier aura été téléversé sur son compte.

    Note

    Il s’agit du lien le plus basique, qui peut être stylisé comme un bouton :

    <a href="https://domain/artefact/file/index.php?expectfile=1 &externalsource=application">Accepter le transfert de fichiers</a>

    Si vous utilisez SAML, l’URL est plus compliquée car vous passez d’abord par l’IdP et vous devez ensuite être redirigé vers Mahara.

    <a href="https://domain/auth/saml/index.php?idpentityid=IdPinfo &wantsurl=https%3A%2F%2Fdomain%2Fartefact%2Ffile%2Findex.php %3Fexpectfile%3D1%26externalsource%3Dapplication">Accepter le transfert de fichiers</a>

    • domaine est votre URL Mahara

    • application est un identifiant pour restreindre l’origine du téléchargement.

    • IdPinfo est l’URL de votre IdP.

  3. Une entrée dans la base de données est effectuée pour indiquer à Mahara qu’un fichier est attendu à un moment donné.

  4. À un moment donné, le fichier est transféré depuis l’application tierce.

Les fichiers peuvent être envoyés en masse, par exemple à la fin d’une année scolaire, l’envoi de chaque fichier entraînant un appel API. Les fichiers ne peuvent pas être envoyés dans un tableau.

La commande cURL pour envoyer un fichier est :

curl --location --request POST  https://domain/webservice/rest/server.php'  \
--form 'externalsource="identifier"' \ # the external source must match the one of the account
--form 'username="<please_fill_in>"' \ # the username of the account to receive the file
--form 'foldername="<please_fill_in>"' \ # the name of the folder which will hold the file, will be created if it doesn't exist
--form 'title="<please_fill_in>"' \ # the title for the uploaded file
--form 'description="<please_fill_in>"' \ # file description
--form 'tags[0]="tag1"' \ # (optional- this line can be removed if you don’t want to tag the file)
--form 'tags[1]="tag2"' \ # (optional- this line can be removed if you don’t want to tag the file)
--form 'wstoken="token"' \ # web services token you created
--form 'wsfunction="mahara_upload_file"' \
--form 'filetoupload=@"<please_fill_in>"' # the full path to a file