Horde_Date_Recurrence::addException PHP Method

addException() public method

Adds an exception to a recurring event.
public addException ( integer $year, integer $month, integer $mday )
$year integer The year of the exception.
$month integer The month of the exception.
$mday integer The day of the month of the exception.
    public function addException($year, $month, $mday)
    {
        $key = sprintf('%04d%02d%02d', $year, $month, $mday);
        if (array_search($key, $this->exceptions) === false) {
            $this->exceptions[] = sprintf('%04d%02d%02d', $year, $month, $mday);
        }
    }

Usage Example

Exemplo n.º 1
0
 public static function readRecurrenceForm($start, $timezone, $recurrence = null)
 {
     $recur = Horde_Util::getFormData('recur');
     if (!strlen($recur)) {
         return $recurrence;
     }
     if (!isset($recurrence)) {
         $recurrence = new Horde_Date_Recurrence($start);
     } else {
         $recurrence->setRecurStart($start);
     }
     if (Horde_Util::getFormData('recur_end_type') == 'date') {
         if ($end_date = Horde_Util::getFormData('recur_end_date')) {
             // From ajax interface.
             $date_ob = Kronolith::parseDate($end_date, false);
             $recur_enddate = array('year' => $date_ob->year, 'month' => $date_ob->month, 'day' => $date_ob->mday);
         } else {
             // From traditional interface.
             $recur_enddate = Horde_Util::getFormData('recur_end');
         }
         if ($recurrence->hasRecurEnd()) {
             $recurEnd = $recurrence->recurEnd;
             $recurEnd->month = $recur_enddate['month'];
             $recurEnd->mday = $recur_enddate['day'];
             $recurEnd->year = $recur_enddate['year'];
         } else {
             $recurEnd = new Horde_Date(array('hour' => 23, 'min' => 59, 'sec' => 59, 'month' => $recur_enddate['month'], 'mday' => $recur_enddate['day'], 'year' => $recur_enddate['year']), $timezone);
         }
         $recurrence->setRecurEnd($recurEnd);
     } elseif (Horde_Util::getFormData('recur_end_type') == 'count') {
         $recurrence->setRecurCount(Horde_Util::getFormData('recur_count'));
     } elseif (Horde_Util::getFormData('recur_end_type') == 'none') {
         $recurrence->setRecurCount(0);
         $recurrence->setRecurEnd(null);
     }
     $recurrence->setRecurType($recur);
     switch ($recur) {
         case Horde_Date_Recurrence::RECUR_DAILY:
             $recurrence->setRecurInterval(Horde_Util::getFormData('recur_daily_interval', 1));
             break;
         case Horde_Date_Recurrence::RECUR_WEEKLY:
             $weekly = Horde_Util::getFormData('weekly');
             $weekdays = 0;
             if (is_array($weekly)) {
                 foreach ($weekly as $day) {
                     $weekdays |= $day;
                 }
             }
             if ($weekdays == 0) {
                 // Sunday starts at 0.
                 switch ($start->dayOfWeek()) {
                     case 0:
                         $weekdays |= Horde_Date::MASK_SUNDAY;
                         break;
                     case 1:
                         $weekdays |= Horde_Date::MASK_MONDAY;
                         break;
                     case 2:
                         $weekdays |= Horde_Date::MASK_TUESDAY;
                         break;
                     case 3:
                         $weekdays |= Horde_Date::MASK_WEDNESDAY;
                         break;
                     case 4:
                         $weekdays |= Horde_Date::MASK_THURSDAY;
                         break;
                     case 5:
                         $weekdays |= Horde_Date::MASK_FRIDAY;
                         break;
                     case 6:
                         $weekdays |= Horde_Date::MASK_SATURDAY;
                         break;
                 }
             }
             $recurrence->setRecurInterval(Horde_Util::getFormData('recur_weekly_interval', 1));
             $recurrence->setRecurOnDay($weekdays);
             break;
         case Horde_Date_Recurrence::RECUR_MONTHLY_DATE:
             switch (Horde_Util::getFormData('recur_monthly_scheme')) {
                 case Horde_Date_Recurrence::RECUR_MONTHLY_WEEKDAY:
                     $recurrence->setRecurType(Horde_Date_Recurrence::RECUR_MONTHLY_WEEKDAY);
                 case Horde_Date_Recurrence::RECUR_MONTHLY_DATE:
                     $recurrence->setRecurInterval(Horde_Util::getFormData('recur_monthly') ? 1 : Horde_Util::getFormData('recur_monthly_interval', 1));
                     break;
                 default:
                     $recurrence->setRecurInterval(Horde_Util::getFormData('recur_day_of_month_interval', 1));
                     break;
             }
             break;
         case Horde_Date_Recurrence::RECUR_MONTHLY_WEEKDAY:
             $recurrence->setRecurInterval(Horde_Util::getFormData('recur_week_of_month_interval', 1));
             break;
         case Horde_Date_Recurrence::RECUR_YEARLY_DATE:
             switch (Horde_Util::getFormData('recur_yearly_scheme')) {
                 case Horde_Date_Recurrence::RECUR_YEARLY_WEEKDAY:
                 case Horde_Date_Recurrence::RECUR_YEARLY_DAY:
                     $recurrence->setRecurType(Horde_Util::getFormData('recur_yearly_scheme'));
                 case Horde_Date_Recurrence::RECUR_YEARLY_DATE:
                     $recurrence->setRecurInterval(Horde_Util::getFormData('recur_yearly') ? 1 : Horde_Util::getFormData('recur_yearly_interval', 1));
                     break;
                 default:
                     $recurrence->setRecurInterval(Horde_Util::getFormData('recur_yearly_interval', 1));
                     break;
             }
             break;
         case Horde_Date_Recurrence::RECUR_YEARLY_DAY:
             $recurrence->setRecurInterval(Horde_Util::getFormData('recur_yearly_day_interval', $yearly_interval));
             break;
         case Horde_Date_Recurrence::RECUR_YEARLY_WEEKDAY:
             $recurrence->setRecurInterval(Horde_Util::getFormData('recur_yearly_weekday_interval', $yearly_interval));
             break;
     }
     if ($exceptions = Horde_Util::getFormData('exceptions')) {
         foreach ($exceptions as $exception) {
             $recurrence->addException((int) substr($exception, 0, 4), (int) substr($exception, 4, 2), (int) substr($exception, 6, 2));
         }
     }
     return $recurrence;
 }
All Usage Examples Of Horde_Date_Recurrence::addException