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; }
/** * @return \yii\db\ActiveQuery */ public function getCalendarEvents() { return $this->hasMany(CalendarEvent::className(), ['calendar_id' => 'calendar_id'])->viaTable(User::tableName(), ['id' => 'user_id']); }