Obtener información de un fichero subido a moodle

Obtener información de un fichero subido a moodle

de David Xdo -
Número de respuestas: 6

Buenas

A ver si alguien me puede echar una mano.
Estoy desarrollando un modulo para moodle 2.0, que en resumen, dado un archivo ya subido a moodle, el usuario lo selecciona y mediante un formulario añada información extra de ese archivo. (idioma, tema del que trata, etc)
Es decir, añadir metadatos.

El código que es el siguiente:

class mod_ejemplo_mod_form extends moodleform_mod {

public function definition() { 

       $mform = $this->_form;

$mform->addElement('header', 'general1', get_string('general', 'form'));

$mform->addElement('text', 'name', get_string('lomesname', 'lomes'), array('size'=>'64'));
if (!empty($CFG->formatstringstriptags)) {
$mform->setType('name', PARAM_TEXT);
} else {
$mform->setType('name', PARAM_CLEAN);
}
$mform->addRule('name', null, 'required', null, 'client');
$mform->addRule('name', get_string('maximumchars', '', 255), 'maxlength', 255, 'client');
$mform->addHelpButton('name', 'lomesname', 'lomes');

$this->add_intro_editor();
//---Hasta aquí es el código común a cualquier módulo---


//Aquí el usuario selecciona el fichero
$filemanager_options = array();
// 3 == FILE_EXTERNAL & FILE_INTERNAL
// These two constant names are defined in repository/lib.php
$filemanager_options['return_types'] = 3;
$filemanager_options['accepted_types'] = '*';
$filemanager_options['maxbytes'] = 0;
$filemanager_options['maxfiles'] = -1;
$filemanager_options['mainfile'] = true;
$mform->addElement('filepicker', 'userfile', get_string('file'), null, $filemanager_options);

$content = $mform->get_file_content('userfile'); //No funciona!

 

El problema que tengo es que get_file_content() no funciona al no ser un método de la clase MoodleQuickForm.

La cuestión es, ¿conoceís alguna función o método que pueda utilizar para que dado un archivo subido a moodle pueda obtener "algo" del mismo para poder relacionarlo con la información extra que quiero añadir?

Gracias.

Promedio de valoraciones: -
En respuesta a David Xdo

Re: Obtener información de un fichero subido a moodle

de David Xdo -

He conseguido hacer funcionar get_file_content() y simplemente devuelve el contenido.

Alguien que conozca alguna funcion, método o alguna indicación a seguir para que a partir de un archivo puedas obtener su id, url o algo del mismo?

La verdad es que estoy atascado en este punto.

Gracias.

En respuesta a David Xdo

Re: Obtener información de un fichero subido a moodle

de David Hernández -

Hola David,

Muchas gracias por compartir la solución al problema inicial sonrisa

Con respecto al segundo, quizá esto te sirva.

Saludos

En respuesta a David Hernández

Re: Obtener información de un fichero subido a moodle

de David Xdo -

Gracias, me es util para saber claramente como guarda moodle los archivos, pero como consigo el nombre del fichero??

Lo que quiero es poner un selector de archivos para el usuario y a partir de ahí agregar la información extra al fichero.

Gracias, un saludo.

En respuesta a David Xdo

Re: Obtener información de un fichero subido a moodle

de David Hernández -

Hola David,

Lo del nombre de los archivos, como se describe en el post referido, es un "hash" ubicado en la tabla "files", campo "filename".

El detalle es que como el mismo archivo se puede usar en varios contextos, pues hay que ubicarlo dependiendo de éste.

Es más o menos lo que dice Xavier.

Y bueno, no estoy seguro de que te vaya a servir, pues desconozco el nivel de avance que se tenga, pero existe un esfuerzo de desarrollo con un objetivo parecido al que pretendes.

Igual y el código que se tiene hasta ahora te resulta de utilidad.

Aquí la referencia.

Ojalá y algo de lo que he puesto te sirva sacar lengua

Saludos

En respuesta a David Hernández

Re: Obtener información de un fichero subido a moodle

de David Xdo -
Gracias por tu ayuda! En el enlace que me has dejado lo que hacen es añadir en el filepicker, cuando vas a subir un archivo, unos campos extra para rellenar como metadatos. Pero no veo en el código como sacan el nombre del fichero. Yo lo que pretendo es, el usuario selecciona un fichero ya subido a moodle, añade los metadatos con un formulario y este se almacena en una nueva tabla de la base de datos.Y lo que no consigo es la manera de relacionar el archivo con los datos que se añaden. Habrá que seguir dándole vueltas.