2012-02-23 21 views
5

Ho cercato di rispondere a questa domanda, ma non ho avuto fortuna, forse perché la stringa di ricerca "Z" non è sufficientemente specifica.Evento ricorrente di Google Calendar Gdata vecchio evento ricorrente ancora visualizzato con un EventID che termina con Z

Background:
Utilizzando Google Calendar biblioteca GData Zend, e sono state utilizzando il codice semplice per elencare gli eventi per un periodo di tempo specifico. In questo caso, dal 27-02-2012 al 03-03-2012. Ho elencato un numero di singoli eventi, con un evento ricorrente, intitolato "Rob", settimanale settimanale.
Sto usando il codice base senza aggiunte fantasiose. ancora :)

Problema:
quando ho usato il parametro $query->setSingleEvents(TRUE), tutto ha funzionato come previsto, e ha mostrato gli eventi corretti.

Quando parlo di "mostrare" eventi, sto parlando della pagina PHP che sta usando Zend gdata per mostrare gli eventi del calendario.
In tutte le situazioni, il calendario GUI Google sta mostrando i dati corretti (es. L'evento 'Rob' non viene mostrato, come è stato eliminato.

Ma quando ho creato questo per FALSE, l'evento ricorrente "Rob ", dovrebbero avere orari di inizio che devono essere raggruppati, ma invece vengono mostrati alcuni eventi casuali in più senza uno starttime, lo stesso titolo. Anche una volta che è stato eliminato l'evento ricorrente, viene comunque visualizzato nei dati restituiti da gdata.

osservazione interessante
l'ID evento per l'evento che è stato eliminato, ma è ancora mostrato nella pagina finisce con "Z". Ha le solite eventID seguiti da: _20120302T030000Z

La mia domanda
Questo evento è stato eliminato in Google Calendar GUI. Perché gdata mostra ancora un evento che viene cancellato, e cosa significa l'eventid che termina con un timestamp e una Z.

Tentativi Risoluzione:
1. Ho cercato di cambiarlo da ricorrenti evento per un evento normale (rimuovendo il recurrance 'per tutti gli eventi in serie'
senza fortuna, ancora quelli aggiuntivi elencati
2. cancellati. l'evento ricorrente completamente per tutti gli eventi in serie.
Questo ha dimostrato ancora una volta i risultati corretti in SingleEvents(TRUE), ma in FALSE, il vecchio evento 'Rob' è ancora mostrata, quando è stato completamente cancellato dal calendario.

Codice:

function outputCalendarByDateRange($client, $startDate='2012-02-27', 
            $endDate='2012-03-03') 
{ 
    $gdataCal = new Zend_Gdata_Calendar($client); 
    $query = $gdataCal->newEventQuery(); 
    $query->setUser('default'); 
    $query->setVisibility('private'); 
    $query->setProjection('full'); 
    $query->setOrderby('starttime'); 
    $query->setStartMin($startDate); 
    $query->setStartMax($endDate); 
    $query->setSingleEvents(FALSE); 
    $eventFeed = $gdataCal->getCalendarEventFeed($query); 

    foreach ($eventFeed as $event) { 
    echo "Title: " . $event->title->text . "<br />"; 
    echo "Event ID: " . $event->id->text . "<br />"; 
    foreach ($event->when as $when) { 
     echo "Start: " . $when->startTime . "<br />"; 
    } 
    echo "<br />"; 
    } 
} 
+0

Hai provato a verificare lo stato dell'evento, come qui ?: http://stackoverflow.com/questions/25849 78/google-calendar-feed-api-deleted-events – Ashley

+0

Sembra quasi che qualcosa venga memorizzato nella cache ... –

risposta

2

Ecco cosa ho trovato nella docs:

36.5.6.eliminazione di eventi gli eventi del calendario possono essere cancellati o chiamando il metodo delete() del servizio di calendario e di fornire l'URL di modifica di un evento o chiamando proprio metodo di un evento esistente delete().

In entrambi i casi, l'evento cancellato continuerà a essere visualizzata su evento privato di un utente alimentare se viene fornito un parametro di query updateMin. eventi eliminati possono essere distinti da eventi regolari perché avranno la loro proprietà eventStatus impostata a "http://schemas.google.com/g/2005#event.canceled".

sembra che dovrai testare lo stato di un evento quando analizzi il feed.

BTW il timestamp rompe a

Anno: 2012 al giorno: 03 mese: 02 Tempo: ore T: minuti: secondi 03:00:00 zulu: Z

Zulu è lo stesso di GMT (Greenwich Mean Time) o UTC (Universal Time Code)

+0

Solo per dire, non sono mai tornato a questo per ringraziarvi tutti per le vostre risposte. È stato tanto tempo fa che non ricordo nemmeno come ho risolto il problema. Inoltre, il motivo per cui non ero a conoscenza delle risposte era perché non avevo spuntato la casella di controllo, inviando un'e-mail con le risposte al mio account di posta elettronica. Ad ogni modo, non mi piace chiedere aiuto, quindi non seguirlo, quindi scuse! – redfox05