コード例 #1
1
ファイル: lib.php プロジェクト: keliix06/moodle-local_loginas
/**
 * 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);
    }
}
コード例 #2
0
/**
 * 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;
}
コード例 #3
0
ファイル: lib.php プロジェクト: pspro360/emarking
/**
 * 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)));
    }
}