2016-05-31 1 views
0

Я пытаюсь создать кнопку в курсе moodle, чтобы позволить студентам загружать все ресурсы, чем можно загрузить.Сделайте кнопку «Скачайте все файлы» с курса moodle

Любые подсказки?

Я проверяю de mdl_course и имею идентификатор курса. Затем я перехожу к mdl_resource, где я нахожу ресурс, который я просто добавляю в курс. Затем я перехожу к mdl_files, и я нахожу файл, который я просто загружаю.

Но не знаю, как сделать кнопку, которая находит все файлы с курса. Любые подсказки?

Проблема в том, что база данных moodle не ясна. Например: у меня есть идентификатор курса, и поиск в mdl_resources я нахожу ресурсы с помощью этого course_id. Но в mdl_files не используется идентификатор курса, он использует context_id, соответствующий mdl_context, и имеет экземпляр instance_id, который не соответствует идентификатору курса. Я заблокирован.

Я использую Moodle 2.7 над Centos.

+0

[Что вы пытались до сих пор?] (Http://whathaveyoutried.com) Пожалуйста, отредактируйте свой вопрос, чтобы показать [mcve] кода , с которым у вас возникли проблемы, тогда мы можем попытаться help с конкретной проблемой. Вы также должны прочитать [ask]. –

+0

@TobySpeight Проблема в том, что база данных moodle не ясна. Например: у меня есть идентификатор курса, и поиск в mdl_resources я нахожу ресурсы с помощью этого course_id. Но в mdl_files не используется идентификатор курса, он использует context_id, соответствующий mdl_context, и имеет экземпляр instance_id, который не соответствует идентификатору курса. Я заблокирован. –

ответ

1

В Moodle файлы хранятся в файловой системе, в области, определяемой переменной $ CFG-> dataroot, как вы, вероятно, знаете. В таблице «файлы» точно указано, где хранятся каждый файл, каково исходное имя файла и другие свойства. Он также определяет, к какому компоненту принадлежит файл.

Когда файл принадлежит курсу, компонент (т. Е. Поле таблицы) является «курсом». Чтобы точно определить, к какому курсу принадлежит файл, вам необходимо получить содержимое поля «contextid» и перейти в «контекст» таблицы и использовать его как ключ (т. Е. Идентификатор строки). Затем поле «instanceid» является вашим идентификатором курса.

Это может быть сделано с помощью одного запроса MySQL.
Например, если вы хотите, чтобы найти все файлы, относящиеся к курсу с ID = 657, вы можете написать:

SELECT * FROM moodle.mdl_files 
INNER JOIN moodle.mdl_context 
INNER JOIN moodle.mdl_course 
ON moodle.mdl_files.contextid = moodle.mdl_context.id 
AND moodle.mdl_context.instanceid= moodle.mdl_course.id 
WHERE moodle.mdl_course.id=657 AND moodle.mdl_files.component = 'course'; 

при условии, что база данных называется «Мудли» и что все ваши таблицы с префиксом «mdl_ ».