Где найти функции

Где найти функции

от Антонина ********* -
Количество ответов: 7

Все привет! Уже писала на форуме, заранее благодарна за ответ! скажите пожалуйста, какие функции добавляют модули в курс и ресурсы в конкретный модуль (аналогично тому, как работает функция create_course) и где их можно найти. чтобы можно было передавать парметры этим функциям, и вызывать их в нужно месте???Мне нужно создать курс, потом в него добавить модули, а в них ресурсы. курс у меня получается создать, потом я пробую сама вставить записи в таблицы corse_sections, course_modules  и тд., но рекции ноль... запрос не проходит вообще... подскажите кто знает...

В ответ на Антонина *********

Re: Где найти функции

от Alexandre Scherbyna -

> Мне нужно создать курс, потом в него добавить модули, а в них ресурсы.

Антонина, уже эта фраза свидетельствует о том, что вы еще не изучили как следует Moodle, а уже начинаете его насиловать. Дело ваше, но мне кажется, что вы не тем занимаетесь.

В ответ на Alexandre Scherbyna

Re: Где найти функции

от Антонина ********* -

Какое вам дело то чем мне нужно заниматься??? мне не нужно сидеть и ручками создавать все это хозяйство, мне нужно сразу создать около 300 курсов программным путем!!!! Какая вам разница то зачем и почему мне это нужно??? Да, не сильно изучила Moodle, особенно то как он написан, но и такими знаниями можно это осуществить!!!

В ответ на Антонина *********

Re: Где найти функции

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

>>Да, не сильно изучила Moodle, особенно то как он написан, но и такими знаниями можно это осуществить!!!

Так к чему тогда задавать вопросы на форуме?

И, судя по вашему неадекватному поведению, наврядли вы здесь найдете хоть какую-то поддержку улыбаюсь

В ответ на Антонина *********

Re: Где найти функции

от Alexandre Scherbyna -

Не хотите ручками - изучайте и используйте WSH, например. Или установите модуль, позволяющий создавать курсы в автоматическом режиме, который я вам советовал. А то, что вы задумали, подсилу только тем, кто знает Moodle очень хорошо. Но они врядли пошли бы таким путем.

У меня был один знакомый, который тоже вместо того, чтобы изучать Moodle, пытался его усовершенствовать... улыбаюсь

В ответ на Антонина *********

Re: Где найти функции

от Андрей Чекунов -

Какое вам дело до советов??? Вы же пойдете своим путем...

Правильно было спросить - какими средствами можно автоматизировать создание курсов. Но вы спросили как залезть в код и поломать полсистемыулыбаюсь

Удачи!

PS. Фраза "Толко учусь" пишется через мягкий знак.

В ответ на Андрей Чекунов

Re: Где найти функции

от Alexandre Scherbyna -

Нет, Андрей, код менять она вроде бы не собирается, она хочет напрямую создавать записи в базе данных Moodle. А это покруче будет! Если код не тот, то это, обычно, сразу видно и вернуть прежний легко. А вот если таким "кустарным" способом понаделывать несогласованных записей в 200 таблицах базы данных, то это может прояввиться не сразу, зато потом...

В ответ на Антонина *********

Re: Где найти функции

от Vadim Dvorovenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода

Да не слушайте вы их всех. Нужно, значит нужно. Просто настоящий программист никогда не будет писать то, что уже написано.

Давайте по-порядку. Открываем в браузере страницу курса в режиме редактирования и выясняем, что за вывод страницы отвечает файл view.php из папки course. Можно начинать разбирать код оттуда.

Можно посмотреть html-код полученной страницы и увидеть, что за создание ресурсов и модулей отвечает отвечают блоки:

<option value="javascript:void(0)">Добавить ресурс...</option>
<option value="http://localhost/moodle-dev/course/mod.php?id=2544&amp;section=3&amp;sesskey=V6CyEiEpxP&amp;add=resource&amp;type=text">Текстовая страница</option>
<option value="http://localhost/moodle-dev/course/mod.php?id=2544&amp;section=3&amp;sesskey=V6CyEiEpxP&amp;add=resource&amp;type=html">Веб-страница</option>
<option value="http://localhost/moodle-dev/course/mod.php?id=2544&amp;section=3&amp;sesskey=V6CyEiEpxP&amp;add=resource&amp;type=file">Ссылка на файл или веб-страницу</option>
<option value="http://localhost/moodle-dev/course/mod.php?id=2544&amp;section=3&amp;sesskey=V6CyEiEpxP&amp;add=resource&amp;type=directory">Ссылка на каталог</option>
<option value="http://localhost/moodle-dev/course/mod.php?id=2544&amp;section=3&amp;sesskey=V6CyEiEpxP&amp;add=resource&amp;type=ims">Добавить пакет содержимого IMS</option>
<option value="http://localhost/moodle-dev/course/mod.php?id=2544&amp;section=3&amp;sesskey=V6CyEiEpxP&amp;add=label">Пояснение</option>

То есть все они ведут на страницу /course/mod.php - можно попытаться разобраться в нём. Пытаемся добавить любой ресурс и оказываемся на странице /course/modedit.php

Просматриваем исходный код и обнаруживаем

<form action="modedit.php" ... 
<input name="modulename" type="hidden" value="resource" />
<input name="submitbutton2" value="Сохранить и вернуться к курсу" type="submit" id="id_submitbutton2" /> <input name="submitbutton" value="Сохранить и показать" type="submit" id="id_submitbutton" />

То есть вся форма будет отправлена обратно файлу modedit.php. И при обработке, когда будет проверяться нажатие клавиши будет проверяться что-то со словом "submit".

Берём любимый php редактор (у меня это Netbeans, а у кого-то блокнот) и открываем /course/modedit.php

Тщательно его изучая, обнаруживаем, строчки

$returnfromfunc = $addinstancefunction($fromform);
$returnfromfunc = $updateinstancefunction($fromform);

То есть это и есть вызов функций добавления и обновления экземпляра (instance) модуля.

Ранее находим,

$addinstancefunction    = $fromform->modulename."_add_instance";
$updateinstancefunction = $fromform->modulename."_update_instance";

Это значит, что название функции создания берётся из названия модуля, см. выше - это resource,

Ищем функцию resource_add_instance, находим её в /mod/resource/lib.php

Эта функция простая - она подключает файл /mod/resource/type/$resource->type/resource.class.php, создаёт объект типа resource_$resource->type и вызывает его метод.

Просматриваем файлы resource.class.php для ресурсов разных типов и изучаем. Они все вызывают методы add_instance и update_instance из класса предка в lib.php.

Изучаем их и находим вызовы функций insert_record("resource", $resource) и update_record("resource", $resource) - это системные функции для записи в базу данных. Если разберётесь, что же именно они пишут в базу, то сможете писать также напрямую.

Однако гораздо лучше создать правильный объект $fromform и отдать его функции $fromform->modulename."_add_instance"