LMSouq
moodle-core Open

Show data only to selected user in Quiz activity

ST
StartVader
1 month ago
3 views
Problem Description
I am using `Moodle 2.7` and in the `Quiz activity` there is the overview page for **all attempts** of the **learners**. The table is under `mymoodle/mod/quiz/report.php?id=50&mode=overview` Right now only **admin users** or users with the **capability** `'mod/quiz:viewreports'` can see the table. How to add users, **without using** any capability, who will be able to see this report? Right now every user, without the capability gets the error from `report.php`: $reportlist = quiz_report_list($context); if (empty($reportlist) !totara_is_manager($userid)) { print_error('erroraccessingreport', 'quiz'); } // Validate the requested report name. if ($mode == '') { // Default to first accessible report and redirect. $url->param('mode', reset($reportlist)); redirect($url); } else if (!in_array($mode, $reportlist)) { print_error('erroraccessingreport', 'quiz'); } if (!is_readable("report/$mode/report.php")) { print_error('reportnotfound', 'quiz', '', $mode); } The **table** **function** is under `reportlib.php`: function quiz_report_list($context) { global $DB; static $reportlist = null; if (!is_null($reportlist)) { return $reportlist; } $reports = $DB->get_records('quiz_reports', null, 'displayorder DESC', 'name, capability'); $reportdirs = core_component::get_plugin_list('quiz'); // Order the reports tab in descending order of displayorder. $reportcaps = array(); foreach ($reports as $key => $report) { if (array_key_exists($report->name, $reportdirs)) { $reportcaps[$report->name] = $report->capability; } } // Add any other reports, which are on disc but not in the DB, on the end. foreach ($reportdirs as $reportname => $notused) { if (!isset($reportcaps[$reportname])) { $reportcaps[$reportname] = null; } } $reportlist = array(); foreach ($reportcaps as $name => $capability) { if (empty($capability)) { $capability = 'mod/quiz:viewreports'; } if (has_capability($capability, $context)) { $reportlist[] = $name; } } return $reportlist; } I want to add designated people by their **id**, who will act as **managers**.

AI-Generated Solution

Powered by LMSouq AI · GPT-4.1-mini

✓ Solution Ready
Analyzing problem and generating solution…
Was this solution helpful?
Back to Knowledge Base