_exportDateTime() 공개 메소드

Export a DateTime field.
public _exportDateTime ( integer | object | array $value, boolean $floating = false ) : string
$value integer | object | array The time value to export (either a Horde_Date, array, or timestamp).
$floating boolean Whether to return a floating date-time (without time zone information).
리턴 string The string representation of the datetime value.
예제 #1
0
파일: Sync4j.php 프로젝트: jubinpatel/horde
 public function vtodo2sif($vcard)
 {
     $iCal = new Horde_Icalendar();
     if (!$iCal->parsevCalendar($vcard)) {
         return PEAR::raiseError('There was an error importing the data.');
     }
     $components = $iCal->getComponents();
     switch (count($components)) {
         case 0:
             return PEAR::raiseError('No data was found');
         case 1:
             $content = $components[0];
             break;
         default:
             return PEAR::raiseError('Multiple components found; only one is supported.');
     }
     $hash['Complete'] = 0;
     $due = false;
     $attr = $content->getAllAttributes();
     foreach ($attr as $item) {
         switch ($item['name']) {
             case 'SUMMARY':
                 $hash['Subject'] = $item['value'];
                 break;
             case 'DESCRIPTION':
                 $hash['Body'] = $item['value'];
                 break;
             case 'PRIORITY':
                 if ($item['value'] == 1) {
                     $hash['Importance'] = 2;
                 } elseif ($item['value'] == 5) {
                     $hash['Importance'] = 0;
                 } else {
                     $hash['Importance'] = 1;
                 }
                 break;
             case 'DTSTART':
                 $hash['StartDate'] = Horde_Icalendar::_exportDateTime($item['value']);
                 break;
             case 'DUE':
                 $hash['DueDate'] = Horde_Icalendar::_exportDateTime($item['value']);
                 $due = $item['value'];
                 break;
             case 'AALARM':
                 $hash['ReminderTime'] = $item['value'];
                 $hash['ReminderSet'] = 1;
                 break;
             case 'STATUS':
                 $hash['Complete'] = $item['value'] == 'COMPLETED' ? 1 : 0;
                 break;
             case 'CATEGORIES':
                 $hash['Categories'] = $item['value'];
                 break;
             case 'CLASS':
                 switch (Horde_String::upper($item['value'])) {
                     case 'PUBLIC':
                         $hash['Sensitivity'] = 0;
                         break;
                     case 'PRIVATE':
                         $hash['Sensitivity'] = 2;
                         break;
                     case 'CONFIDENTIAL':
                         $hash['Sensitivity'] = 3;
                         break;
                 }
                 break;
         }
     }
     if ($due && !isset($hash['ReminderSet'])) {
         // Parse VALARM components.
         foreach ($content->getComponents() as $component) {
             if ($component->getType() != 'vAlarm') {
                 continue;
             }
             try {
                 $trigger = $component->getAttribute('TRIGGER');
             } catch (Horde_Icalendar_Exception $e) {
                 continue;
             }
             if (is_array($trigger) || empty($trigger)) {
                 continue;
             }
             $hash['ReminderSet'] = 1;
             $hash['ReminderTime'] = Horde_Icalendar::_exportDateTime($due - $trigger);
         }
     }
     return Horde_SyncMl_Device_sync4j::array2sif($hash, '<?xml version="1.0"?><task>', '</task>');
 }
 /**
  * Creates an iCalendar 2.0 recurrence rule.
  *
  * @link http://rfc.net/rfc2445.html#s4.3.10
  * @link http://rfc.net/rfc2445.html#s4.8.5
  * @link http://www.shuchow.com/vCalAddendum.html
  *
  * @param Horde_Icalendar $calendar  A Horde_Icalendar object instance.
  *
  * @return string  An iCalendar 2.0 conform RRULE value.
  */
 public function toRRule20($calendar)
 {
     switch ($this->recurType) {
         case self::RECUR_NONE:
             return '';
         case self::RECUR_DAILY:
             $rrule = 'FREQ=DAILY;INTERVAL=' . $this->recurInterval;
             break;
         case self::RECUR_WEEKLY:
             $rrule = 'FREQ=WEEKLY;INTERVAL=' . $this->recurInterval . ';BYDAY=';
             $vcaldays = array('SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA');
             for ($i = $flag = 0; $i <= 7; ++$i) {
                 if ($this->recurOnDay(pow(2, $i))) {
                     if ($flag) {
                         $rrule .= ',';
                     }
                     $rrule .= $vcaldays[$i];
                     $flag = true;
                 }
             }
             break;
         case self::RECUR_MONTHLY_DATE:
             $rrule = 'FREQ=MONTHLY;INTERVAL=' . $this->recurInterval;
             break;
         case self::RECUR_MONTHLY_WEEKDAY:
             if (isset($this->recurNthDay)) {
                 $nth_weekday = $this->recurNthDay;
                 $day_of_week = log($this->recurData, 2);
             } else {
                 $day_of_week = $this->start->dayOfWeek();
                 $nth_weekday = (int) ($this->start->mday / 7);
                 if ($this->start->mday % 7 > 0) {
                     $nth_weekday++;
                 }
             }
             $vcaldays = array('SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA');
             $rrule = 'FREQ=MONTHLY;INTERVAL=' . $this->recurInterval . ';BYDAY=' . $nth_weekday . $vcaldays[$day_of_week];
             break;
         case self::RECUR_YEARLY_DATE:
             $rrule = 'FREQ=YEARLY;INTERVAL=' . $this->recurInterval;
             break;
         case self::RECUR_YEARLY_DAY:
             $rrule = 'FREQ=YEARLY;INTERVAL=' . $this->recurInterval . ';BYYEARDAY=' . $this->start->dayOfYear();
             break;
         case self::RECUR_YEARLY_WEEKDAY:
             if (isset($this->recurNthDay)) {
                 $nth_weekday = $this->recurNthDay;
                 $day_of_week = log($this->recurData, 2);
             } else {
                 $day_of_week = $this->start->dayOfWeek();
                 $nth_weekday = (int) ($this->start->mday / 7);
                 if ($this->start->mday % 7 > 0) {
                     $nth_weekday++;
                 }
             }
             $months = !empty($this->recurMonths) ? join(',', $this->recurMonths) : $this->start->month;
             $vcaldays = array('SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA');
             $rrule = 'FREQ=YEARLY;INTERVAL=' . $this->recurInterval . ';BYDAY=' . $nth_weekday . $vcaldays[$day_of_week] . ';BYMONTH=' . $this->start->month;
             break;
     }
     if ($this->hasRecurEnd()) {
         $recurEnd = clone $this->recurEnd;
         $rrule .= ';UNTIL=' . $calendar->_exportDateTime($recurEnd);
     }
     if ($count = $this->getRecurCount()) {
         $rrule .= ';COUNT=' . $count;
     }
     return $rrule;
 }