например с помощью Sitewide User report или подскажите что нить лучше
версия 2.7.2
Еще в 1.8 для этого сделали блок Подопечные. Сейчас информацию о нем можно найти в документации по 2.9, но, насколько я понимаю, сам блок существует только для версий, более ранних, нежели ваша 2.7.
Вам роль опекуна нужно назначать в контексте конкретного пользователя-студента, а не курса. Поэтому и получается, что "родитель может смотреть оценки только по одному предмету".
Попробуйте использовать Parent_role + Mentees_block
я так и сделал. но меня интересует что бы родитель мог сделать полный отчет по всем предметам грубо говоря одной кнопкой, а так родитель должен бегать по каждому предмету отдельно
Понятно.
Тогда 2 варианта:
Андрій, вопрос с получением родителем оценок только своего подопечного можно решить модификацией самого SQL-запроса:
SELECT
CONCAT(u.firstname,' ',u.lastname) 'ФИО'
,c.fullname 'Курс'
,CASE
WHEN gi.itemtype = 'course'
THEN c.fullname + ' Course Total'
ELSE gi.itemname
END AS 'Модуль'
,ROUND(gg.finalgrade,2) 'Оценка'
,DATE_ADD('1970-01-01', INTERVAL gi.timemodified SECOND) 'Дата'
FROM prefix_course c
JOIN prefix_context ctx ON c.id = ctx.instanceid
JOIN prefix_role_assignments ra ON ra.contextid = ctx.id
JOIN prefix_user u ON u.id = ra.userid
JOIN prefix_grade_grades gg ON gg.userid = u.id
JOIN prefix_grade_items gi ON gi.id = gg.itemid
JOIN prefix_course_categories cc ON cc.id = c.category
WHERE gi.courseid = c.id
AND u.id = (
SELECT
ctx.instanceid
FROM prefix_context ctx
JOIN prefix_role_assignments ra ON ra.contextid = ctx.id
WHERE ctx.contextlevel=30 AND ra.roleid=8
AND ra.userid = %%USERID%%
)
Разберетесь? Только в условии ra.roleid=8 вместо 8 подставите своё значение mdl_role.id новой роли parent
Блок я почти не использовал, работаю с Ad-hoc database queries, но вроде запросы используются одни и те же.
Этот запрос я тестировал в Ad-hoc database queries.
Пояснение к нему, на всякий случай: вложенный SELECT в условии «WHERE … AND u.id = (…» определяет id подопечного для пользователя-родителя с id=%%USERID%%, выполняющего запрос. Ну и главный запрос ищет оценки только для пользователя с id подопечного.
Получается, каждый куратор будет видеть оценки только своего подопечного.
ЗЫ: если подопечных у куратора несколько, нужно запрос переделать - не "равно", а IN:
u.id IN (
спасибо, буду смотреть. сперва гляну что может дать мне блок. а потом и отчет. еще раз спасибо
создал роль родителя настроил отчет и в adhoc и Configurable reports. НО какой блок родитель себе поставить не может. в adhoc я право дал на просмотр а система говорит что:
НО я давал такое право. может каких то еще прав не хватает
вот список прав
Андрей, в вашем случае особенность настроек в том, что права родителю нужно настраивать в контексте пользователя, а блок Configurable reports и отчеты adhoc "по дефолту" можно настроить только в контексте системы/курса/etc
Смотрите, что я сделал, например, с блоком Configurable reports, чтобы дать доступ родителю к отчету по оценкам его подопечного:
ПОЛУЧИЛОСЬ!!!
СПАСИБО, помогите с тем как выводить оценки в плане: все(даже пустые), все(не пустые), только итоговые.
я сам пытался разобраться но не получается
Т. е., нужно вывести только итоговые оценки за курс? За элементы курсов оценки не нужны? Тогда можно было не городить огород с запросами, а использовать модуль Subcourse
Пустые оценки за курс выводиться никак не могут, т. к. запись в таблице _grade_grades в этом случае вовсе отсутствует. Она появится, если студент хотя бы один оцениваемый элемент курса выполнит.
"Старый" SQL-запрос нужно переписать так:
SELECT
CONCAT(u.firstname,' ',u.lastname) 'ФИО'
,c.fullname 'Курс'
,ROUND(gg.finalgrade,2) 'Оценка за курс'
,DATE_ADD('1970-01-01', INTERVAL gg.timemodified SECOND) 'Дата'
FROM prefix_course c
JOIN prefix_context ctx ON c.id = ctx.instanceid
JOIN prefix_role_assignments ra ON ra.contextid = ctx.id
JOIN prefix_user u ON u.id = ra.userid
JOIN prefix_grade_grades gg ON gg.userid = u.id
JOIN prefix_grade_items gi ON gi.id = gg.itemid
JOIN prefix_course_categories cc ON cc.id = c.category
WHERE gi.courseid = c.id AND gi.itemtype = 'course'
AND u.id IN (
SELECT
ctx.instanceid
FROM prefix_context ctx
JOIN prefix_role_assignments ra ON ra.contextid = ctx.id
WHERE ctx.contextlevel=30 AND ra.roleid=9
AND ra.userid = %%USERID%%
)
Спасибо, действительно мне надо все оценки(пустые не так критично)так что субкурс не подходит. так что такой отчет действительно мне надо. думал просто создать несколько отчетов для администрации. кстати а как сделать так что бы отчет выводился за отдельную категорию например "categoryid=12" (со всеми оценками)?
субкурс не подходит
Ещё как подходит, этот модуль и используется как раз для вывода всех оценок всех студентов по всем курсам (субкурсам) в одном курсе (группа или специальность, тп)
как сделать так что бы отчет выводился за отдельную категорию
Добавить в условие WHERE id нужной категории:
WHERE gi.courseid = c.id AND gi.itemtype = 'course' AND cc.id = 12
так зачем всем-то? Добавить в WHERE ... AND gi.userid = %%USERID%% -выведет одного, только я блок родительский не знаю, поэтому надо подставить нужный id студента, а не текущего пользователя
Добавить в WHERE ... AND gi.userid = %%USERID%% -выведет одного
%%USERID%% - ага, выведет, то выведет, но подставит id того, кто выполняет запрос
Из справки: "The token %%USERID%% in the query will be replaced with the user id of the user viewing the report, before the report is executed."
Условие должно быть такое: WHERE…AND userid=:userid, тогда перед выполнением запроса нужно вписать в текстовое поле id студента, но лучше сделать по фамилии lastname=:lastname
Беда в том, что смотреть то можно любого студента. Нужно подумать, как ограничить права только на своего подопечного.
Здравствуйте! Сломал всю голову. У меня у некоторых пользователей с ролью Управляющий не отображаются сотрудники в блоке подопечные. Версия 3.9. Причем эти Управляющие были внесены в последние 3 месяца. Пробовал чистить кэш.