Разработка:Создание плагина — различия между версиями
Yumeneco (обсуждение | вклад) (→Обновление таблиц в БД для справочников) |
Yumeneco (обсуждение | вклад) (→Обновление таблиц в БД для справочников) |
||
Строка 53: | Строка 53: | ||
Организация обновления таблиц с помощью классов XMLDBTable и XMLDBField: | Организация обновления таблиц с помощью классов XMLDBTable и XMLDBField: | ||
*Обновляем исходный файл install.xml внося необходимые изменения при помощи XMLDB-редактора; | *Обновляем исходный файл install.xml внося необходимые изменения при помощи XMLDB-редактора; | ||
− | * | + | *В собственном методе update() плагина записываем код обновления таблицы. Выглядеть он будет приблизительно так: |
− | + | ||
+ | // Для обновления таблиц следует использовать функции MOODLE из библиотеки "/lib/ddllib.php" | ||
+ | global $CFG; | ||
+ | require_once($CFG->libdir.'/ddllib.php'); | ||
+ | // Модификация базы данных через XMLDB | ||
+ | $result = true; | ||
+ | if ($result && $oldversion < ХХХХХХХХ00) //ХХХХХХХХ00 - формат кода новой версии | ||
+ | { | ||
+ | $table = new XMLDBTable('table_name');//загружаем таблицу для изменения | ||
+ | $field = new XMLDBField('table_field');//загружаем методы для работы с полем table_field таблицы table_name | ||
+ | //установим новые атрибуты этого поля | ||
+ | $field->setAttributes(XMLDB_TYPE_TEXT, 'small', null, null, null, null, null, null, 'visible'); | ||
+ | $result = $result && add_field($table, $field);применяем изменения и возвращаем результат | ||
+ | } | ||
+ | |||
+ | Примечиние: В Moodle XMLDB-редактор самостоятельно генерирует php-код внесенных изминений, и его можно просто скопировать в метод update() плагина. | ||
=== Удаление таблиц в БД для справочников === | === Удаление таблиц в БД для справочников === |
Версия 12:11, 20 марта 2009
Содержание
- 1 Основные шаги по созданию нового плагина из примера
- 2 Основные возможности, которые можно использовать в плагинах
- 3 Права доступа
- 4 Установка, обновление и удаление плагинов
- 5 Запуск заданий по расписанию
- 6 Одноразовое задание для выполнения в фоновом режиме
- 7 События
- 8 Обращения к объектам Moodle
Основные шаги по созданию нового плагина из примера
- Выберите тип создаваемого плагина
- Выберите имя для создаваемого плагина. Имя может состоять из 1-20 латинских букв (без цифры и знаков подчеркивания).
- Создайте папку по имени плагина в папке, соответствующей типу плагина
- Скопируйте в эту папку файлы примеры плагина того же типа (начинается на exempl), но проследите, чтоб в папку не попали файлы .svn, которые находятся в каждой папке проекта.
- Отредактируйте файл init.php. Минимальные правки: имя класса, версия, код плагина, зависимости , прослушиваемые события, минимальный срок между запусками крона в плагине (если нужен крон), другие упоминания старого имени плагина.
- Отредактируйте языковые файлы.
- Для плагина типа im - отредактируйте файл lib.php, убрав оттуда упоминания старого имени плагина. Остальные файлы можно удалить или использовать в качестве заготовок страниц.
Основные возможности, которые можно использовать в плагинах
- Обращение к плагину
- Получение пути к плагину или файлу внутри него
- Получение url плагина или файла внутри него
- Перевод интерфейса
- Шаблон оформления и элементы навигации
- Вывод блока в интерфейсе FDO
- Вывод текста в основной блок в Moodle
Права доступа
Установка, обновление и удаление плагинов
Для реализации собственных методов установки, обновления и удаления плагинов, необходимо разместить соответствующий код в методах install(), upgrade($oldversion) и uninstall() плагина. В метод upgrade($oldversion) передается номер старой версии плагина, внутри метода обновления должен располагаться ряд условий вида if ($oldversion < 2008100700), расположенных в порядке возрастания версий. При обновлении, условия срабатывают по очереди, выполняя постепенное обновление структуры БД и других данных со старой версии до текущей.
Установка, обновление и удаление плагинов выполняется через соответствующие методы класса dof_control:
- Установка плагина происходит через метод $DOF->plugin_install($type,$code);
- Проверяет, нет ли уже записи в block_dof_plugins об этом плагине, если есть - ошибка
- Проверяет совместимость интерфейса плагина с интерфесом системы.
- Вызывает собственный метод install() плагина
- Регистрирует плагин как слушателя событий
- Регистрирует плагин в block_dof_plugins
- Обновление $DOF->plugin_upgrade($type,$code);
- Проверяет совместимость интерфейса плагина с интерфесом системы.
- Вызывает собственный метод upgrade($oldver) плагина, передавая ему в качестве параметров старую версию плагина из БД
- Обновляет информацию в БД о зарегистрированном плагине
- Удаление $DOF->plugin_uninstall($type,$code);
- Проверяет, не осталось ли плагинов, зависящих от удаляемого плагина
- Удаляем плагин из списка "слушателей" событий
- Выполняет собственный метод плагина удаления uninstall(), который должен удалить таблицу из БД
- Удаляем плагин из списка зарегистрированных плагинов
Создание таблиц в БД для справочников
В родительском классе dof_storage уже реализован стандартный метод install(), использующий файл db/install.xml плагина. Создание файла install.xml:
- Из закладки "Разное" администраторского блока заходим в XMLDB-редактор;
- Находим среди предложенного списка нужную нам папку и если файл install.xml еще не создан, то создаем его. Далее загружаем файл и идем его редактировать;
- Перед вами появится страница, где вы можете создать и отредактировать таблицы, а также просмотреть исходный xml-код, сгенерировать его в php или sql коды. Делаем то, что нам необходимо.
- Возвращаемся назад к списку и сохраняем наш файл.
Обновление таблиц в БД для справочников
Организация обновления таблиц с помощью классов XMLDBTable и XMLDBField:
- Обновляем исходный файл install.xml внося необходимые изменения при помощи XMLDB-редактора;
- В собственном методе update() плагина записываем код обновления таблицы. Выглядеть он будет приблизительно так:
// Для обновления таблиц следует использовать функции MOODLE из библиотеки "/lib/ddllib.php" global $CFG; require_once($CFG->libdir.'/ddllib.php'); // Модификация базы данных через XMLDB $result = true; if ($result && $oldversion < ХХХХХХХХ00) //ХХХХХХХХ00 - формат кода новой версии { $table = new XMLDBTable('table_name');//загружаем таблицу для изменения $field = new XMLDBField('table_field');//загружаем методы для работы с полем table_field таблицы table_name //установим новые атрибуты этого поля $field->setAttributes(XMLDB_TYPE_TEXT, 'small', null, null, null, null, null, null, 'visible'); $result = $result && add_field($table, $field);применяем изменения и возвращаем результат }
Примечиние: В Moodle XMLDB-редактор самостоятельно генерирует php-код внесенных изминений, и его можно просто скопировать в метод update() плагина.
Удаление таблиц в БД для справочников
В родительском классе dof_storage уже реализован стандартный метод uninstall(), использующий файл db/install.xml плагина.