2017-03-23 4 views
0

In einer Moodle Form führe ich eine Datei-Upload das filemanager Element mit:Moodle File API: mehrere Zeilen?

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

Sobald das Formular validiert ist, wenn ich meine Instanz in der Datenbank aufnehmen, ich spare auch die hochgeladene Datei die folgende Funktion:

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)); 

Dies funktioniert gut, aber wenn ich einen Blick auf die DB-Tabelle nehmen mdl_files, ich sah, dass 4 Zeilen für meine Datei gibt es:

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

Es gibt zwei Zeilen für meine hochgeladene Datei in meiner Komponente block_helloworld und in der Komponente user. Eine Zeile hat einen Dateinamen, aber nicht den anderen!

Das klingt seltsam. Ist das normal? Wenn ich Dateien lösche, wie lösche ich all diese Dateien?

Anmerkung: Ich moodle v3.0.6 bin mit

+0

Welche Moodle-Version verwenden Sie? –

Antwort

0

Soweit ich mich erinnere, ist das ein normales Verhalten. Ich hatte dieses Problem auch, aber wenn Sie die Überprüfung überprüfen (wie das Hochladen einer Datei in einen Kurs), werden Sie feststellen, dass es auch 2 Zeilen gibt. Nicht sicher, warum, aber für mich war es ein normales Verhalten

0

Die 4 Einträge sind:

  • Der Ordner, der die Datei in
  • ist
  • Die Datei selbst
  • Der Ordner, der Entwurf des Datei wird gespeichert in während die Form
  • der Entwurf der Datei, während das Formular bearbeitet wird

der Entwurf fi bearbeitet wird Die Dateien werden nach einem Tag automatisch gelöscht.

+0

ok, wenn ich die Löschseite implementiere, muss ich nur die 2 Zeilen für meine Komponente 'block_helloworld' entfernen (und kümmern sich nicht um die' user' Komponentenzeilen)? –

+0

Wenn es im Blockkontext ist und Sie den Block löschen, sollte Moodle automatisch bereinigen. Wenn nicht, verwenden Sie einfach die Datei-API, um den Bereich zu löschen - Sie sollten nie direkt auf mdl_files zugreifen müssen. – davosmith

+0

sicher werde ich nur Datei löschen mit der eingebauten Datei-API, aber wenn ich den Löschvorgang ausführen, ich habe nur die Zeile mit dem Dateinamen, der gelöscht wird. Die Zeile mit Dateiname = '.' ist immer noch in den mdl_files. Ist das normal ? Sollte ich Code hinzufügen, der die Datei-API verwendet, um diese Zeile ebenfalls zu entfernen? –