Пример #1
0
 private function _setEventAttributes($model, $params)
 {
     //Grid sends move request
     if (isset($params['offset'])) {
         $model->start_time = \GO\Base\Util\Date::roundQuarters($model->start_time + $params['offset']);
         $model->end_time = \GO\Base\Util\Date::roundQuarters($model->end_time + $params['offset']);
     }
     if (isset($params['offset_days'])) {
         $model->start_time = \GO\Base\Util\Date::date_add($model->start_time, $params['offset_days']);
         $model->end_time = \GO\Base\Util\Date::date_add($model->end_time, $params['offset_days']);
     }
     //when a user resizes an event
     if (isset($params['duration_end_time'])) {
         //only use time for the update
         $old_end_date = getdate($model->end_time);
         $new_end_time = getdate($params['duration_end_time']);
         $model->end_time = mktime($new_end_time['hours'], $new_end_time['minutes'], 0, $old_end_date['mon'], $old_end_date['mday'], $old_end_date['year']);
     }
     if (!empty($params['freq'])) {
         $rRule = new \GO\Base\Util\Icalendar\Rrule();
         $rRule->readJsonArray($params);
         $model->rrule = $rRule->createRrule();
     } elseif (isset($params['freq'])) {
         $model->rrule = "";
     }
     if (isset($params['reminder_value']) && isset($params['reminder_multiplier'])) {
         $model->reminder = \GO\Base\Util\Number::unlocalize($params['reminder_value']) * $params['reminder_multiplier'];
     }
     //		else
     //			$model->reminder = 0;
     $model->setAttributes($params);
 }
Пример #2
0
 protected function beforeSubmit(&$response, &$model, &$params)
 {
     if (isset($params['freq'])) {
         if (!empty($params['freq'])) {
             $rRule = new \GO\Base\Util\Icalendar\Rrule();
             $rRule->readJsonArray($params);
             $model->rrule = $rRule->createRrule();
         } else {
             $model->rrule = '';
         }
     }
     if (!empty($params['remind'])) {
         // Check for a setted reminder
         $model->reminder = \GO\Base\Util\Date::to_unixtime($params['remind_date'] . ' ' . $params['remind_time']);
     } else {
         $model->reminder = 0;
     }
     if ($model->isNew && empty($params['remind']) && !isset($params['priority'])) {
         //This checks if it is called from the quickadd bar
         $model->reminder = $model->getDefaultReminder(\GO\Base\Util\Date::to_unixtime($params['start_time']));
     }
     return parent::beforeSubmit($response, $model, $params);
 }
