2009-09-22 6 views
0

En utilisant les classes Zend Gdata Calendar, comment puis-je ajouter une exception à un événement récurrent?Ajouter une exception à l'événement récurrent en utilisant google calendar api dans PHP

$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); 

J'ai essayé 20 variations du code ci-dessus, mais je reçois l'erreur suivante à chaque fois:

Fatal error: Uncaught exception 'Zend_Gdata_App_HttpException' with message 'Expected response code 200, got 403 g:originalEvent [2009-09-23 15:00:00] does NOT correspond to an instance of the recurring event.'

Répondre

1

Eh bien, après des heures et des heures de recherche sur Internet, je suis venu à la conclusion que cela peut être possible avec le zend api, mais je ne le comprendrai jamais. J'ai finalement abandonné et j'ai décidé d'éditer la récurrence et d'ajouter des règles EXDATE aux données iCalendar. Grâce à un bogue dans l'interface google calendar, les exceptions créées de cette manière ne s'affichent que si vous actualisez la page (le lien d'actualisation au-dessus du calendrier ne fonctionne pas), donc j'ai perdu encore plus de temps.

Si quelqu'un trouve un moyen de le faire fonctionner sans avoir recours à EXDATE, veuillez le poster et je reviendrai vérifier périodiquement et marquer la bonne réponse.

MISE À JOUR: Ok, je l'ai compris. Je vais blâmer celui-ci en partie sur moi d'être un idiot et en partie sur l'horrible système de dénomination de Google. L'appel au getId() sur un EventEntry renvoie en réalité l'URL EDIT de l'événement. Le constructeur OriginalEvent attend uniquement la partie ID réelle de l'URL, vous devez donc utiliser la sous-chaîne pour l'extraire. Comment gentil d'entre eux de nommer l'accesseur getId() correctement.

0

Vous n'avez pas besoin d'analyser getId, utilisez simplement calendarEventEntry.getIcalUID().

+0

J'ai essayé ceci et cela n'a pas fonctionné. Parser getId() fonctionne bien, cependant. – atraudes

Questions connexes