protected function sync_sections()

in classes/api/base.php [534:561]


    protected function sync_sections($courses, $notebookid, array $sections) {
        $sectionendpoint = '/notebooks/'.$notebookid.'/sections/';

        foreach ($courses as $course) {
            // OneNote sections have character and length restrictions. Ensure course name complies.
            $coursename = trim($course->fullname);
            $restricted = ['?', '*', '\\', '/', ':', '<', '>', '|', '&', '#', '"', '\'', '%', '~'];
            $coursename = str_replace($restricted, '', $coursename);
            if (strlen($coursename) >= 50) {
                $coursename = substr($coursename, 0, 49);
            }

            if (!in_array($coursename, $sections)) {
                // Create section.
                if (\local_o365\rest\unified::is_configured() === true) {
                    $sectiondata = json_encode(['displayName' => $coursename]);
                } else {
                    $sectiondata = json_encode(['name' => $coursename]);
                }
                $response = $this->apicall('post', $sectionendpoint, $sectiondata);
                $response = $this->process_apicall_response($response, ['id' => null]);
                $this->upsert_user_section($course->id, $response['id']);
            } else {
                $sectionid = array_search($coursename, $sections);
                $this->upsert_user_section($course->id, $sectionid);
            }
        }
    }