Search moodle.org's
Developer Documentation

See Release Notes
Long Term Support Release

  • Bug fixes for general core bugs in 4.1.x will end 13 November 2023 (12 months).
  • Bug fixes for security issues in 4.1.x will end 10 November 2025 (36 months).
  • PHP version: minimum PHP 7.4.0 Note: minimum PHP version has increased since Moodle 4.0. PHP 8.0.x is supported too.
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.

/**
 * Output rendering for the plugin.
 *
 * @package     tool_oauth2
 * @copyright   2017 Damyon Wiese
 * @license     http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */
namespace tool_oauth2\output;

use plugin_renderer_base;
use html_table;
use html_table_cell;
use html_table_row;
use html_writer;
use core\oauth2\issuer;
use core\oauth2\api;
use moodle_url;

defined('MOODLE_INTERNAL') || die();

/**
 * Implements the plugin renderer
 *
 * @copyright 2017 Damyon Wiese
 * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */
class renderer extends plugin_renderer_base {
    /**
     * This function will render one beautiful table with all the issuers.
     *
     * @param \core\oauth2\issuer[] $issuers - list of all issuers.
     * @return string HTML to output.
     */
    public function issuers_table($issuers) {
        global $CFG;

        $table = new html_table();
        $table->head  = [
            get_string('name'),
< get_string('configuredstatus', 'tool_oauth2'), < get_string('loginissuer', 'tool_oauth2'),
> get_string('issuerusedforlogin', 'tool_oauth2'), > get_string('logindisplay', 'tool_oauth2'), > get_string('issuerusedforinternal', 'tool_oauth2'),
get_string('discoverystatus', 'tool_oauth2') . ' ' . $this->help_icon('discovered', 'tool_oauth2'), get_string('systemauthstatus', 'tool_oauth2') . ' ' . $this->help_icon('systemaccountconnected', 'tool_oauth2'), get_string('edit'), ]; $table->attributes['class'] = 'admintable generaltable'; $data = []; $index = 0; foreach ($issuers as $issuer) { // We need to handle the first and last ones specially. $first = false; if ($index == 0) { $first = true; } $last = false; if ($index == count($issuers) - 1) { $last = true; } // Name. $name = $issuer->get('name'); $image = $issuer->get('image'); if ($image) { $name = '<img width="24" height="24" alt="" src="' . s($image) . '"> ' . s($name); } $namecell = new html_table_cell($name); $namecell->header = true;
< // Configured. < if ($issuer->is_configured()) { < $configured = $this->pix_icon('yes', get_string('configured', 'tool_oauth2'), 'tool_oauth2'); < } else { < $configured = $this->pix_icon('no', get_string('notconfigured', 'tool_oauth2'), 'tool_oauth2'); < } < $configuredstatuscell = new html_table_cell($configured); <
// Login issuer.
< if (!empty($issuer->get('showonloginpage'))) {
> if ((int)$issuer->get('showonloginpage') == issuer::SERVICEONLY) { > $loginissuer = $this->pix_icon('no', get_string('notloginissuer', 'tool_oauth2'), 'tool_oauth2'); > $logindisplayas = ''; > } else { > $logindisplayas = s($issuer->get_display_name()); > if ($issuer->get('id') && $issuer->is_configured() && !empty($issuer->get_endpoint_url('userinfo'))) {
$loginissuer = $this->pix_icon('yes', get_string('loginissuer', 'tool_oauth2'), 'tool_oauth2'); } else {
< $loginissuer = $this->pix_icon('no', get_string('notloginissuer', 'tool_oauth2'), 'tool_oauth2');
> $loginissuer = $this->pix_icon('notconfigured', get_string('notconfigured', 'tool_oauth2'), 'tool_oauth2'); > }
} $loginissuerstatuscell = new html_table_cell($loginissuer);
> // Internal services issuer. // Discovered. > if ((int)$issuer->get('showonloginpage') == issuer::LOGINONLY) { if (!empty($issuer->get('scopessupported'))) { > $serviceissuer = $this->pix_icon('no', get_string('issuersservicesnotallow', 'tool_oauth2'), 'tool_oauth2'); $discovered = $this->pix_icon('yes', get_string('discovered', 'tool_oauth2'), 'tool_oauth2'); > } else if ($issuer->get('id') && $issuer->is_configured()) { } else { > $serviceissuer = $this->pix_icon('yes', get_string('issuersservicesallow', 'tool_oauth2'), 'tool_oauth2'); if (!empty($issuer->get_endpoint_url('discovery'))) { > } else { $discovered = $this->pix_icon('no', get_string('notdiscovered', 'tool_oauth2'), 'tool_oauth2'); > $serviceissuer = $this->pix_icon('notconfigured', get_string('notconfigured', 'tool_oauth2'), 'tool_oauth2'); } else { > } $discovered = '-'; > $internalissuerstatuscell = new html_table_cell($serviceissuer); } >
} $discoverystatuscell = new html_table_cell($discovered); // Connected. if ($issuer->is_system_account_connected()) { $systemaccount = \core\oauth2\api::get_system_account($issuer); $systemauth = s($systemaccount->get('email')) . ' (' . s($systemaccount->get('username')). ') '; $systemauth .= $this->pix_icon('yes', get_string('systemaccountconnected', 'tool_oauth2'), 'tool_oauth2'); } else { $systemauth = $this->pix_icon('no', get_string('systemaccountnotconnected', 'tool_oauth2'), 'tool_oauth2'); } $params = ['id' => $issuer->get('id'), 'action' => 'auth']; $authurl = new moodle_url('/admin/tool/oauth2/issuers.php', $params); $icon = $this->pix_icon('auth', get_string('connectsystemaccount', 'tool_oauth2'), 'tool_oauth2'); $authlink = html_writer::link($authurl, $icon); $systemauth .= ' ' . $authlink; $systemauthstatuscell = new html_table_cell($systemauth); $links = ''; // Action links. $editurl = new moodle_url('/admin/tool/oauth2/issuers.php', ['id' => $issuer->get('id'), 'action' => 'edit']); $editlink = html_writer::link($editurl, $this->pix_icon('t/edit', get_string('edit'))); $links .= ' ' . $editlink; // Endpoints. $editendpointsurl = new moodle_url('/admin/tool/oauth2/endpoints.php', ['issuerid' => $issuer->get('id')]); $str = get_string('editendpoints', 'tool_oauth2'); $editendpointlink = html_writer::link($editendpointsurl, $this->pix_icon('t/viewdetails', $str)); $links .= ' ' . $editendpointlink; // User field mapping. $params = ['issuerid' => $issuer->get('id')]; $edituserfieldmappingsurl = new moodle_url('/admin/tool/oauth2/userfieldmappings.php', $params); $str = get_string('edituserfieldmappings', 'tool_oauth2'); $edituserfieldmappinglink = html_writer::link($edituserfieldmappingsurl, $this->pix_icon('t/user', $str)); $links .= ' ' . $edituserfieldmappinglink; // Delete. $deleteurl = new moodle_url('/admin/tool/oauth2/issuers.php', ['id' => $issuer->get('id'), 'action' => 'delete']); $deletelink = html_writer::link($deleteurl, $this->pix_icon('t/delete', get_string('delete'))); $links .= ' ' . $deletelink; // Enable / Disable. if ($issuer->get('enabled')) { // Disable. $disableparams = ['id' => $issuer->get('id'), 'sesskey' => sesskey(), 'action' => 'disable']; $disableurl = new moodle_url('/admin/tool/oauth2/issuers.php', $disableparams); $disablelink = html_writer::link($disableurl, $this->pix_icon('t/hide', get_string('disable'))); $links .= ' ' . $disablelink; } else { // Enable. $enableparams = ['id' => $issuer->get('id'), 'sesskey' => sesskey(), 'action' => 'enable']; $enableurl = new moodle_url('/admin/tool/oauth2/issuers.php', $enableparams); $enablelink = html_writer::link($enableurl, $this->pix_icon('t/show', get_string('enable'))); $links .= ' ' . $enablelink; } if (!$last) { // Move down. $params = ['id' => $issuer->get('id'), 'action' => 'movedown', 'sesskey' => sesskey()]; $movedownurl = new moodle_url('/admin/tool/oauth2/issuers.php', $params); $movedownlink = html_writer::link($movedownurl, $this->pix_icon('t/down', get_string('movedown'))); $links .= ' ' . $movedownlink; } if (!$first) { // Move up. $params = ['id' => $issuer->get('id'), 'action' => 'moveup', 'sesskey' => sesskey()]; $moveupurl = new moodle_url('/admin/tool/oauth2/issuers.php', $params); $moveuplink = html_writer::link($moveupurl, $this->pix_icon('t/up', get_string('moveup'))); $links .= ' ' . $moveuplink; } $editcell = new html_table_cell($links); $row = new html_table_row([ $namecell,
< $configuredstatuscell,
$loginissuerstatuscell,
> $logindisplayas, $discoverystatuscell, > $internalissuerstatuscell,
$systemauthstatuscell, $editcell, ]);
> > if (!$issuer->get('enabled')) { $data[] = $row; > $row->attributes['class'] = 'dimmed_text'; $index++; > }
} $table->data = $data; return html_writer::table($table); } /** * This function will render one beautiful table with all the endpoints. * * @param \core\oauth2\endpoint[] $endpoints - list of all endpoints. * @param int $issuerid * @return string HTML to output. */ public function endpoints_table($endpoints, $issuerid) { global $CFG; $table = new html_table(); $table->head = [ get_string('name'), get_string('url'), get_string('edit'), ]; $table->attributes['class'] = 'admintable generaltable'; $data = []; $index = 0; foreach ($endpoints as $endpoint) { // Name. $name = $endpoint->get('name'); $namecell = new html_table_cell(s($name)); $namecell->header = true; // Url. $url = $endpoint->get('url'); $urlcell = new html_table_cell(s($url)); $links = ''; // Action links. $editparams = ['issuerid' => $issuerid, 'endpointid' => $endpoint->get('id'), 'action' => 'edit']; $editurl = new moodle_url('/admin/tool/oauth2/endpoints.php', $editparams); $editlink = html_writer::link($editurl, $this->pix_icon('t/edit', get_string('edit'))); $links .= ' ' . $editlink; // Delete. $deleteparams = ['issuerid' => $issuerid, 'endpointid' => $endpoint->get('id'), 'action' => 'delete']; $deleteurl = new moodle_url('/admin/tool/oauth2/endpoints.php', $deleteparams); $deletelink = html_writer::link($deleteurl, $this->pix_icon('t/delete', get_string('delete'))); $links .= ' ' . $deletelink; $editcell = new html_table_cell($links); $row = new html_table_row([ $namecell, $urlcell, $editcell, ]); $data[] = $row; $index++; } $table->data = $data; return html_writer::table($table); } /** * This function will render one beautiful table with all the user_field_mappings. * * @param \core\oauth2\user_field_mapping[] $userfieldmappings - list of all user_field_mappings. * @param int $issuerid * @return string HTML to output. */ public function user_field_mappings_table($userfieldmappings, $issuerid) { global $CFG; $table = new html_table(); $table->head = [ get_string('userfieldexternalfield', 'tool_oauth2'), get_string('userfieldinternalfield', 'tool_oauth2'), get_string('edit'), ]; $table->attributes['class'] = 'admintable generaltable'; $data = []; $index = 0; foreach ($userfieldmappings as $userfieldmapping) { // External field. $externalfield = $userfieldmapping->get('externalfield'); $externalfieldcell = new html_table_cell(s($externalfield)); // Internal field. $internalfield = $userfieldmapping->get('internalfield'); $internalfieldcell = new html_table_cell(s($internalfield)); $links = ''; // Action links. $editparams = ['issuerid' => $issuerid, 'userfieldmappingid' => $userfieldmapping->get('id'), 'action' => 'edit']; $editurl = new moodle_url('/admin/tool/oauth2/userfieldmappings.php', $editparams); $editlink = html_writer::link($editurl, $this->pix_icon('t/edit', get_string('edit'))); $links .= ' ' . $editlink; // Delete. $deleteparams = ['issuerid' => $issuerid, 'userfieldmappingid' => $userfieldmapping->get('id'), 'action' => 'delete']; $deleteurl = new moodle_url('/admin/tool/oauth2/userfieldmappings.php', $deleteparams); $deletelink = html_writer::link($deleteurl, $this->pix_icon('t/delete', get_string('delete'))); $links .= ' ' . $deletelink; $editcell = new html_table_cell($links); $row = new html_table_row([ $externalfieldcell, $internalfieldcell, $editcell, ]); $data[] = $row; $index++; } $table->data = $data; return html_writer::table($table); } }