Пример #3
0
 /**
  * Import a task from a VObject 
  * 
  * @param Sabre\VObject\Component $vobject
  * @param array $attributes Extra attributes to apply to the task. Raw values should be past. No input formatting is applied.
  * @return Task 
  */
 public function importVObject(Sabre\VObject\Component $vobject, $attributes = array())
 {
     //$event = new \GO\Calendar\Model\Event();
     $this->uuid = (string) $vobject->uid;
     $this->name = (string) $vobject->summary;
     $this->description = (string) $vobject->description;
     if (!empty($vobject->dtstart)) {
         $this->start_time = $vobject->dtstart->getDateTime()->format('U');
     }
     if (!empty($vobject->dtend)) {
         $this->due_time = $vobject->dtend->getDateTime()->format('U');
         if (empty($vobject->dtstart)) {
             $this->start_time = $this->due_time;
         }
     }
     if (!empty($vobject->due)) {
         $this->due_time = $vobject->due->getDateTime()->format('U');
     }
     if (empty($vobject->dtstart)) {
         $this->start_time = 0;
     }
     if ($vobject->dtstamp) {
         $this->mtime = $vobject->dtstamp->getDateTime()->format('U');
     }
     if (empty($this->due_time)) {
         $this->due_time = time();
     }
     if ($vobject->rrule) {
         $rrule = new \GO\Base\Util\Icalendar\Rrule();
         $rrule->readIcalendarRruleString($this->start_time, (string) $vobject->rrule);
         $rrule->shiftDays(false);
         $this->rrule = $rrule->createRrule();
         if (isset($rrule->until)) {
             $this->repeat_end_time = $rrule->until;
         }
     }
     //var_dump($vobject->status);
     if ($vobject->status) {
         $this->status = (string) $vobject->status;
     }
     if ($vobject->duration) {
         $duration = \GO\Base\VObject\Reader::parseDuration($vobject->duration);
         $this->end_time = $this->start_time + $duration;
     }
     if (!empty($vobject->priority)) {
         if ((string) $vobject->priority > 5) {
             $this->priority = self::PRIORITY_LOW;
         } elseif ((string) $vobject->priority < 3) {
             $this->priority = self::PRIORITY_HIGH;
         } else {
             $this->priority = self::PRIORITY_NORMAL;
         }
     }
     if ((string) $vobject->completed != '') {
         $this->completion_time = $vobject->completed->getDateTime()->format('U');
         $this->status = 'COMPLETED';
     } else {
         $this->completion_time = 0;
     }
     if (!empty($vobject->{"percent-complete"})) {
         $this->percentage_complete = (string) $vobject->{"percent-complete"};
     }
     if ($this->status == 'COMPLETED' && empty($this->completion_time)) {
         $this->completion_time = time();
     }
     $this->reminder = 0;
     if ($vobject->valarm && $vobject->valarm->trigger) {
         $date = $vobject->valarm->getEffectiveTriggerTime();
         if ($date) {
             $this->reminder = $date->format('U');
         }
     }
     $this->setAttributes($attributes, false);
     $this->cutAttributeLengths();
     if ($this->due_time < $this->start_time) {
         $this->due_time = $this->start_time;
     }
     $this->save();
     return $this;
 }
Пример #4
0
 /**
  * Converts a vcalendar 1.0 component to an icalendar 2.0 component.
  * 
  * @param Sabre_VObject_Component $vobject 
  */
 public static function convertVCalendarToICalendar(Sabre\VObject\Component $vobject)
 {
     if ($vobject->version == '1.0') {
         $vobject->version = '2.0';
         foreach ($vobject->children() as $child) {
             if ($child instanceof Sabre\VObject\Component) {
                 //					for($i=0;$i<count($child->children);$i++){
                 //						$property = $child->children[$i];
                 //						if((string) $property->getValue()==""){
                 //							\GO\Syncml\Server::debug("Unsetting: ".$property->name);
                 //							array_splice($child->children, $i, 1);
                 //							$i--;
                 //						}
                 //
                 //
                 //						\GO\Syncml\Server::debug("Prop: ".$property->name);
                 //
                 //						if(isset($property['ENCODING']) && strtoupper($property['ENCODING'])=='QUOTED-PRINTABLE'){
                 //
                 //							\GO\Syncml\Server::debug("decode");
                 //
                 //							$value = quoted_printable_decode($property->getValue());
                 //							$value = str_replace("\r","",$value);
                 //
                 //							$property->setValue($value);
                 //							unset($property['ENCODING']);
                 //						}
                 //					}
                 if (isset($child->rrule) && (string) $child->rrule != '') {
                     $rrule = new \GO\Base\Util\Icalendar\Rrule();
                     $rrule->readIcalendarRruleString($child->dtstart->getDateTime()->format('U'), (string) $child->rrule);
                     $child->rrule = str_replace('RRULE:', '', $rrule->createRrule());
                 }
                 if (isset($child->exdate)) {
                     $exdates = explode(';', (string) $child->exdate);
                     $child->exdate = $exdates[0];
                     for ($i = 1; $i < count($exdates); $i++) {
                         $child->add('exdate', $exdates[$i]);
                     }
                 }
             }
         }
     }
 }