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.'

Foi útil?

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 ().

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top