/** * Adds module specific settings to the settings block. * * @param settings_navigation $settings The settings navigation object * @param stdClass $context The node context */ function local_loginas_extends_settings_navigation(settings_navigation $settings, $context) { global $DB, $CFG, $PAGE, $USER; // Course id and context. $courseid = !empty($PAGE->course->id) ? $PAGE->course->id : SITEID; $coursecontext = context_course::instance($courseid); // Must have the loginas capability. if (!has_capability('moodle/user:loginas', $coursecontext)) { return; } // Set the settings category. $loginas = $settings->add(get_string('loginas')); // Login as list by admin setting. if (is_siteadmin($USER)) { // Admin settings page. $url = new moodle_url('/admin/settings.php', array('section' => 'localsettingloginas')); $loginas->add(get_string('settings'), $url, $settings::TYPE_SETTING); // Users list. $loginasusers = array(); // Since 2.6, use all the required fields. $ufields = 'id, ' . get_all_user_name_fields(true); // Get users by id. if ($configuserids = get_config('local_loginas', 'loginasusers')) { $userids = explode(',', $configuserids); if ($users = $DB->get_records_list('user', 'id', $userids, '', $ufields)) { $loginasusers = $users; } } // Get users by username. if ($configusernames = get_config('local_loginas', 'loginasusernames')) { $usernames = explode(',', $configusernames); if ($users = $DB->get_records_list('user', 'username', $usernames, '', $ufields)) { $loginasusers = $loginasusers + $users; } } // Add action links for specified users. if ($loginasusers) { $params = array('id' => $courseid, 'sesskey' => sesskey()); foreach ($loginasusers as $userid => $lauser) { $url = new moodle_url('/course/loginas.php', $params); $url->param('user', $userid); $loginas->add(fullname($lauser, true), $url, $settings::TYPE_SETTING); } } } // Course users login as. if (!($configcourseusers = get_config('local_loginas', 'courseusers'))) { return; } $loggedinas = \core\session\manager::is_loggedinas(); if (!$loggedinas) { // Ajax link. $node = $loginas->add(get_string('courseusers', 'local_loginas'), 'javascript:void();', $settings::TYPE_SETTING); $node->add_class('local_loginas_setting_link'); local_loginas_require_js($PAGE); } }
/** * If no category root exists creates it and returns it. Otherwise just returns the already created root. * @param settings_navigation $nav * @return navigation_node */ function category_get_root(settings_navigation &$nav) { static $categoryroot = null; if (!isset($categoryroot)) { $categoryroot = $nav->add(get_string('catadmin', 'local_contextadmin')); // Root Node. } return $categoryroot; }
/** * Extends the settings navigation with the emarking settings * * This function is called when the context for the page is a emarking module. This is not called by AJAX * so it is safe to rely on the $PAGE. * * @param settings_navigation $settingsnav * {@link settings_navigation} * @param navigation_node $emarkingnode * {@link navigation_node} */ function emarking_extend_settings_navigation(settings_navigation $settingsnav, $emarkingnode) { global $PAGE, $DB, $USER, $CFG; $course = $PAGE->course; // Course context is used as this can work outside of the module $context = $PAGE->context; /* if ($context instanceof context_course && isset($settingsnav) && $context->instanceid > 1 && is_siteadmin()) { $settingnode = $settingsnav->add(get_string('emarking', 'mod_emarking'), null, navigation_node::TYPE_CONTAINER); $thingnode = $settingnode->add(get_string('quizprinting', 'local_galyleo'), new moodle_url('/local/galyleo/quizzes.php', array( 'course' => $context->instanceid ))); } if ($context instanceof context_module && isset($settingsnav) && is_siteadmin()) { if ($contextcourse = $context->get_course_context(false)) { $settingnode = $settingsnav->add(get_string('galyleo', 'local_galyleo'), null, navigation_node::TYPE_CONTAINER); $thingnode = $settingnode->add(get_string('quizprinting', 'local_galyleo'), new moodle_url('/local/galyleo/quizzes.php', array( 'course' => $contextcourse->instanceid, 'quiz' => $context->instanceid ))); } } */ if (is_siteadmin($USER) || has_capability("mod/emarking:manageprinters", $context) && $CFG->emarking_enableprinting) { $settingnode = $settingsnav->add(get_string('emarkingprints', 'mod_emarking'), null, navigation_node::TYPE_CONTAINER); $thingnode = $settingnode->add(get_string('adminprints', 'mod_emarking'), new moodle_url("/mod/emarking/print/printers.php", array('sesskey' => $USER->sesskey))); $thingnode = $settingnode->add(get_string('permitsviewprinters', 'mod_emarking'), new moodle_url("mod/emarking/print/usersprinters.php", array('sesskey' => $USER->sesskey))); } }