From 2c93b20f5950d401bf54de9ac345a53172a8d4d7 Mon Sep 17 00:00:00 2001 From: Jan Schneider Date: Wed, 11 Nov 2009 19:47:52 +0100 Subject: [PATCH] Save event with new form (except attendees). --- kronolith/lib/Event.php | 46 +++++++++++++++++++++++++++++++++++++++------- 1 file changed, 39 insertions(+), 7 deletions(-) diff --git a/kronolith/lib/Event.php b/kronolith/lib/Event.php index 9c4e61610..29743a7fe 100644 --- a/kronolith/lib/Event.php +++ b/kronolith/lib/Event.php @@ -1926,7 +1926,22 @@ abstract class Kronolith_Event $this->recurrence = new Horde_Date_Recurrence($this->start); } if (Horde_Util::getFormData('recur_end_type') == 'date') { - $recur_enddate = Horde_Util::getFormData('recur_end'); + if ($end_date = Horde_Util::getFormData('recur_end_date')) { + // Try exact format match first. + if ($date_arr = strptime($end_date, $date_format)) { + $recur_enddate = + array('year' => $date_arr['tm_year'] + 1900, + 'month' => $date_arr['tm_mon'] + 1, + 'day' => $date_arr['tm_mday']); + } else { + $date_ob = new Horde_Date($end_date); + $recur_enddate = array('year' => $date_ob->year, + 'month' => $date_ob->month, + 'day' => $date_ob->mday); + } + } else { + $recur_enddate = Horde_Util::getFormData('recur_end'); + } if ($this->recurrence->hasRecurEnd()) { $recurEnd = $this->recurrence->recurEnd; $recurEnd->month = $recur_enddate['month']; @@ -1982,23 +1997,40 @@ abstract class Kronolith_Event break; case Horde_Date_Recurrence::RECUR_MONTHLY_DATE: - $this->recurrence->setRecurInterval(Horde_Util::getFormData('recur_day_of_month_interval', 1)); - break; + switch (Horde_Util::getFormData('recur_monthly_scheme')) { + case Horde_Date_Recurrence::RECUR_MONTHLY_WEEKDAY: + $this->recurrence->setRecurType(Horde_Date_Recurrence::RECUR_MONTHLY_WEEKDAY); + case Horde_Date_Recurrence::RECUR_MONTHLY_DATE: + $this->recurrence->setRecurInterval(Horde_Util::getFormData('recur_monthly') ? 1 : Horde_Util::getFormData('recur_monthly_interval', 1)); + break; + default: + $this->recurrence->setRecurInterval(Horde_Util::getFormData('recur_day_of_month_interval', 1)); + break; + } case Horde_Date_Recurrence::RECUR_MONTHLY_WEEKDAY: $this->recurrence->setRecurInterval(Horde_Util::getFormData('recur_week_of_month_interval', 1)); break; case Horde_Date_Recurrence::RECUR_YEARLY_DATE: - $this->recurrence->setRecurInterval(Horde_Util::getFormData('recur_yearly_interval', 1)); - break; + switch (Horde_Util::getFormData('recur_yearly_scheme')) { + case Horde_Date_Recurrence::RECUR_YEARLY_WEEKDAY: + case Horde_Date_Recurrence::RECUR_YEARLY_DAY: + $this->recurrence->setRecurType(Horde_Util::getFormData('recur_yearly_scheme')); + case Horde_Date_Recurrence::RECUR_YEARLY_DATE: + $this->recurrence->setRecurInterval(Horde_Util::getFormData('recur_yearly') ? 1 : Horde_Util::getFormData('recur_yearly_interval', 1)); + break; + default: + $this->recurrence->setRecurInterval(Horde_Util::getFormData('recur_yearly_interval', 1)); + break; + } case Horde_Date_Recurrence::RECUR_YEARLY_DAY: - $this->recurrence->setRecurInterval(Horde_Util::getFormData('recur_yearly_day_interval', 1)); + $this->recurrence->setRecurInterval(Horde_Util::getFormData('recur_yearly_day_interval', $yearly_interval)); break; case Horde_Date_Recurrence::RECUR_YEARLY_WEEKDAY: - $this->recurrence->setRecurInterval(Horde_Util::getFormData('recur_yearly_weekday_interval', 1)); + $this->recurrence->setRecurInterval(Horde_Util::getFormData('recur_yearly_weekday_interval', $yearly_interval)); break; } -- 2.11.0