Skip to content

Commit

Permalink
MDL-39050 quiz access rules: settings.php files should work.
Browse files Browse the repository at this point in the history
  • Loading branch information
timhunt committed Apr 19, 2013
1 parent 3a8c438 commit 53f8948
Showing 1 changed file with 29 additions and 5 deletions.
34 changes: 29 additions & 5 deletions mod/quiz/settings.php
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -37,10 +37,20 @@
$strreportname = get_string($report . 'report', 'quiz_'.$report); $strreportname = get_string($report . 'report', 'quiz_'.$report);
$reportsbyname[$strreportname] = $report; $reportsbyname[$strreportname] = $report;
} }
ksort($reportsbyname); collatorlib::ksort($reportsbyname);

// First get a list of quiz reports with there own settings pages. If there none,
// we use a simpler overall menu structure.
$rules = get_plugin_list_with_file('quizaccess', 'settings.php', false);
$rulesbyname = array();
foreach ($rules as $rule => $ruledir) {
$strrulename = get_string('pluginname', 'quizaccess_' . $rule);
$rulesbyname[$strrulename] = $rule;
}
collatorlib::ksort($rulesbyname);


// Create the quiz settings page. // Create the quiz settings page.
if (empty($reportsbyname)) { if (empty($reportsbyname) && empty($rulesbyname)) {
$pagetitle = get_string('modulename', 'quiz'); $pagetitle = get_string('modulename', 'quiz');
} else { } else {
$pagetitle = get_string('generalsettings', 'admin'); $pagetitle = get_string('generalsettings', 'admin');
Expand Down Expand Up @@ -212,14 +222,14 @@


// Now, depending on whether any reports have their own settings page, add // Now, depending on whether any reports have their own settings page, add
// the quiz setting page to the appropriate place in the tree. // the quiz setting page to the appropriate place in the tree.
if (empty($reportsbyname)) { if (empty($reportsbyname) && empty($rulesbyname)) {
$ADMIN->add('modsettings', $quizsettings); $ADMIN->add('modsettings', $quizsettings);
} else { } else {
$ADMIN->add('modsettings', new admin_category('modsettingsquizcat', $ADMIN->add('modsettings', new admin_category('modsettingsquizcat',
get_string('modulename', 'quiz'), $module->is_enabled() === false)); get_string('modulename', 'quiz'), $module->is_enabled() === false));
$ADMIN->add('modsettingsquizcat', $quizsettings); $ADMIN->add('modsettingsquizcat', $quizsettings);


// Add the report pages for the settings.php files in sub directories of mod/quiz/report. // Add settings pages for the quiz report subplugins.
foreach ($reportsbyname as $strreportname => $report) { foreach ($reportsbyname as $strreportname => $report) {
$reportname = $report; $reportname = $report;


Expand All @@ -228,7 +238,21 @@
if ($ADMIN->fulltree) { if ($ADMIN->fulltree) {
include($CFG->dirroot . "/mod/quiz/report/$reportname/settings.php"); include($CFG->dirroot . "/mod/quiz/report/$reportname/settings.php");
} }
$ADMIN->add('modsettingsquizcat', $settings); if (!empty($settings)) {
$ADMIN->add('modsettingsquizcat', $settings);
}
}

// Add settings pages for the quiz access rule subplugins.
foreach ($rulesbyname as $strrulename => $rule) {
$settings = new admin_settingpage('modsettingsquizcat' . $rule,
$strrulename, 'moodle/site:config', $module->is_enabled() === false);
if ($ADMIN->fulltree) {
include($CFG->dirroot . "/mod/quiz/accessrule/$rule/settings.php");
}
if (!empty($settings)) {
$ADMIN->add('modsettingsquizcat', $settings);
}
} }
} }


Expand Down

0 comments on commit 53f8948

Please sign in to comment.