Ключом для репликации пользовательских селекторов admin/roles/admins.php
является создание двух классов (по одному на «столбец списка пользователей»), расширяющих user_selector_base
(в admins.php вы найдете примеры core_role_admins_existing_selector
и core_role_admins_potential_selector
).).
По сути, вам необходимо расширить базовый класс user_selector_base
и реализовать метод find_users
по своему усмотрению (в зависимости от типа пользователя, которого вы хотите отобразить в левом и правом столбцах).
Ответственность за этот метод заключается в создании запроса SQL, который выбирает пользователей из таблицы user
по запросу $search
(поскольку селектор связан с поисковыми входами), но кроме этого остальная часть чеговы выполняете с условиями ГДЕ, зависит от того, что вы хотите показать в своих списках (в примере admins.php вы обнаружите, что они пытаются показать фильтрацию администраторов сайта по идентификаторам администраторов сайта).
Этот селектор пользователейкласс может быть напечатан после создания экземпляра и после обычного $OUTPUT->header()
путем вызова $selector->display();
.
Обратите внимание, что остальная часть логики admins.php
«контролируется» независимо от селекторов пользователя, что означает, что пользовательСелекторы сами по себе не несут ответственности за логику, которая переносит пользователей из одного столбца в другой, они просто печатают пользователей и позволяют восстановить информацию о том, какие из них были выбраны.
Если вы обратите внимание на admins.php
вы можете заметить, что первоначальный разработчик добавил некоторые входные данные (и подтверждениеps) + необязательная выборка параметров, которые в конечном итоге позаботятся о добавлении / удалении пользователей из списка администраторов.
Я в значительной степени разрабатываю локальный плагин, в котором хочу массово выдавать сертификаты истечения срока действия для разных пользователей.данный идентификатор курса.
В этом случае вам, возможно, придется создать запрос для одного класса выбора столбца / пользователя с WHERE / JOIN, который учитывает пользователей с сертификатами с истекшим сроком действия, а другой - выбор столбца / пользователяУчет классов для пользователей с истекшим сроком обучения, которым присвоен идентификатор курса.Этот идентификатор курса вам, возможно, придется передать как параметр на вашу страницу откуда-то еще (а затем в классы селектора пользователя), иначе вам также придется добавить селектор курса на эту страницу.
Кроме того, смогу ли я выполнять необработанные запросы SQL UPDATE для обновления сертификата?
Да, вам придется написать логику для обновления состояния срока действия сертификата, но в зависимости от подключаемого модуля сертификации выпри использовании может быть возможно, что какой-то помощник / API существует (вы можете проверить это перед написанием собственного запроса).