Zend_Gdata_Calendar クラスを使用して、オンラインの Google Calendar サービスでイベントの閲覧、作成、更新、 そして削除が行えます。
Google Calendar API についての詳細な情報は http://code.google.com/apis/calendar/overview.html を参照ください。
閲覧したいカレンダーの所有者を setUser()
メソッドで指定します。指定する値は文字列で、一般的には
Google Calendar のユーザアカウントとなります。
グループのカレンダーを指定することもできます。
<?php $gdataCal = new Zend_Gdata_Calendar(); // Google の開発者のの公開カレンダーを取得します $gdataCal->setUser('developer-calendar@google.com'); $feed = $gdataCal->getCalendarFeed(); ?>
このオブジェクトの使用法についての詳細は、 Zend_Feed のドキュメントを参照ください。
ユーザを指定しなかった場合のデフォルトは "default" となります。認証済みの Http クライアントを使用している場合は、 その Google アカウントに関連付けられたカレンダーがデフォルトになります。
<?php $gdataCal = new Zend_Gdata_Calendar($authenticatedHttpClient); // 現在のユーザのカレンダーを取得します $myCalendarFeed = $gdataCal->getCalendarFeed(); ?>
setVisibility()
メソッドによって、
フィードから返されたエントリを一般に公開するか
プライベートエントリにするかを設定できます。
プライベートエントリは、認証済みの
Http クライアントでアクセスした場合にのみアクセス可能となります。
デフォルトは "public" です。
<?php $gdataCal = new Zend_Gdata_Calendar($authenticatedHttpClient); // 自分のイベントを、他の人も閲覧できるようにします $gdataCal->setVisiblity('public'); $feed = $gdataCal->getCalendarFeed(); ?>
setProjection()
メソッドを使用して、
フィードにどれだけの情報を返すかを指定します。
たとえば "full" を指定すると、
カレンダーのイベントの全プロパティが含まれますが、
エントリに対するコメントは含まれません。
"composite" は "full" と似ていますが、
フィードエントリの中にコメントのフィードが含まれます。
その他指定可能な値についての情報は
Google Calendar API のドキュメントを参照ください。
デフォルト値は "full" です。
<?php $gdataCal = new Zend_Gdata_Calendar(); // johndoe のカレンダから最小限の情報を取得します $gdataCal->setUser('johndoe@gmail.com'); $gdataCal->setProjection('free-busy'); $feed = $gdataCal->getCalendarFeed(); ?>
setStartMin()
メソッドおよび setStartMax()
メソッドで、カレンダーのイベントの日付の範囲を指定します。
startMin
を指定すると、
それより前の日付のイベントはフィードに含まれません。
同様に、startMax
で指定した日付より後の日付のイベントもフィードに含まれません。
<?php $gdataCal = new Zend_Gdata_Calendar($authenticatedHttpClient); // 12/1 より後のイベントのみを取得します $gdataCal->setStartMin('2006-12-01'); $feed = $gdataCal->getCalendarFeed(); ?>
新しいイベントを自分のカレンダーに投稿するには
post()
メソッドを使用します。
Google Calendar API のドキュメントのガイドラインにもとづいた
XML 定義でイベントエントリを作成し、その XML を投稿します。
この操作を行うには、認証済みの Http クライアントを使用する必要があります。
<?php $gdataCal = new Zend_Gdata_Calendar($authenticatedHttpClient); $xmlString = <<<XML <entry xmlns='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005'> <category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category> <title type='text'>Tennis with Beth</title> <content type='text'>Meet for a quick lesson.</content> <author> <name>Jo March</name> <email>jo@gmail.com</email> </author> <gd:transparency value='http://schemas.google.com/g/2005#event.opaque'> </gd:transparency> <gd:eventStatus value='http://schemas.google.com/g/2005#event.confirmed'> </gd:eventStatus> <gd:where valueString='Rolling Lawn Courts'></gd:where> <gd:when startTime='2006-04-17T15:00:00.000Z' endTime='2006-04-17T17:00:00.000Z'></gd:when> </entry> XML; $xml = new SimpleXMLElement($xmlString); $gdataCal->post($xml->asXML()); ?>