bonjour
lors de creation d'un instance de mon module ,il ya un fichier descriptif telechargé par l'enseignant .
mon but est d'affichier ce fichier sur la page view.php à coté du nom de l'instance du module donc pour ca j'ai fais les etapes suivants:
1. dans mod_form.php
apres la definition du class
$mform->addElement('filemanager', 'files', null, null, $options);
function data_preprocessing(&$default_values) {
if ($this->current->instance) {
// editing existing instance - copy existing files into draft area
$draftitemid = file_get_submitted_draft_itemid('files');
file_prepare_draft_area($draftitemid, $this->context->id, 'mod_memory', 'diplom', 0, array('subdirs'=>0, 'maxbytes' => $this->course->maxbytes, 'maxfiles' => 10));
file_save_draft_area_files($draftitemid, $this->context->id,'mod_memory', 'diplom',0, array('subdirs'=>0, 'maxbytes' => $this->course->maxbytes, 'maxfiles' => 10));
$fileinfo = file_get_draft_area_info($draftitemid);
}
$default_values['files'] = $draftitemid;
}
function validation($data, $files) {
global $CFG;
$errors=array();
$errors = parent::validation($data,$files);
return $errors;
}
//--------------dans lib.php-------------------------
function memory_pluginfile($course,
$cm,
$context,
$filearea,
$args,
$forcedownload,
array $options=array()) {
global $DB, $CFG;
//-----------------------------------------------------------
if ($context->contextlevel != CONTEXT_MODULE) {
return false;
}
//-----------------------------------------------------------
require_login($course, true, $cm);
if(!has_capability('mod/memory:view', $context)){
return false;
}
//-----------------------------------------------------------
if($filearea!=='diplom'){
return false;}
//--------------------------------------------------------------
//removed the first element from array and return the value of element removed
// $args extra arguments (itemid, path)
$smid = (int) array_shift($args);
//--------------------------File------------------------------------
$relativepath = implode('/', $args);//$URL=$CFG->wwwroot/pluginfile.php/$forumcontextid/mod_forum/post/$postid/image.jpg
$fullpath = "/{$context->id}/mod_memory/$filearea/$swid/$relativepath";
//--------------------------------------------------------------------------------------
$fs = get_file_storage();
if (!($file = $fs->get_file_by_hash(sha1($fullpath))) || $file->is_directory()) {
return false; // return file dans files tables si on donne la fullpath
}
//--------------------------------------------------------------------------------
send_stored_file($file, 0, 0, true);
}
//-dans view.php-----------------------------//
$fs=get_file_storage();
$files=$fs->get_area_files($context->id, 'mod_memory','diplom');
foreach($files as $file){
$file=$fs->get_filename();
$url = $CFG->wwwroot.'/pluginfile.php/$context->id/mod_memory/diplom';
$path = $url.$file->get_filepath().$file->get_itemid().'/'.$filename;
echo html_writer::link($path, $filename);
le probleme j'arrive pas à afficher le fichier pourquoi?
est ce qu'il ya quelque chose qui m'echappe,je lis bcp sur le file API mais je trouve pas la reponse
merci pour votre aide