Pergunta

Estou tentando mostrar uma lista dos próximos 20 dias de eventos de uma conta do Google Calendar. Eventos irritantemente recorrentes não estão sendo mostrados (suponho porque os tempos de início deles são antigos) ... então. Alguma ideia?

require_once dirname(__FILE__).'/../../../Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata');
Zend_Loader::loadClass('Zend_Gdata_HttpClient');
Zend_Loader::loadClass('Zend_Gdata_Calendar');

$service = new Zend_Gdata_Calendar();

$query = $service->newEventQuery();
$query->setUser('REMOVED');
$query->setVisibility('public');
$query->setProjection('full');
$query->setOrderby('starttime');
$query->setSortOrder('ascending');
$query->setFutureevents('true');
$query->setMaxResults(20); 

try { $eventFeed = $service->getCalendarEventFeed($query); }
catch (Zend_Gdata_App_Exception $e) { return; }

Estou disposto a aceitar quaisquer métodos alternativos que obtenham todos os meus eventos públicos em ordem crescente. Eu tentei RSS, mas as datas parecem ser o momento em que foram adicionadas ao calendário.

Foi útil?

Solução

A projeção é algo com que eu joguei antes. Não ajuda (a menos que eu queira analisar e explodir eventos recorrentes manualmente). Mas aquele link estava dourado.

$query->setParam('singleevents','true');

De seus documentos:

Singlevents

Indica se os eventos recorrentes devem ser expandidos ou representados como um único evento.

Os valores válidos são verdadeiros (expandir eventos recorrentes) ou falsos (deixe eventos recorrentes representados como eventos únicos). O padrão é falso.

Na minha opinião, false é um padrão estúpido, mas hey-ho. Parece funcionar agora!

Outras dicas

Mudando isto:

$query->setProjection('full');

Para isso:

$query->setProjection('composite');

Fornecerá todos os tipos de dados extras, incluindo eventos recorrentes. Isso é de acordo com a referência da API do Google Calendar: http://code.google.com/apis/calendar/docs/2.0/reference.html

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