Не удается получить API повторения Google Calendar PHP

Я пытаюсь получить повторение события с помощью API Календаря Google на PHP, и это не показывает мне повторение.

Следующий код - это код, который я использую:

$params = array(
                'orderBy' => 'startTime',
                'singleEvents' => true,
                'timeMin' => date('c'),
        );
        $listarEventos = $service->events->listEvents($calendar_id, $params);
        foreach ($listarEventos->getItems() as $i){
            echo "<pre>";
            echo $i->recurrence;
            print_r($i);
            echo "</pre>";
            echo "<br>";
        }

И я получаю такие объекты:

Google_Service_Calendar_Event Object
(
    [collection_key:protected] => recurrence
    [internal_gapi_mappings:protected] => Array
        (
        )

    [anyoneCanAddSelf] => 
    [attendeesType:protected] => Google_Service_Calendar_EventAttendee
    [attendeesDataType:protected] => array
    [attendeesOmitted] => 
    [colorId] => 
    [created] => 2015-06-01T07:34:46.000Z
    [creatorType:protected] => Google_Service_Calendar_EventCreator
    [creatorDataType:protected] => 
    [description] => 
    [endType:protected] => Google_Service_Calendar_EventDateTime
    [endDataType:protected] => 
    [endTimeUnspecified] => 
    [etag] => "286628817348xxxx"
    [extendedPropertiesType:protected] => Google_Service_Calendar_EventExtendedProperties
    [extendedPropertiesDataType:protected] => 
    [gadgetType:protected] => Google_Service_Calendar_EventGadget
    [gadgetDataType:protected] => 
    [guestsCanInviteOthers] => 
    [guestsCanModify] => 
    [guestsCanSeeOtherGuests] => 
    [hangoutLink] => 
    [htmlLink] => https://www.google.com/calendar/event?eid=czlqcW9uNmg1aGV0cTBwYXRrcnIxc2dqc3MgcHJ1ZWJhY2FsZW5kYXJpbxxxxxt
    [iCalUID] => [email protected]
    [id] => s9jqon6h5hetq0patkrr1sxxxxx
    [kind] => calendar#event
    [location] => Gra
    [locked] => 
    [organizerType:protected] => Google_Service_Calendar_EventOrganizer
    [organizerDataType:protected] => 
    [originalStartTimeType:protected] => Google_Service_Calendar_EventDateTime
    [originalStartTimeDataType:protected] => 
    [privateCopy] => 
    [recurrence] => 
    [recurringEventId] => 
    [remindersType:protected] => Google_Service_Calendar_EventReminders
    [remindersDataType:protected] => 
    [sequence] => 0
    [sourceType:protected] => Google_Service_Calendar_EventSource
    [sourceDataType:protected] => 
    [startType:protected] => Google_Service_Calendar_EventDateTime
    [startDataType:protected] => 
    [status] => confirmed
    [summary] => Prueba recurrencia
    [transparency] => 
    [updated] => 2015-06-01T07:34:46.742Z
    [visibility] => 
    [modelData:protected] => Array
        (
            [creator] => Array
                (
                    [email] => [email protected]
                    [displayName] => Prueba Calendario
                    [self] => 1
                )

            [organizer] => Array
                (
                    [email] => [email protected]
                    [displayName] => Prueba Calendario
                    [self] => 1
                )

            [start] => Array
                (
                    [dateTime] => 2015-06-19T03:01:00+02:00
                    [timeZone] => Europe/Madrid
                )

            [end] => Array
                (
                    [dateTime] => 2015-06-19T09:03:00+02:00
                    [timeZone] => Europe/Madrid
                )

            [reminders] => Array
                (
                    [useDefault] => 1
                )

        )

    [processed:protected] => Array
        (
        )

)

Я должен сказать, что я сохраняю повторение со следующим кодом:

$event->setRecurrence(array('RRULE:FREQ='.$FREQ.';INTERVAL='.$INTERVAL));

И я доказал, что событие повторяется, поэтому я не знаю, почему я не могу получить повторение.

Большое спасибо!


person Nikilonga    schedule 02.06.2015    source источник


Ответы (2)


Вы не получите повторения, если используете 'singleEvents' => true.

Документация (https://developers.google.com/google-apps/calendar/v3/reference/events/list) говорит:

singleEvents boolean Следует ли расширять повторяющиеся события в экземпляры и возвращать только единичные разовые события и экземпляры повторяющихся событий, но не сами базовые повторяющиеся события. По желанию. По умолчанию - False.

person Xeron    schedule 09.06.2015
comment
Спасибо за ответ, но проблема не в этом. Я это доказал, но это та же проблема. - person Nikilonga; 12.06.2015
comment
Насколько я понимаю, вы получите recurringEventId для событий, которые имеют какие-либо отличия от исходного события (например, если время начала было изменено, вы получите recurringEventId и OriginalStartTime). А за неизменные вы получите recurrence. - person Xeron; 14.06.2015

Я решил вопрос. Вы не получите повторения, если не получите событие с чем-то вроде этого:

$event = $service->events->get('primary', "recurringEventId");

Когда у вас есть событие $, вы можете использовать:

$preevent->recurrence[0]

Спасибо Xeron за ответ.

person Nikilonga    schedule 12.06.2015