in classes/api/base.php [121:184]
public static function getinstance() {
global $USER, $SESSION, $CFG;
$msaccountclass = '\local_onenote\api\msaccount';
$o365class = '\local_onenote\api\o365';
$class = '';
$debugtracker = '';
$debugcaller = 'onenote\api\base\getinstance';
$iso365user = (class_exists('\local_o365\rest\onenote')
&& \local_o365\utils::is_o365_connected($USER->id) === true) ? true : false;
if ($iso365user === true) {
$debugtracker .= '1';
// Check if the user is logged in to msaccount OneNote, or has o365 OneNote disabled.
$sesskey = class_exists('\local_msaccount\client') ? 'msaccount_client-'.md5(\local_msaccount\client::SCOPE) : null;
$disableo365onenote = get_config('local_o365', 'onenote');
$iso365user = ((!empty($sesskey) && !empty($SESSION->$sesskey)) || !empty($disableo365onenote)) ? false : true;
if ($iso365user === true) {
$debugtracker .= '2';
try {
$httpclient = new \local_o365\httpclient();
$clientdata = \local_o365\oauth2\clientdata::instance_from_oidc();
$onenoteresource = (\local_o365\rest\unified::is_configured() === true)
? \local_o365\rest\unified::get_tokenresource()
: \local_o365\rest\onenote::get_tokenresource();
$token = \local_o365\oauth2\token::instance($USER->id, $onenoteresource, $clientdata, $httpclient);
if (empty($token)) {
$debugtracker .= '5';
$iso365user = false;
}
} catch (\Exception $e) {
\local_onenote\utils::debug($e->getMessage(), $debugcaller, $debugtracker);
$debugtracker .= '4';
$iso365user = false;
}
} else {
$debugtracker .= '3';
}
if ($iso365user === true) {
$debugtracker .= '7';
$class = $o365class;
} else {
$debugtracker .= '8';
$class = (class_exists('\local_msaccount\client')) ? $msaccountclass : null;
\local_onenote\utils::debug('was o365 user but fell back to msaccount.', $debugcaller, $debugtracker);
}
} else {
$debugtracker .= '6';
$class = (class_exists('\local_msaccount\client')) ? $msaccountclass : null;
}
if (empty($class)) {
\local_onenote\utils::debug('no usable onenote api was found.', $debugcaller, $debugtracker);
throw new \moodle_exception('error_noapiavailable', 'local_onenote');
}
if (empty(self::$instance)) {
self::$instance = new $class();
}
return self::$instance;
}