private function set_event_start_and_end_date(CalendarEvent $event, $new_start_date, $new_end_date) { switch ($event->get_content()->get_repeat_type()) { case CalendarEventContent::DAILY: $new_start_date->add_days(1); $new_end_date->add_days(1); $event->set_start_date($new_start_date); $event->set_end_date($new_end_date); break; case CalendarEventContent::WEEKLY: $new_start_date->add_weeks(1); $new_end_date->add_weeks(1); $event->set_start_date($new_start_date); $event->set_end_date($new_end_date); break; case CalendarEventContent::MONTHLY: $new_start_month = $new_start_date->get_month() + 1; if ($new_start_month > 12) { $new_start_date->set_month(1); $new_start_date->set_year($new_start_date->get_year() + 1); } else { $new_start_date->set_month($new_start_month); } $new_end_month = $new_end_date->get_month() + 1; if ($new_end_month > 12) { $new_end_date->set_month(1); $new_end_date->set_year($new_end_date->get_year() + 1); } else { $new_end_date->set_month($new_end_month); } $event->set_start_date($new_start_date); $event->set_end_date($new_end_date); break; case CalendarEventContent::YEARLY: $new_start_date->set_year($new_start_date->get_year() + 1); $new_end_date->set_year($new_end_date->get_year() + 1); $event->set_start_date($new_start_date); $event->set_end_date($new_end_date); break; default: $event->set_start_date($new_start_date); $event->set_end_date($new_end_date); break; } return $event; }