tus camisetas frikis en camisetafriki.com
Home > Programacion, Tecnología > Google Calendar API + PHP (II), consultar eventos de otros calendarios

Google Calendar API + PHP (II), consultar eventos de otros calendarios

Bueno, sigo en mis trece de hacer que esto funcione, y quién sabe, hacer algo rentable de ello.

El caso es que como ya conseguí insetar los eventos en mi calendario recién creado, quería ver que los eventos que iba a meter no existían ya.

Para esto lo más cómodo es averiguar la cadena que identifica al calendario, pero ojo, porque no es ni el id del calendario ($calFeed[i]->id->text) ni la URL ($calFeed[i]->link[0]->href) sino una cadena que las contiene. Lo más rapido es quitar la URL base que no nos interesa para que nos quede el userID del calendario (que parece ser distinto para cada calendario).

$user = str_replace(Zend_Gdata_Calendar::CALENDAR_FEED_URI.'/default/', "", $calFeed[6]->id->text);

Después, hacemos una query a ESE calendario:

1
2
3
4
5
6
7
8
9
$gdataCal = new Zend_Gdata_Calendar($client);
	$query = $gdataCal->newEventQuery();
	$query->setUser($user);
	$query->setVisibility('private');
	$query->setProjection('full');
	$query->setOrderby('starttime');
	$query->setStartMin($fechaIni);
	$query->setStartMax($fechafin);
	$eventFeed = $gdataCal->getCalendarEventFeed($query);

Y luego ya, podemos reccorer sus eventos:

10
11
12
13
14
15
16
foreach ($eventFeed as $event)
	{
	 	echo "Comprobando ".$event->title->text."<br>";	    
		foreach ($event->when as $when) {
			echo $when->startTime."<br>";
		}
	}

Si no queremos hacer una búsqueda por parámetros sino sacarlos todos, es más fácil, primero sacamos el enlace al calendario:

1
$url = $calFeed[1]->link[0]->href;

Y después pedimos los eventos:

2
$events = $gdataCal->getCalendarEventFeed($url);

(Fuente: http://www.zfforums.com/zend-framework-components-13/web-web-services-22/gdata-how-get-other-calendar-than-default-one-245.html)

De verdad que no se por qué la API esta está tan mal documentada…

Post relacionados

  1. No comments yet.
  1. No trackbacks yet.