Horde_ActiveSync_Message_Task::setRecurrence PHP Метод

setRecurrence() публичный Метод

Set recurrence information for this task
public setRecurrence ( Horde_Date_Recurrence $recurrence )
$recurrence Horde_Date_Recurrence
    public function setRecurrence(Horde_Date_Recurrence $recurrence)
    {
        $r = Horde_ActiveSync::messageFactory('TaskRecurrence');
        // Map the type fields
        switch ($recurrence->recurType) {
            case Horde_Date_Recurrence::RECUR_DAILY:
                $r->type = Horde_ActiveSync_Message_Recurrence::TYPE_DAILY;
                break;
            case Horde_Date_Recurrence::RECUR_WEEKLY:
                $r->type = Horde_ActiveSync_Message_Recurrence::TYPE_WEEKLY;
                $r->dayofweek = $recurrence->getRecurOnDays();
                break;
            case Horde_Date_Recurrence::RECUR_MONTHLY_DATE:
                $r->type = Horde_ActiveSync_Message_Recurrence::TYPE_MONTHLY;
                $r->dayofmonth = $recurrence->start->mday;
                break;
            case Horde_Date_Recurrence::RECUR_MONTHLY_WEEKDAY:
                $r->type = Horde_ActiveSync_Message_Recurrence::TYPE_MONTHLY_NTH;
                $r->weekofmonth = ceil($recurrence->start->mday / 7);
                $r->dayofweek = $this->_dayOfWeekMap[$recurrence->start->dayOfWeek()];
                break;
            case Horde_Date_Recurrence::RECUR_YEARLY_DATE:
                $r->type = Horde_ActiveSync_Message_Recurrence::TYPE_YEARLY;
                break;
            case Horde_Date_Recurrence::RECUR_YEARLY_WEEKDAY:
                $r->type = Horde_ActiveSync_Message_Recurrence::TYPE_YEARLYNTH;
                $r->dayofweek = $this->_dayOfWeekMap[$recurrence->start->dayOfWeek()];
                $r->weekofmonth = ceil($recurrence->start->mday / 7);
                $r->monthofyear = $recurrence->start->month;
                break;
        }
        if (!empty($recurrence->recurInterval)) {
            $r->interval = $recurrence->recurInterval;
        }
        // AS messages can only have one or the other (or none), not both
        if ($recurrence->hasRecurCount()) {
            $r->occurrences = $recurrence->getRecurCount();
        } elseif ($recurrence->hasRecurEnd()) {
            $r->until = $recurrence->getRecurEnd();
        }
        // Set the start of the recurrence series.
        $r->start = clone $this->duedate;
        $this->_properties['recurrence'] = $r;
    }

Usage Example

Пример #1
0
 /**
  * Create an AS message from this task
  *
  * @param array $options  Options:
  *   - protocolversion: (float)  The EAS version to support
  *                      DEFAULT: 2.5
  *   - bodyprefs: (array)  A BODYPREFERENCE array.
  *                DEFAULT: none (No body prefs enforced).
  *   - truncation: (integer)  Truncate event body to this length
  *                 DEFAULT: none (No truncation).
  *
  * @return Horde_ActiveSync_Message_Task
  */
 public function toASTask(array $options = array())
 {
     $message = new Horde_ActiveSync_Message_Task(array('protocolversion' => $options['protocolversion']));
     /* Notes and Title */
     if ($options['protocolversion'] >= Horde_ActiveSync::VERSION_TWELVE) {
         $bp = $options['bodyprefs'];
         $body = new Horde_ActiveSync_Message_AirSyncBaseBody();
         $body->type = Horde_ActiveSync::BODYPREF_TYPE_PLAIN;
         if (isset($bp[Horde_ActiveSync::BODYPREF_TYPE_PLAIN]['truncationsize'])) {
             $truncation = $bp[Horde_ActiveSync::BODYPREF_TYPE_PLAIN]['truncationsize'];
         } elseif (isset($bp[Horde_ActiveSync::BODYPREF_TYPE_HTML])) {
             $truncation = $bp[Horde_ActiveSync::BODYPREF_TYPE_HTML]['truncationsize'];
             $this->desc = Horde_Text_Filter::filter($this->desc, 'Text2html', array('parselevel' => Horde_Text_Filter_Text2html::MICRO));
         } else {
             $truncation = false;
         }
         if ($truncation && Horde_String::length($this->desc) > $truncation) {
             $body->data = Horde_String::substr($this->desc, 0, $truncation);
             $body->truncated = 1;
         } else {
             $body->data = $this->desc;
         }
         $body->estimateddatasize = Horde_String::length($this->desc);
         $message->airsyncbasebody = $body;
     } else {
         $message->body = $this->desc;
     }
     $message->subject = $this->name;
     /* Completion */
     if ($this->completed) {
         $message->datecompleted = new Horde_Date($this->completed_date);
         $message->complete = Horde_ActiveSync_Message_Task::TASK_COMPLETE_TRUE;
     } else {
         $message->complete = Horde_ActiveSync_Message_Task::TASK_COMPLETE_FALSE;
     }
     /* Due Date */
     if (!empty($this->due)) {
         $message->utcduedate = new Horde_Date($this->due);
         $message->duedate = new Horde_Date($this->due, 'UTC');
     }
     /* Start Date */
     if (!empty($this->start)) {
         $message->utcstartdate = new Horde_Date($this->start);
         $message->startdate = new Horde_Date($this->start, 'UTC');
     }
     /* Priority */
     switch ($this->priority) {
         case 5:
             $priority = Horde_ActiveSync_Message_Task::IMPORTANCE_LOW;
             break;
         case 4:
         case 3:
         case 2:
             $priority = Horde_ActiveSync_Message_Task::IMPORTANCE_NORMAL;
             break;
         case 1:
             $priority = Horde_ActiveSync_Message_Task::IMPORTANCE_HIGH;
             break;
         default:
             $priority = Horde_ActiveSync_Message_Task::IMPORTANCE_NORMAL;
     }
     $message->setImportance($priority);
     /* Reminders */
     if ($this->due && $this->alarm) {
         $message->setReminder(new Horde_Date($this->due - $this->alarm * 60));
     }
     /* Recurrence */
     if ($this->recurs()) {
         $message->setRecurrence($this->recurrence);
     }
     /* Categories */
     $message->categories = $this->tags;
     return $message;
 }