Формирование ссылки на файл из курса

Формирование ссылки на файл из курса

от Алекс Паж -
Количество ответов: 10

Здравствуйте, пытаюсь сформировать ссылки на файлы, которые находятся в курсе. Но столкнулся с проблемой так как не где не могу найти где происходит привязка конкретного файла к секции (секция которая находиться в курсе). В БД moodle нашел таблицу files из нее можно получить названия документов, а вот информации к какой секции прикреплен файл там видимо нет. Таблица files связана с таблицей context и вроде отсюда уже можно проследить с каким курсом она связана, но опять же не с какой секцией.

Версия moodle 2.9.9+

Подскажите, какие таблицы из БД использовать в запросе, чтобы сформировать ссылку на файл и узнать к какой секции файл привязан.

Спасибо.

В ответ на Алекс Паж

Re: Формирование ссылки на файл из курса

от Alexandre Scherbyna -

А что вы подразумеваете под привязкой файла к секции? Приведите пример "привязанного" к секции файла.

В ответ на Alexandre Scherbyna

Re: Формирование ссылки на файл из курса

от Алекс Паж -
Когда создается курс в него можно добавить несколько секций. В эти секции можно добавлять все что угодна файлы, тесты и так далее. Например курс состоит из 3 секций. В секции один находится файл с лабораторными 1, В секции 2 с лабораторными 2. В секции с лабораторными 3. Под привязкой тут имелось ввиду, что каждый файл находиться в своей секции. То есть лабораторная 2 находится в секции 2 и не в какой другой.

Надеюсь понятно обьяснил

В ответ на Алекс Паж

Re: Формирование ссылки на файл из курса

от Alexandre Scherbyna -

Гиперссылка на файл не содержит информации о курсе и секции. В ней присутствует только id элемента курса, в таблице mdl_course_modules. Но в поле course этой таблицы содержится номер курса, а номер секции в этом курсе указан в поле sections таблицы mdl_course_sections. В поле sequence прописано в какой последовательности элементы курса расположены в этой секции.

Т.е. извлекаете из гиперссылки id файла, находите его в поле sequence и видите в этой записи номер курса и номер секции в этом курсе.

В ответ на Alexandre Scherbyna

Re: Формирование ссылки на файл из курса

от Алекс Паж -

Мне нужно наоборот сформировать ссылку, то есть есть курс и секции в нем и в эти секции нужно разместить файлы, каждый в свою секцию. То есть мы открываем определённый курс, выбираем в нем интересующую нас секцию и скачиваем файлы относящиеся к этой секции по сформированной ссылке.

Как я понял в поле secuence находится id, который используется в самой ссылке, то есть из этого уже можно сформировать ссылку. А вот как этот sequence связать с таблицей files, чтобы имя файла из неё получить?

В ответ на Алекс Паж

Re: Формирование ссылки на файл из курса

от Vadim Tabunshchik -
Изображение пользователя Developers
Мне нужно наоборот сформировать ссылку…

Совершенно непонятно, зачем вам формировать какую-то ссылку, если вы собираетесь «открываем определённый курс, выбираем в нем интересующую нас секцию и скачиваем файлы относящиеся к этой секции»?

Если вы средствами Мудл вставите ссылки на файлы в описании к секции, то ссылку Мудл сама сформирует. Зачем что-то ещё формировать вручную?

Вы свою задачу можете сформулировать точнее? Где именно в секции, в каком виде (просто ссылка на файл, встроенная в редактор, или ресурс типа «Файл» в секции) вы собираетесь размещать файлы? И где, кроме курса, вы ещё собираетесь использовать эти ссылки на файлы в секциях?

В ответ на Vadim Tabunshchik

Re: Формирование ссылки на файл из курса

от Алекс Паж -

Формирование ссылки нужно для последующего использования ее в мобильном приложение. В нем будут курсы с секциями полученными из moodle и ссылки на скачивание или открывание файлов курса.

В ответ на Алекс Паж

Re: Формирование ссылки на файл из курса

от Alexandre Scherbyna -
  • ... мы открываем определённый курс, -- см. таблицу mdl_course
  • выбираем в нем интересующую нас секцию  -- см. таблицу mdl_course_sections
  • и скачиваем файлы относящиеся к этой секции по сформированной ссылке -- ссылка такая же, как и на любой элемент курса в вашем сайте. Только его id берете из поля sequence .

Но это пока только для случая, если в вашем курсе присутствуют одни только файлы. Если у вас есть и другие элементы курса (тесты, задания, форумы и пр.), то придется копать дальше:

Является ли этот элемент курса файлом можете посмотреть по номеру  modules в таблице mdl_course_modules. У меня файлы проходят под номером 17. У вас номер может быть другим - см. таблицу mdl_modules.

И так далее.

Можете и до исходного имени файла докопаться, если он вам нужен.

В ответ на Alexandre Scherbyna

Re: Формирование ссылки на файл из курса

от Vadim Tabunshchik -
Изображение пользователя Developers

Александр, номер с sequence не прокатит. Тут перечислены все ресурсы секции, а они могут быть разного типа и ссылки на них формируются разные. Файл, вставленный в описание секции, вы в sequence не найдете.

В ответ на Алекс Паж

Re: Формирование ссылки на файл из курса

от Vadim Tabunshchik -
Изображение пользователя Developers

Чем не устраивает уже существующее мобильное приложение? Это один вопрос. А второй такой: как можно писать своё приложение, не разобравшись в Мудл? Или вы думаете, что в мобильном приложении ссылки генерируются не так, как в веб-браузере?

Изучайте файл /lib/filelib.php, там есть функция file_pluginfile, подробно описывающая создание ссылок на файлы в любой части сайта/курса/модуля/блока и др. компонентов системы.

Например, если ссылка на файл находится именно в описании к секции курса, она будет выглядеть так:

https://URL_сайта/pluginfile.php/45130/course/section/10795/5.jpg

где 45130 - поле `contextid` из таблицы mdl_files

course - `component` из таблицы mdl_files

section - `filearea` там же

10795 - `itemid` там же (в данном случае, так как `filearea` = 'section', `itemid` это `id` = '10795' из таблицы mdl_course_sections)

5.jpg - это понятно, имя файла.

В случае создания ресурса типа «Файл» ссылка будет другая, например: https://URL_сайта/mod/resource/view.php?id=34174

В ответ на Vadim Tabunshchik

Re: Формирование ссылки на файл из курса

от Alexandre Scherbyna -

Действительно, мобильное приложение - очень крутое. Позволяет работать офлайн со многими элементами курса. Даже тесты офлайн можно выполнять, а когда подключение к интернету возобновляется, результаты тестирования передаются на сервер. Но это не единственное мобильное приложение для Moodle. Вам бы и с существующими приложениями следовало бы разобраться прежде, чем строить свой "велосипед".