Выбор пользователя Moodle - PullRequest
0 голосов
/ 27 июня 2019

Я говорю о селекторе пользователей с двумя столбцами и стрелками посередине.

Я пытался воспроизвести то, что было в /admin/roles/admins.php, но безуспешно.

Я нашел несколько интересных функций в lib.php для admin / role, которые выглядят так:

function core_role_get_potential_user_selector(context $context, $name, $options) {
$blockinsidecourse = false;
if ($context->contextlevel == CONTEXT_BLOCK) {
    $parentcontext = $context->get_parent_context();
    $blockinsidecourse = in_array($parentcontext->contextlevel, array(CONTEXT_MODULE, CONTEXT_COURSE));
}

if (($context->contextlevel == CONTEXT_MODULE || $blockinsidecourse) &&
        !is_inside_frontpage($context)) {
    $potentialuserselector = new core_role_potential_assignees_below_course('addselect', $options);
} else {
    $potentialuserselector = new core_role_potential_assignees_course_and_above('addselect', $options);
}

return $potentialuserselector;

}

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

Кроме того, смогу ли я выполнять необработанные запросы SQL UPDATE для обновления сертификата?

Буду признателен за некоторые советы, спасибо!

1 Ответ

0 голосов
/ 23 июля 2019

Ключом для репликации пользовательских селекторов 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 существует (вы можете проверить это перед написанием собственного запроса).

...