dijous, 30 d’octubre del 2008

Recuperant informació de Google Calendar

Fa dies vam explicar que al calendari crtBK21 tenim definides com a entrades de dia complert en un calendari Google públic el codi de volum per a tenir un joc complert de còpies de seguretat.

Amb el ZendFramework GData Calendar, podem recuperar aquesta informació d'una manera senzilla i clara.

El següent script PHP recupera el volum que toca el dia d'avui:
/**
* Recuperem el nom del joc de còpies de seguretat que necessitem segon
*
* Normativa de Corretgé.com per a un sistema de Backup Universal de 21 jocs que ens garanteixen
* un marge de recuperació de dades suficient. Aquesta informació es recuperable per sistemes de
* backup automatitzats.
*
* A la tasca única del dia es recupera el nom del volum que s'ha de gestionar.
*
* 6 jocs diari (Dn) Tots els dies de la setmana a excepció de divendres. Complertes o incrementals.
* 3 jocs setmanals (Sn) Cada divendres amb un salt quan es fan 3. Complertes.
* 3 jocs quadri setmanals (Mn) Cada quatre setmanes. Complertes.
* 5 jocs bimensuals (Bn) El dimarts després del dia 14 dels mesos parells a excepció del desembre. Complertes + Sys
* 4 jocs anuals (An) El dimarts després del dia 14 de desembre. Complertes + Sys
*/


/**
* Recuperem funcions necessaries del Zend Framework
*/
require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata');
Zend_Loader::loadClass('Zend_Gdata_Calendar');

/**
* per alguna raó, no funciona la recerca entre avui i avui, i s'ha
* de fer entre avui i demà.
*
* Com que aquest calendari només te entrades de tot el dia, no hem de patir
* doncs recuperarem només la primera.
*/
$dema = date('Y-m-d', mktime(0,0,0,date('m'), date('d')+1, date('Y')));
$avui = date('Y-m-d');


/**
* Instanciem un Google Calendar
*/
$gdata = new Zend_Gdata_Calendar();

/**
* Preparem la consulta a fer a Google Calendar sobre el calendari
* de còpies de seguretat públic crtBU21
*
* Indiquem que volem rebre els apunts entre avui i demà al tractarse d'events de tot un dia.
* Ordenem per títol pq només podran haver dos volums un mateix dia, A/D i B/D i d'aquesta
* manera mana l'anual (A) o la bimensual (B) per sobre de la diaria (D)
*/
$query = $gdata->newEventQuery();
$query->setUser('corretge.cat_pngb9sm4ui2f7vc9bk89kt20vs@group.calendar.google.com');
$query->setVisibility('public');
$query->setProjection('full');
$query->setOrderby('title');
$query->setStartMin($avui);
$query->setStartMax($dema);
$eventFeed = $gdata->getCalendarEventFeed($query);

/**
* imprimim el primer event
*/
$event = $eventFeed->current();
echo $event->title->text;

?>


Si l'hem de fer servir en els nostres scripts de backup, el podem recuperar de la següent manera:
#!/bin/bash
BCPDATA=`wget -q -O- http://pgmr6.corretge.cat/crtBK21`
echo Volum crtBK21 $BCPDATA