2017-03-23 1 views
0

Dans une forme Moodle j'effectuer un téléchargement de fichier en utilisant l'élément filemanager:Moodle File API: plusieurs lignes?

$mform->addElement('filemanager', 'attachment',get_string('displayedcontent', 'block_helloworld'), null, $filemanageropts); 

Une fois le formulaire validé, quand j'enregistrer mon exemple dans la base de données, j'enregistre également le fichier téléchargé en utilisant la fonction suivante:

file_save_draft_area_files($form_submitted_data->attachment, $context->id, 'block_helloworld', 'attachment', 
    $form_submitted_data->attachment, array('subdirs' => 0, 'maxbytes' => 500000, 'maxfiles' => 1)); 

Cela fonctionne très bien mais quand je regarde à la table DB mdl_files, j'ai vu que pour mon dossier il y a 4 lignes:

component  fileare  itemid filepath filename 
block_helloworld attachment 706783489 / . 
block_helloworld attachment 706783489 / test5.pdf 
user draft 706783489 / . 
user draft 706783489 / test5.pdf 

Il y a 2 lignes pour mon fichier téléchargé dans mon composant block_helloworld et dans le composant user. Une ligne a un nom de fichier mais pas l'autre!

Cela semble étrange. Est-ce normal? Lorsque j'effectue une suppression de fichier, comment supprimer tous ces fichiers?

Note: J'utilise moodle v3.0.6

+0

Quelle version de Moodle utilisez-vous? –

Répondre

0

Pour autant que je me souviens, ce comportement est normal. J'ai aussi eu ce problème, mais lorsque vous vérifiez (comme faire un téléchargement de fichier dans un cours), vous remarquerez qu'il y a aussi 2 lignes. Je ne sais pas pourquoi, mais pour moi, il était un comportement normal

0

Les 4 entrées sont:

  • Le dossier que votre fichier est dans
  • Le fichier lui-même
  • Le dossier que le projet de version du fichier est stocké dans tout le formulaire est en cours d'édition
  • le projet de fichier alors que la forme est en cours d'édition

le projet fi les seront nettoyés automatiquement après un jour ou deux.

+0

ok, quand j'implémente la page de suppression, je dois seulement enlever les 2 lignes pour mon composant 'block_helloworld' (et ne se soucie pas des rangées de composant' user')? –

+0

Si c'est dans le contexte du bloc et que vous supprimez le bloc, alors Moodle devrait nettoyer automatiquement. Si ce n'est pas le cas, utilisez simplement l'API de fichiers pour supprimer la zone - vous ne devriez jamais avoir besoin d'accéder directement à mdl_files. – davosmith

+0

bien sûr, je vais seulement effectuer la suppression de fichiers en utilisant l'API de fichier intégré, mais quand j'effectue la suppression, j'ai seulement la ligne avec le nom de fichier qui est supprimé. La ligne où filename = '.' est toujours dans les fichiers mdl_files. Est-ce normal ? Devrais-je ajouter du code en utilisant l'API de fichier pour supprimer cette ligne aussi? –