Adicionar exceção a eventos recorrentes usando o google calendar api em PHP
-
13-09-2019 - |
Pergunta
Usando as classes Calendário Zend GData, como posso adicionar uma exceção para um evento recorrente?
$orig = $evtFeed[0]; //the original recurrence
$ex = $gc->newEventEntry(); //gc is a Zend_Gdata_Calendar object
$ex->originalEvent = $gc->newOriginalEvent($orig->getId(), $orig->getLink('self')->href, $gc->newWhen('2009-09-23T15:00:00.000Z'));
$ex->eventStatus = $gc->newEventStatus("http://schemas.google.com/g/2005#event.canceled");
$gc->insertEvent($ex);
Eu tentei cerca de 20 variações do código acima, mas eu recebo o seguinte erro de cada vez:
Erro fatal: exceção Uncaught 'Zend_Gdata_App_HttpException' com a mensagem 'código de resposta esperado 200, tem 403 g: originalEvent [2009-09-23 15:00:00] não corresponde a uma instância do evento recorrente.'
Solução
Bem, depois de horas e horas de pesquisa na internet, eu vim à conclusão de que isso pode ser possível com a API do Zend, mas eu nunca vou descobrir isso. Eu finalmente desistiu e recorreu a edição da recorrência e adicionar regras EXDATE aos dados iCalendar. Graças a um bug na interface do Google Agenda, excepções criado dessa forma não aparecem a menos que você atualizar a página (o link de atualização acima do calendário não trabalho) para que eu desperdiçado ainda mais tempo.
Se alguém encontra uma maneira de obter este trabalho sem recorrer às EXDATE por favor poste e eu vou certifique-se de verificar periodicamente e marcar a resposta correta.
UPDATE: Ok eu descobri-lo. Eu vou culpar este parcialmente em mim ser um idiota e parcialmente no sistema de nomeação horrível do Google. Chamando getId()
em um EventEntry
realmente retorna URL EDIT do evento. O construtor OriginalEvent
espera apenas a parte ID real do URL que você deve usar substring para extraí-lo. Como legal da parte deles para nomear o acessor getId()
corretamente.
Outras dicas
Você não precisa analisar getId, basta usar calendarEventEntry.getIcalUID ().