Все привет! Уже писала на форуме, заранее благодарна за ответ! скажите пожалуйста, какие функции добавляют модули в курс и ресурсы в конкретный модуль (аналогично тому, как работает функция create_course) и где их можно найти. чтобы можно было передавать парметры этим функциям, и вызывать их в нужно месте???Мне нужно создать курс, потом в него добавить модули, а в них ресурсы. курс у меня получается создать, потом я пробую сама вставить записи в таблицы corse_sections, course_modules и тд., но рекции ноль... запрос не проходит вообще... подскажите кто знает...
> Мне нужно создать курс, потом в него добавить модули, а в них ресурсы.
Антонина, уже эта фраза свидетельствует о том, что вы еще не изучили как следует Moodle, а уже начинаете его насиловать. Дело ваше, но мне кажется, что вы не тем занимаетесь.
Какое вам дело то чем мне нужно заниматься??? мне не нужно сидеть и ручками создавать все это хозяйство, мне нужно сразу создать около 300 курсов программным путем!!!! Какая вам разница то зачем и почему мне это нужно??? Да, не сильно изучила Moodle, особенно то как он написан, но и такими знаниями можно это осуществить!!!
>>Да, не сильно изучила Moodle, особенно то как он написан, но и такими знаниями можно это осуществить!!!
Так к чему тогда задавать вопросы на форуме?
И, судя по вашему неадекватному поведению, наврядли вы здесь найдете хоть какую-то поддержку
Не хотите ручками - изучайте и используйте WSH, например. Или установите модуль, позволяющий создавать курсы в автоматическом режиме, который я вам советовал. А то, что вы задумали, подсилу только тем, кто знает Moodle очень хорошо. Но они врядли пошли бы таким путем.
У меня был один знакомый, который тоже вместо того, чтобы изучать Moodle, пытался его усовершенствовать...
Какое вам дело до советов??? Вы же пойдете своим путем...
Правильно было спросить - какими средствами можно автоматизировать создание курсов. Но вы спросили как залезть в код и поломать полсистемы
Удачи!
PS. Фраза "Толко учусь" пишется через мягкий знак.
Нет, Андрей, код менять она вроде бы не собирается, она хочет напрямую создавать записи в базе данных Moodle. А это покруче будет! Если код не тот, то это, обычно, сразу видно и вернуть прежний легко. А вот если таким "кустарным" способом понаделывать несогласованных записей в 200 таблицах базы данных, то это может прояввиться не сразу, зато потом...
Да не слушайте вы их всех. Нужно, значит нужно. Просто настоящий программист никогда не будет писать то, что уже написано.
Давайте по-порядку. Открываем в браузере страницу курса в режиме редактирования и выясняем, что за вывод страницы отвечает файл view.php из папки course. Можно начинать разбирать код оттуда.
Можно посмотреть html-код полученной страницы и увидеть, что за создание ресурсов и модулей отвечает отвечают блоки:
<option value="javascript:void(0)">Добавить ресурс...</option>
<option value="http://localhost/moodle-dev/course/mod.php?id=2544&section=3&sesskey=V6CyEiEpxP&add=resource&type=text">Текстовая страница</option>
<option value="http://localhost/moodle-dev/course/mod.php?id=2544&section=3&sesskey=V6CyEiEpxP&add=resource&type=html">Веб-страница</option>
<option value="http://localhost/moodle-dev/course/mod.php?id=2544&section=3&sesskey=V6CyEiEpxP&add=resource&type=file">Ссылка на файл или веб-страницу</option>
<option value="http://localhost/moodle-dev/course/mod.php?id=2544&section=3&sesskey=V6CyEiEpxP&add=resource&type=directory">Ссылка на каталог</option>
<option value="http://localhost/moodle-dev/course/mod.php?id=2544&section=3&sesskey=V6CyEiEpxP&add=resource&type=ims">Добавить пакет содержимого IMS</option>
<option value="http://localhost/moodle-dev/course/mod.php?id=2544&section=3&sesskey=V6CyEiEpxP&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"