/** * Print the edit tour page. * * @param int $id The ID of the tour */ protected function edit_tour($id = null) { global $PAGE; if ($id) { $tour = tour::instance($id); $PAGE->navbar->add($tour->get_name(), $tour->get_edit_link()); } else { $tour = new tour(); $PAGE->navbar->add(get_string('newtour', 'tool_usertours'), $tour->get_edit_link()); } $form = new forms\edittour($tour); if ($form->is_cancelled()) { redirect(helper::get_list_tour_link()); } else { if ($data = $form->get_data()) { // Creating a new tour. $tour->set_name($data->name); $tour->set_description($data->description); $tour->set_pathmatch($data->pathmatch); $tour->set_enabled(!empty($data->enabled)); foreach (configuration::get_defaultable_keys() as $key) { $tour->set_config($key, $data->{$key}); } // Save filter values. foreach (helper::get_all_filters() as $filterclass) { $filterclass::save_filter_values_from_form($tour, $data); } $tour->persist(); redirect(helper::get_list_tour_link()); } else { if (empty($tour)) { $this->header('newtour'); } else { if (!empty($tour->get_config(self::CONFIG_SHIPPED_TOUR))) { notification::add(get_string('modifyshippedtourwarning', 'tool_usertours'), notification::WARNING); } $this->header($tour->get_name()); $data = $tour->prepare_data_for_form(); // Prepare filter values for the form. foreach (helper::get_all_filters() as $filterclass) { $filterclass::prepare_filter_values_for_form($tour, $data); } $form->set_data($data); } $form->display(); $this->footer(); } } }