in local/o365/classes/page/ucp.php [272:412]
public function mode_connection() {
global $OUTPUT, $USER, $PAGE, $CFG;
$strtitle = get_string('ucp_index_connection_title', 'local_o365');
$PAGE->navbar->add($strtitle, new \moodle_url('/local/o365/ucp.php?action=connection'));
$candisconnect = auth_oidc_connectioncapability($USER->id, 'disconnect');
$canconnect = auth_oidc_connectioncapability($USER->id, 'connect');
$canlink = local_o365_connectioncapability($USER->id, 'link');
$canunlink = local_o365_connectioncapability($USER->id, 'unlink');
// If the user cannot disconnect or connect than they cannot use this page.
if (!($candisconnect || $canconnect || $canlink || $canunlink)) {
auth_oidc_connectioncapability($USER->id, 'both', true);
}
$connectiontype = $this->get_connection_type();
$opname = get_config('auth_oidc', 'opname');
echo $OUTPUT->header();
echo \html_writer::start_div('local_o365_ucp_featurepage local_o365_feature_connection');
echo \html_writer::tag('h3', $strtitle, ['class' => 'local_o365_featureheader local_o365_feature_connection']);
if (optional_param('o365accountconnected', null, PARAM_TEXT) == 'true') {
$statusstring = get_string('ucp_o365accountconnected', 'local_o365');
$statusclasses = 'alert alert-error';
} else {
$statusstring = get_string('ucp_connection_disconnected', 'local_o365');
$statusclasses = 'alert alert-info';
}
switch ($connectiontype) {
case 'aadlogin':
$statusclasses = 'alert alert-success';
$o365upn = \local_o365\utils::get_o365_upn($USER->id);
$statusstring = get_string('ucp_connection_aadlogin_active', 'local_o365', $o365upn);
break;
case 'linked':
$statusclasses = 'alert alert-success';
$o365upn = \local_o365\utils::get_o365_upn($USER->id);
$statusstring = get_string('ucp_connection_linked_active', 'local_o365', $o365upn);
break;
}
// Is user connected.
$howconnected = (\local_o365\utils::is_o365_connected($USER->id) === true) ? $connectiontype : false;
// If the user cannot connect and is not already connected they cannot do anything.
$canconnectnotconnected = (($canconnect || $canlink) && $howconnected === false) ||
($canconnect && $canunlink && $howconnected != 'aadlogin') ||
($candisconnect && $canlink && $howconnected != 'linked');
// If the user cannot disconnect and is connected, they cannot do anything.
$candisconnectconnected = ($canunlink && $howconnected == 'linked') || ($candisconnect && $howconnected == 'aadlogin');
$cannotdoanything = !($candisconnect || $canconnect || $canlink || $canunlink) ||
!($canconnectnotconnected || $candisconnectconnected);
if (!$cannotdoanything) {
echo \html_writer::div(get_string('ucp_connection_desc', 'local_o365'));
}
echo \html_writer::start_div('connectionstatus '.$statusclasses);
echo \html_writer::tag('h5', $statusstring);
echo \html_writer::end_div();
if ($cannotdoanything) {
echo \html_writer::end_div();
echo $OUTPUT->footer();
return;
}
echo \html_writer::tag('h5', get_string('ucp_connection_options', 'local_o365'));
// AAD Login.
if (is_enabled_auth('oidc')) {
$options = \html_writer::start_div('local_o365_connectionoption');
$header = \html_writer::tag('h4', get_string('ucp_connection_aadlogin', 'local_o365'));
$loginflow = get_config('auth_oidc', 'loginflow');
switch ($loginflow) {
case 'authcode':
case 'rocreds':
$header .= get_string('ucp_connection_aadlogin_desc_'.$loginflow, 'local_o365', $opname);
break;
}
switch ($connectiontype) {
case 'aadlogin';
if (is_enabled_auth('manual') === true && $candisconnect) {
$disconnectlinkurl = new \moodle_url('/local/o365/ucp.php', ['action' => 'disconnectlogin']);
$strdisconnect = get_string('ucp_connection_aadlogin_stop', 'local_o365', $opname);
$linkhtml = \html_writer::link($disconnectlinkurl, $strdisconnect);
echo $options.$header.\html_writer::tag('h5', $linkhtml);
$options = '';
}
break;
default:
if ($canconnect && ($howconnected != 'linked' || $canunlink)) {
$connectlinkurl = new \moodle_url('/local/o365/ucp.php', ['action' => 'connectlogin']);
$linkhtml = \html_writer::link($connectlinkurl,
get_string('ucp_connection_aadlogin_start', 'local_o365', $opname));
echo $options.$header.\html_writer::tag('h5', $linkhtml);
$options = '';
}
}
echo \html_writer::end_div();
}
// Connected account.
$header = \html_writer::start_div('local_o365_connectionoption');
$header .= \html_writer::tag('h4', get_string('ucp_connection_linked', 'local_o365'));
$header .= \html_writer::div(get_string('ucp_connection_linked_desc', 'local_o365'));
$linkhtml = '';
switch ($connectiontype) {
case 'linked':
if ($canunlink) {
$disconnecttokenurl = new \moodle_url('/local/o365/ucp.php', ['action' => 'disconnecttoken']);
$linkhtml = \html_writer::link($disconnecttokenurl,
get_string('ucp_connection_linked_stop', 'local_o365', $opname));
}
break;
case 'aadlogin':
if ($canlink && auth_oidc_connectioncapability($USER->id, 'disconnect')) {
$connecttokenurl = new \moodle_url('/local/o365/ucp.php', ['action' => 'migratetolinked']);
$linkhtml = \html_writer::link($connecttokenurl,
get_string('ucp_connection_linked_migrate', 'local_o365', $opname));
}
break;
default:
if ($canlink) {
$connecttokenurl = new \moodle_url('/local/o365/ucp.php', ['action' => 'connecttoken']);
$linkhtml = \html_writer::link($connecttokenurl,
get_string('ucp_connection_linked_start', 'local_o365', $opname));
}
}
if (!empty($linkhtml)) {
echo $options.$header.\html_writer::tag('h5', $linkhtml);
echo \html_writer::end_div();
}
echo \html_writer::end_div();
echo $OUTPUT->footer();
}