See Release Notes
Long Term Support Release
Differences Between: [Versions 310 and 401] [Versions 39 and 401]
1 <?php 2 // This file is part of Moodle - http://moodle.org/ 3 // 4 // Moodle is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // Moodle is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License 15 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 16 17 /** 18 * Output rendering for the plugin. 19 * 20 * @package tool_oauth2 21 * @copyright 2017 Damyon Wiese 22 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 23 */ 24 namespace tool_oauth2\output; 25 26 use plugin_renderer_base; 27 use html_table; 28 use html_table_cell; 29 use html_table_row; 30 use html_writer; 31 use core\oauth2\issuer; 32 use core\oauth2\api; 33 use moodle_url; 34 35 defined('MOODLE_INTERNAL') || die(); 36 37 /** 38 * Implements the plugin renderer 39 * 40 * @copyright 2017 Damyon Wiese 41 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 42 */ 43 class renderer extends plugin_renderer_base { 44 /** 45 * This function will render one beautiful table with all the issuers. 46 * 47 * @param \core\oauth2\issuer[] $issuers - list of all issuers. 48 * @return string HTML to output. 49 */ 50 public function issuers_table($issuers) { 51 global $CFG; 52 53 $table = new html_table(); 54 $table->head = [ 55 get_string('name'), 56 get_string('issuerusedforlogin', 'tool_oauth2'), 57 get_string('logindisplay', 'tool_oauth2'), 58 get_string('issuerusedforinternal', 'tool_oauth2'), 59 get_string('discoverystatus', 'tool_oauth2') . ' ' . $this->help_icon('discovered', 'tool_oauth2'), 60 get_string('systemauthstatus', 'tool_oauth2') . ' ' . $this->help_icon('systemaccountconnected', 'tool_oauth2'), 61 get_string('edit'), 62 ]; 63 $table->attributes['class'] = 'admintable generaltable'; 64 $data = []; 65 66 $index = 0; 67 68 foreach ($issuers as $issuer) { 69 // We need to handle the first and last ones specially. 70 $first = false; 71 if ($index == 0) { 72 $first = true; 73 } 74 $last = false; 75 if ($index == count($issuers) - 1) { 76 $last = true; 77 } 78 79 // Name. 80 $name = $issuer->get('name'); 81 $image = $issuer->get('image'); 82 if ($image) { 83 $name = '<img width="24" height="24" alt="" src="' . s($image) . '"> ' . s($name); 84 } 85 $namecell = new html_table_cell($name); 86 $namecell->header = true; 87 88 // Login issuer. 89 if ((int)$issuer->get('showonloginpage') == issuer::SERVICEONLY) { 90 $loginissuer = $this->pix_icon('no', get_string('notloginissuer', 'tool_oauth2'), 'tool_oauth2'); 91 $logindisplayas = ''; 92 } else { 93 $logindisplayas = s($issuer->get_display_name()); 94 if ($issuer->get('id') && $issuer->is_configured() && !empty($issuer->get_endpoint_url('userinfo'))) { 95 $loginissuer = $this->pix_icon('yes', get_string('loginissuer', 'tool_oauth2'), 'tool_oauth2'); 96 } else { 97 $loginissuer = $this->pix_icon('notconfigured', get_string('notconfigured', 'tool_oauth2'), 'tool_oauth2'); 98 } 99 } 100 $loginissuerstatuscell = new html_table_cell($loginissuer); 101 102 // Internal services issuer. 103 if ((int)$issuer->get('showonloginpage') == issuer::LOGINONLY) { 104 $serviceissuer = $this->pix_icon('no', get_string('issuersservicesnotallow', 'tool_oauth2'), 'tool_oauth2'); 105 } else if ($issuer->get('id') && $issuer->is_configured()) { 106 $serviceissuer = $this->pix_icon('yes', get_string('issuersservicesallow', 'tool_oauth2'), 'tool_oauth2'); 107 } else { 108 $serviceissuer = $this->pix_icon('notconfigured', get_string('notconfigured', 'tool_oauth2'), 'tool_oauth2'); 109 } 110 $internalissuerstatuscell = new html_table_cell($serviceissuer); 111 112 // Discovered. 113 if (!empty($issuer->get('scopessupported'))) { 114 $discovered = $this->pix_icon('yes', get_string('discovered', 'tool_oauth2'), 'tool_oauth2'); 115 } else { 116 if (!empty($issuer->get_endpoint_url('discovery'))) { 117 $discovered = $this->pix_icon('no', get_string('notdiscovered', 'tool_oauth2'), 'tool_oauth2'); 118 } else { 119 $discovered = '-'; 120 } 121 } 122 123 $discoverystatuscell = new html_table_cell($discovered); 124 125 // Connected. 126 if ($issuer->is_system_account_connected()) { 127 $systemaccount = \core\oauth2\api::get_system_account($issuer); 128 $systemauth = s($systemaccount->get('email')) . ' (' . s($systemaccount->get('username')). ') '; 129 $systemauth .= $this->pix_icon('yes', get_string('systemaccountconnected', 'tool_oauth2'), 'tool_oauth2'); 130 } else { 131 $systemauth = $this->pix_icon('no', get_string('systemaccountnotconnected', 'tool_oauth2'), 'tool_oauth2'); 132 } 133 134 $params = ['id' => $issuer->get('id'), 'action' => 'auth']; 135 $authurl = new moodle_url('/admin/tool/oauth2/issuers.php', $params); 136 $icon = $this->pix_icon('auth', get_string('connectsystemaccount', 'tool_oauth2'), 'tool_oauth2'); 137 $authlink = html_writer::link($authurl, $icon); 138 $systemauth .= ' ' . $authlink; 139 140 $systemauthstatuscell = new html_table_cell($systemauth); 141 142 $links = ''; 143 // Action links. 144 $editurl = new moodle_url('/admin/tool/oauth2/issuers.php', ['id' => $issuer->get('id'), 'action' => 'edit']); 145 $editlink = html_writer::link($editurl, $this->pix_icon('t/edit', get_string('edit'))); 146 $links .= ' ' . $editlink; 147 148 // Endpoints. 149 $editendpointsurl = new moodle_url('/admin/tool/oauth2/endpoints.php', ['issuerid' => $issuer->get('id')]); 150 $str = get_string('editendpoints', 'tool_oauth2'); 151 $editendpointlink = html_writer::link($editendpointsurl, $this->pix_icon('t/viewdetails', $str)); 152 $links .= ' ' . $editendpointlink; 153 154 // User field mapping. 155 $params = ['issuerid' => $issuer->get('id')]; 156 $edituserfieldmappingsurl = new moodle_url('/admin/tool/oauth2/userfieldmappings.php', $params); 157 $str = get_string('edituserfieldmappings', 'tool_oauth2'); 158 $edituserfieldmappinglink = html_writer::link($edituserfieldmappingsurl, $this->pix_icon('t/user', $str)); 159 $links .= ' ' . $edituserfieldmappinglink; 160 161 // Delete. 162 $deleteurl = new moodle_url('/admin/tool/oauth2/issuers.php', ['id' => $issuer->get('id'), 'action' => 'delete']); 163 $deletelink = html_writer::link($deleteurl, $this->pix_icon('t/delete', get_string('delete'))); 164 $links .= ' ' . $deletelink; 165 // Enable / Disable. 166 if ($issuer->get('enabled')) { 167 // Disable. 168 $disableparams = ['id' => $issuer->get('id'), 'sesskey' => sesskey(), 'action' => 'disable']; 169 $disableurl = new moodle_url('/admin/tool/oauth2/issuers.php', $disableparams); 170 $disablelink = html_writer::link($disableurl, $this->pix_icon('t/hide', get_string('disable'))); 171 $links .= ' ' . $disablelink; 172 } else { 173 // Enable. 174 $enableparams = ['id' => $issuer->get('id'), 'sesskey' => sesskey(), 'action' => 'enable']; 175 $enableurl = new moodle_url('/admin/tool/oauth2/issuers.php', $enableparams); 176 $enablelink = html_writer::link($enableurl, $this->pix_icon('t/show', get_string('enable'))); 177 $links .= ' ' . $enablelink; 178 } 179 if (!$last) { 180 // Move down. 181 $params = ['id' => $issuer->get('id'), 'action' => 'movedown', 'sesskey' => sesskey()]; 182 $movedownurl = new moodle_url('/admin/tool/oauth2/issuers.php', $params); 183 $movedownlink = html_writer::link($movedownurl, $this->pix_icon('t/down', get_string('movedown'))); 184 $links .= ' ' . $movedownlink; 185 } 186 if (!$first) { 187 // Move up. 188 $params = ['id' => $issuer->get('id'), 'action' => 'moveup', 'sesskey' => sesskey()]; 189 $moveupurl = new moodle_url('/admin/tool/oauth2/issuers.php', $params); 190 $moveuplink = html_writer::link($moveupurl, $this->pix_icon('t/up', get_string('moveup'))); 191 $links .= ' ' . $moveuplink; 192 } 193 194 $editcell = new html_table_cell($links); 195 196 $row = new html_table_row([ 197 $namecell, 198 $loginissuerstatuscell, 199 $logindisplayas, 200 $internalissuerstatuscell, 201 $discoverystatuscell, 202 $systemauthstatuscell, 203 $editcell, 204 ]); 205 206 if (!$issuer->get('enabled')) { 207 $row->attributes['class'] = 'dimmed_text'; 208 } 209 210 $data[] = $row; 211 $index++; 212 } 213 $table->data = $data; 214 return html_writer::table($table); 215 } 216 217 /** 218 * This function will render one beautiful table with all the endpoints. 219 * 220 * @param \core\oauth2\endpoint[] $endpoints - list of all endpoints. 221 * @param int $issuerid 222 * @return string HTML to output. 223 */ 224 public function endpoints_table($endpoints, $issuerid) { 225 global $CFG; 226 227 $table = new html_table(); 228 $table->head = [ 229 get_string('name'), 230 get_string('url'), 231 get_string('edit'), 232 ]; 233 $table->attributes['class'] = 'admintable generaltable'; 234 $data = []; 235 236 $index = 0; 237 238 foreach ($endpoints as $endpoint) { 239 // Name. 240 $name = $endpoint->get('name'); 241 $namecell = new html_table_cell(s($name)); 242 $namecell->header = true; 243 244 // Url. 245 $url = $endpoint->get('url'); 246 $urlcell = new html_table_cell(s($url)); 247 248 $links = ''; 249 // Action links. 250 $editparams = ['issuerid' => $issuerid, 'endpointid' => $endpoint->get('id'), 'action' => 'edit']; 251 $editurl = new moodle_url('/admin/tool/oauth2/endpoints.php', $editparams); 252 $editlink = html_writer::link($editurl, $this->pix_icon('t/edit', get_string('edit'))); 253 $links .= ' ' . $editlink; 254 255 // Delete. 256 $deleteparams = ['issuerid' => $issuerid, 'endpointid' => $endpoint->get('id'), 'action' => 'delete']; 257 $deleteurl = new moodle_url('/admin/tool/oauth2/endpoints.php', $deleteparams); 258 $deletelink = html_writer::link($deleteurl, $this->pix_icon('t/delete', get_string('delete'))); 259 $links .= ' ' . $deletelink; 260 261 $editcell = new html_table_cell($links); 262 263 $row = new html_table_row([ 264 $namecell, 265 $urlcell, 266 $editcell, 267 ]); 268 269 $data[] = $row; 270 $index++; 271 } 272 $table->data = $data; 273 return html_writer::table($table); 274 } 275 276 /** 277 * This function will render one beautiful table with all the user_field_mappings. 278 * 279 * @param \core\oauth2\user_field_mapping[] $userfieldmappings - list of all user_field_mappings. 280 * @param int $issuerid 281 * @return string HTML to output. 282 */ 283 public function user_field_mappings_table($userfieldmappings, $issuerid) { 284 global $CFG; 285 286 $table = new html_table(); 287 $table->head = [ 288 get_string('userfieldexternalfield', 'tool_oauth2'), 289 get_string('userfieldinternalfield', 'tool_oauth2'), 290 get_string('edit'), 291 ]; 292 $table->attributes['class'] = 'admintable generaltable'; 293 $data = []; 294 295 $index = 0; 296 297 foreach ($userfieldmappings as $userfieldmapping) { 298 // External field. 299 $externalfield = $userfieldmapping->get('externalfield'); 300 $externalfieldcell = new html_table_cell(s($externalfield)); 301 302 // Internal field. 303 $internalfield = $userfieldmapping->get('internalfield'); 304 $internalfieldcell = new html_table_cell(s($internalfield)); 305 306 $links = ''; 307 // Action links. 308 $editparams = ['issuerid' => $issuerid, 'userfieldmappingid' => $userfieldmapping->get('id'), 'action' => 'edit']; 309 $editurl = new moodle_url('/admin/tool/oauth2/userfieldmappings.php', $editparams); 310 $editlink = html_writer::link($editurl, $this->pix_icon('t/edit', get_string('edit'))); 311 $links .= ' ' . $editlink; 312 313 // Delete. 314 $deleteparams = ['issuerid' => $issuerid, 'userfieldmappingid' => $userfieldmapping->get('id'), 'action' => 'delete']; 315 $deleteurl = new moodle_url('/admin/tool/oauth2/userfieldmappings.php', $deleteparams); 316 $deletelink = html_writer::link($deleteurl, $this->pix_icon('t/delete', get_string('delete'))); 317 $links .= ' ' . $deletelink; 318 319 $editcell = new html_table_cell($links); 320 321 $row = new html_table_row([ 322 $externalfieldcell, 323 $internalfieldcell, 324 $editcell, 325 ]); 326 327 $data[] = $row; 328 $index++; 329 } 330 $table->data = $data; 331 return html_writer::table($table); 332 } 333 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body