. namespace core_courseformat\output\local\state; use core_courseformat\base as course_format; use renderable; use stdClass; /** * Contains the ajax update course structure. * * @package core_course * @copyright 2021 Ferran Recio * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class course implements renderable { /** @var course_format the course format class */ protected $format; /** * Constructor. * * @param course_format $format the course format */ public function __construct(course_format $format) { $this->format = $format; } /** * Export this data so it can be used as state object in the course editor. * * @param renderer_base $output typically, the renderer that's calling this function * @return stdClass data context for a mustache template */ public function export_for_template(\renderer_base $output): stdClass { $format = $this->format; $course = $format->get_course(); $modinfo = $this->format->get_modinfo(); $data = (object)[ 'id' => $course->id, 'numsections' => $format->get_last_section_number(), 'sectionlist' => [], 'editmode' => $format->show_editor(), 'highlighted' => $format->get_section_highlighted_name(), ]; $sections = $modinfo->get_section_info_all(); foreach ($sections as $section) { if (!empty($section->uservisible)) { $data->sectionlist[] = $section->id; } } return $data; } }