Exemplo n.º 1
0
 private function saveAssign($new_assign, $send_notification)
 {
     $model = CalendarEvent::findOne($this->id);
     $old_assigned = $model->getAssignedToArray();
     if ($old_assigned) {
         if (!$new_assign) {
             return self::deleteAssign($old_assigned);
         }
         //remove elementos a mais
         $to_delete = array_diff($old_assigned, $new_assign);
         if ($to_delete && !self::deleteAssign($to_delete)) {
             return false;
         }
         $to_create = array_diff($new_assign, $old_assigned);
         if ($to_create && !self::createAssign($to_create, $send_notification)) {
             return false;
         }
     } else {
         if ($new_assign) {
             //Cria novo
             return self::createAssign($new_assign, $send_notification);
         }
     }
     return true;
 }
 public static function getDatesByEventID($id, $start, $end)
 {
     $events = array();
     $evt = CalendarEvent::findOne($id);
     //Só envia os eventos privados do próprio utilizador
     if ($evt->event_type == \app\enum\EventType::Privado && $evt->calendar_id != \Yii::$app->user->identity->calendar_id) {
         return $events;
     }
     if ($evt->recurrence != 1) {
         $events[] = CalendarEvent::getEventArray($evt);
     } else {
         $timezone = date_default_timezone_get();
         $evtstart = new \DateTime($evt->start);
         $evtend = new \DateTime($evt->end);
         $rrule = $evt->recurrence_rule;
         $rule = new \Recurr\Rule($rrule, $evtstart, $evtend, $timezone);
         $transformer = new \Recurr\Transformer\ArrayTransformer();
         //$transformerConfig = new \Recurr\Transformer\ArrayTransformerConfig();
         //$transformerConfig->enableLastDayOfMonthFix();
         //$transformer->setConfig($transformerConfig);
         //$constraint = new \Recurr\Transformer\Constraint\BetweenConstraint($rstart,$rend,true);
         //$results    = $transformer->transform($rule,null,$constraint);
         $results = $transformer->transform($rule);
         //                $textTransformer = new \Recurr\Transformer\TextTransformer(new \Recurr\Transformer\Translator('en'));
         //                echo 'eventos entre '. $start . ' e '. $end .'<br>';
         //                echo $evt->recurrence_rule .'<br>';
         //                echo $textTransformer->transform($rule) .'<br>';
         //
         //                var_dump($results->startsBetween(new \DateTime($start),new \DateTime($end),true)); die;
         foreach ($results->startsBetween(new \DateTime($start), new \DateTime($end), true) as $obj) {
             $s = $obj->getStart();
             $e = $obj->getEnd();
             $evt->setEventDateTime($s->format('Y-m-d H:i'), $e->format('Y-m-d H:i'));
             $events[] = CalendarEvent::getEventArray($evt);
         }
     }
     return $events;
 }
 public function actionSet()
 {
     self::validateRequest();
     $func = \Yii::$app->request->post('func');
     switch ($func) {
         case "updt":
             //end
             $id = \Yii::$app->request->post('id');
             $start = \Yii::$app->request->post('start');
             $end = \Yii::$app->request->post('end');
             $model = CalendarEvent::findOne($id);
             $model->setEventDateTime($start, $end);
             $model->validateRule();
             return $model->save();
         case "":
     }
     return false;
 }
Exemplo n.º 4
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getCalendarEvents()
 {
     return $this->hasMany(CalendarEvent::className(), ['calendar_id' => 'calendar_id'])->viaTable(User::tableName(), ['id' => 'user_id']);
 }