我如何在laravel中的Google日历中添加重复规则。 我正在使用以下给定的库来创建Google日历链接。
“ https://github.com/spatie/calendar-links”。
在这里,我正在分享我的Google日历重复活动代码,请为我提供适当的解决方案,它正在工作。 非常适合为单个事件创建链接,但不能创建重复事件。
"$timeStamp = strtotime(str_replace('/','-','Sat 24/12/2018 5:56 PM'));
$dateTime=date('Y-m-d H:i',$timeStamp);
$from = \DateTime::createFromFormat('Y-m-d H:i',$dateTime);
$from = $from->format('Ymd\THis');
$endDate=date('Y-m-d',$timeStamp);
$newEndDate = $endDate." 24:00";
$to = \DateTime::createFromFormat('Y-m-d H:i',$newEndDate);
$to = $to->format('Ymd\THis');
$url = 'https://calendar.google.com/calendar/render?action=TEMPLATE';
$url .= '&text=Event_Test';
$url .= '&dates='.$from.'/'.$to;
$url .= '&rrule=FREQ=WEEKLY;DTSTART=20181231T000000Z;INTERVAL=1;COUNT=1';
$url .= '&details='.urlencode('Event_Test');
$url .= '&location='.urlencode('Delhi');
$url .= '&sprop=&sprop=name:';
return $url;"
谢谢
答案 0 :(得分:0)
我一直在努力。我克隆了存储库,然后将以下内容添加到Event.php。这使我可以传递父eventId并获取实例的集合。
public static function instances($eventId, string $calendarId = null, string $max_results) : Collection
{
$googleCalendar = static::getGoogleCalendar($calendarId);
$googleEvents = $googleCalendar->getInstances($eventId, $max_results);
$useUserOrder = isset($queryParameters['orderBy']);
return collect($googleEvents)
->map(function (Google_Service_Calendar_Event $event) use ($calendarId) {
return static::createFromGoogleCalendarEvent($event, $calendarId);
})
->sortBy(function (Event $event, $index) use ($useUserOrder) {
if ($useUserOrder) {
return $index;
}
return $event->sortDate;
})
->values();
}
还需要将以下内容添加到GoogleCalendar.php
public function getInstances(string $eventId, string $max_results): array
{
return $this->calendarService->events->instances($this->calendarId, $eventId, array('maxResults' => $max_results))->items;
}
现在获取重复使用的父事件的子实例:
Event::instances($schedule->google_event_id,$schedule->location->calendar_id, '5');
请注意,我的项目有一个“位置”表,其中的“时间表”将位置和任务联系在一起,因此每个位置都有其自己的Google日历,并且Google事件ID存储在时间表中。