Domanda

Utilizzando le classi Calendario Zend Gdata, come posso aggiungere un'eccezione per un evento ricorrente?

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

Ho provato circa 20 varianti del codice di cui sopra, ma ottengo il seguente errore ogni volta:

  

Fatal error: eccezione Uncaught 'Zend_Gdata_App_HttpException' con il messaggio 'prevista codice di risposta 200, ha ottenuto 403 g:. OriginalEvent [2009-09-23 15:00:00] non corrisponde a un'istanza del evento ricorrente'

È stato utile?

Soluzione

Bene, dopo ore e ore di ricerca su internet, sono giunto alla conclusione che questo può essere possibile con l'API Zend, ma non potrò mai capirlo. Alla fine ho rinunciato e ricorso a modificare la ricorrenza e l'aggiunta di regole EXDATE ai dati iCalendar. Grazie ad un bug nell'interfaccia di Google Calendar, eccezioni create in questo modo non vengono mostrate a meno che non si aggiorna la pagina (il link di aggiornamento sopra il calendario non funziona), così ho sprecato ancora più tempo.

Se qualcuno trova un modo per ottenere questo lavoro senza ricorrere a EXDATE si prega di inviare e sarò sicuro di controllare periodicamente e segnare la risposta corretta.

UPDATE: Ok ho capito. Ho intenzione di dare la colpa questa parte di me di essere un idiota e in parte sul sistema di denominazione orribile di Google. Chiamata getId() su un EventEntry in realtà restituisce URL EDIT della manifestazione. Il costruttore OriginalEvent si aspetta solo la parte ID effettivo del URL quindi è necessario utilizzare substring per estrarlo. Che bello di loro di nominare la funzione di accesso getId() correttamente.

Altri suggerimenti

Non è necessario analizzare getId, basta usare calendarEventEntry.getIcalUID ().

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top