in classes/api/base.php [478:525]
public function sync_notebook_data() {
$notebookname = get_string('notebookname', 'local_onenote');
$courses = enrol_get_my_courses(); // Get the current user enrolled courses.
$notebooksarray = [];
$notebooks = $this->get_items_list();
foreach ($notebooks as $notebook) {
if (isset($notebook['id'])) {
$notebooksarray[$notebook['id']] = $notebook['title'];
}
}
if (!(in_array($notebookname, $notebooksarray))) {
// Moodle notebook not found, create it.
try {
if (\local_o365\rest\unified::is_configured() === true) {
$notebookdata = json_encode(['displayName' => $notebookname]);
} else {
$notebookdata = json_encode(['name' => $notebookname]);
}
$creatednotebook = $this->apicall('post', '/notebooks', $notebookdata);
$creatednotebook = $this->process_apicall_response($creatednotebook, ['id' => null]);
} catch (\Exception $e) {
\local_onenote\utils::debug('Could not create Moodle notebook', 'sync_notebook_data', $e);
return false;
}
$sections = [];
if (!empty($courses)) {
$this->sync_sections($courses, $creatednotebook['id'], $sections);
}
} else {
// Moodle notebook found, sync sections with courses.
$notebookid = array_search($notebookname, $notebooksarray);
$response = $this->apicall('get', '/notebooks/'.$notebookid.'/sections/');
$existingsections = $this->process_apicall_response($response, ['value' => null]);
$sections = [];
foreach ($existingsections['value'] as $section) {
if (isset($section['displayName'])) {
$sections[$section['id']] = $section['displayName'];
} else {
$sections[$section['id']] = $section['name'];
}
}
if (!empty($courses)) {
$this->sync_sections($courses, $notebookid, $sections);
}
}
}